2
13693261870
2022-09-16 653761a31dfeb50dd3d007e892d69c90bf0cdafc
2
已添加1,783个文件
259612 ■■■■■ 文件已修改
lanCatalog.iml 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 533 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/LanbaseApplication.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/Constant.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/annotation/LogAction.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/annotation/LogLogininfo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/annotation/SysLog.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/aspect/LogActionAspect.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/aspect/RedisAspect.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/aspect/SysLogAspect.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/cache/BaseCacheFactory.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/cache/CacheKit.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/cache/EhcacheFactory.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/cache/ICache.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/cache/ILoader.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/datasource/DataSourceNames.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/datasource/DynamicDataSource.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/datasource/annotation/DataSource.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/datasource/aspect/DataSourceAspect.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/exception/LanbaseException.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/exception/LanbaseExceptionHandler.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/map/EsbToken.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/map/TerraToken.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/scheduletask/ScheduelTask.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/CasAuthenticationFilter.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/ShiroAuthenticatingFilter.java 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/ShiroCasRealm.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/ShiroRealm.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/ShiroToken.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/shiro/TokenGenerator.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/AttachmentUtils.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/CoderUtils.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/CommonUtils.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/DateUtils.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/EsriTokenUtils.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/FieldUtils.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/FileUtils.java 301 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/GeneratorUtils.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/HttpClientUtils.java 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/HttpContextUtils.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/HttpOperateUtils.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/HttpUtils.java 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/IPUtils.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/ImageUtils.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/JpinyinUtils.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/JsoupUtils.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/NameBindId.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/PageUtils.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/PinyinUtils.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/Query.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/RandomUtils.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/RedisUtils.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/Result.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/ShiroUtils.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/SpringContextUtils.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/TimeIntervalUtil.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/TransformUtils.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/WADOMUtil.java 326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/WAIXPathConstant.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/WAWsdlUtil.java 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/WEBServiceUtils.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/ppt/GraphData.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/utils/ppt/PPTUtils.java 1073 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/validator/ValidatorUtils.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/validator/group/AddGroup.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/validator/group/Group.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/validator/group/UpdateGroup.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/xss/HTMLFilter.java 699 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/xss/SQLFilter.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/xss/XssFilter.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/common/xss/XssHttpServletRequestWrapper.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/CORSConfiguration.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/CasConfig.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/CasConfigProperties.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/Corsconfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/DynamicDataSourceConfig.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/KaptchaConfig.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/LoginConfigProperties.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/RedisConfig.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/ShiroConfig.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/Swagger2Config.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/SysTemPropertyConfig.java 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/config/WebConfig.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/annotation/Login.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ActionRecordController.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ApplyRecommendApiController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/CatalogController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/DocController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/JitmonitorApiController.java 375 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ManagerController.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/GuanLianFenXiController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/LayerDiyInfo - 副本.java.bak 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/LayerDiyInfo.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapCommonController.java 938 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTempPrintController.java 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTempPrintController.java.bak1 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTemplateController.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapViewController.java 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/ThemeMappingController.java 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/TokenController.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/ZhouBianChaXunController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/logActionController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ResApiController.java 730 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ResDiyLayerInfoApiController.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ResExtBaseMapApiController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ResExtThemeMapApiController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ResMapApiController.java 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/RoleResController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/controller/ThymeleafDemoController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/intercept/ApiInterceptor.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/CoderUtils.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/DBConnection.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/DOMUtil.java 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/DeleteFileUtils.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/Excel.java 458 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/GetUserInfo.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/GetWebProUrl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/JDBCUtils.java 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/JwtUtils.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/PageBean.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/UpDate.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/api/utils/fileSizeTest.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/entity/LogAction.java 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/entity/LogLogininfo.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/service/LogActionService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/service/LogLogininfoService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/service/impl/LogActionServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/log/service/impl/LogLogininfoServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnit.java 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnitJoinRegion.java 374 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnitRegion.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUser.java 357 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserGroup.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserJoinUnit.java 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserunit.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/entity/SysSysteminfo.java 438 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/redis/OrgUnitRedis.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/redis/OrgUserDefUnitRedis.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/redis/OrgUserRedis.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/redis/SysSystemInfoRedis.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/service/OrgUnitService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/service/OrgUserService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/service/impl/OrgUnitServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/org/service/impl/OrgUserServiceImpl.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/portlet/controller/IsLandTypeController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/portlet/controller/ShuJuZhanShiController.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/CommonController.java 1696 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/DiTuFuWuController.java 929 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/JiChuDiTuController.java 373 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/JitmonitorController.java 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/KeShiHuaFuWuController.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/NewResRegisterController.java 1226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/OneMapController.java 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/PingTaiMenHuController.java 668 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResActionRecordController.java 669 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResApplyRecommendController.java 1052 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResAuditController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResBusinessRefController.java 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResCatalogController.java 987 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResEchartsCofingController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResEvaluationController.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExt3DController.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtAppController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtBaseMapController.java 628 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtBusinessLayerController.java 720 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtDataBaseController.java 1647 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtDataSourceController.java 486 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtFileSourceController.java 983 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtIntegrateController.java 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtInterFaceServiceController.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtMapUrlController.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtSpaceServerController.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResExtThemeMapController.java 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResFilesController.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResMainInfoController.java 3423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResMainInfoController_bak20190109.java 3217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResOnemapCatalogController.java 919 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResProblemFeedbackController.java 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResQueryAroundController.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResRegisterController.java 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResSubscriptionsController.java 964 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResTemplateController.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeController.java 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeModuleController.java 610 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeRelationController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/SysteminfoController.java 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/TestController.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/UploadTemplateController.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/WebServiceController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ZhuanTiZhiTuController.java 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanFaBuController.java 298 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanMuLuController.java 630 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanZhongXinController.java 569 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/DiTuFuWuMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/JiChuDiTuMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/JitMonitorMapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/KeShiHuaFuWuMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/PingTaiMenHuMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/ResStorageRelaTionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ActionRecordMapper.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ApplyRecommendMapper.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_AuditMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_BookMarksMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_BusinessRefMapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_BusinessThemeMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_CatalogMapper.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_DiyLayerInfoMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_EchartsCofingMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_EvaluationMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_Ext3DMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtAppMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtBaseMapMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtBusinessLayerMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtDataBaseMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtDataSourceMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtFileSourceMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtIntegrateMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtInterFaceServiceMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtMapUrlMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtMiddleWareMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtSpaceServerMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtThemeMapMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_FileSource_WayMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_FilesMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_MainInfoMapper.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_OneMap_CatalogMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_OneMap_CatalogResourceMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ProblemFeedbackMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_QueryAroundMapper.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_SpacesParamMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_StorageConfigMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_SubscriptionsMapper.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_SymbolLibraryMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_TempPrintMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_TemplateDao.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ThemeMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_ThemeTypeMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_Theme_ModuleMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_Theme_RelationMapper.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/Res_User_LayerExtentMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/RoleResCatalogMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/ZhuanTiZhiTuMapper.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/ZiYuanFaBuMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/dao/ZiYuanMuLuMapper.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/DataBaseLeftDataSource/DataBaseLeftDataSource.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/GraphicStyle.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/BiaoJieGou.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/DateType.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/FieldMapping.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/NcConfig.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/NcMessage.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/ServiceConfig.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/SqlMapJson.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/ZiDuanPeiZi.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ActionRecord.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ApplyRecommend.java 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Audit.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_BookMarks.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_BusinessRef.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_BusinessTheme.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Catalog.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_DiyLayerInfo.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_EchartsConfing.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Evaluation.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Ext3D.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtApp.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtBaseMap.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtBusinessLayer.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtDataBase.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtDataSource.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtFileSource.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtIntegrate.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtInterFaceService.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtMapUrl.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtMiddleWare.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtSpaceServer.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtSpaceServerWithBLOBs.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtThemeMap.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_FileSource_Way.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Files.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_MainInfo.java 447 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_OneMap_Catalog.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_OneMap_CatalogResource.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ProblemFeedback.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_QueryAround.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_SpacesParam.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_SpacesParamWithBLOBs.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_StorageConfig.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Storage_Relation.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Subscriptions.java 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_SymbolLibrary.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_TempPrint.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Template.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ThemeRelation.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_ThemeType.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme_Module.java 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme_Relation.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Res_User_LayerExtent.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/Role_ResCatalog.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/SelectShuJuKu.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/SimpleZiYuan.java 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/TreeDataByResourceType.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/CatlogJoinActionrecord.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/DingYue.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinActionRecord.java 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinApplyRecommend.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinApplyRecommendInfo.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinAudit.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinCatalog.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinEvaluation.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinJcdt.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinRegister.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinSubscriptions.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ResThemeModuleRequest.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_BaseMap.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_SpaceServer.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_ZYML_ChaXunQu.java 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_DanWeiTongJi.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_GongXiangXieYi.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ShiJianTongJi.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_XingZhengQuHua.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_ShenHeZhuangTai.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_XingZhengQuHua.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_ZiYuanLeiXing.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZiYuanLeiXing.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/FileSourceList.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Jcdt.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_MapUrl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Ywtc.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Ztdt.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/TuChengView.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/WebService/ParameterInfo.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/WebService/SchemaDefaultType.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByDanWei.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByDataSources.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByGongXiangXieYi.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByMuLu.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByPubDate.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByXingZhengQuHua.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByZiYuanLeiXing.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/redis/ResCatalogRedis.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/DiTuFuWuService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/JiChuDiTuService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/JitMonitorService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/KeShiHuaFuWuService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/PingTaiMenHuService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResActionRecordService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResApplyRecommendService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResAuditService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResBookMarksService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResBusinessRefService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResCatalogService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResDiyLayerInfoService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResEchartsCofingService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResEvaluationService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExt3DService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtAppService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtBaseMapService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtBusinessLayerService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtDataBaseService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtDataSourceService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtFileSourceService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtIntegrateService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtInterFaceService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtMapUrlService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtMiddleWareService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtSpaceServerService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResExtThemeMapService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResFileSourceWayService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResFilesService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResMainInfoService.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResOnemapCatalogResourceService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResOnemapCatalogService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResProblemFeedbackService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResQueryAroundService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResSpacesParamService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResStorageConfigService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResStorageRelaTionService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResSubscriptionsService.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResSymbolLibraryService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResTempPrintService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResTemplateService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResThemeModuleService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResThemeRelationService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResThemeService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResThemeTypeService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ResUserLayerExtentService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/RoleResCatalogService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ZhuanTiZhiTuService.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ZiYuanFaBuService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/ZiYuanMuLuService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/DiTuFuWuServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/JiChuDiTuServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/JitMonitorServiceImpl.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/KeShiHuaFuWuServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/PingTaiMenHuServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResActionRecordServiceImpl.java 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResApplyRecommendServiceImpl.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResAuditServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResBookMarksServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResBusinessRefServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResCatalogServiceImpl.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResDiyLayerInfoServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResEchartsCofingServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResEvaluationServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExt3DServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtAppServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtBaseMapServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtBusinessLayerServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtDataBaseServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtDataSourceServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtFileSourceServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtIntegrateServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtInterFaceServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtMapUrlServiceImpl.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtMiddleWareServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtSpaceServerServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtThemeMapServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResFileSourceWayServiceImpl.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResFilesServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResMainInfoServiceImpl.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResOnemapCatalogResourceServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResOnemapCatalogServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResProblemFeedbackServiceImpl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResQueryAroundServiceImpl.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSpacesParamServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResStorageConfigServiceImpl.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResStorageRelaTionServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSubscriptionsServiceImpl.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSymbolLibraryServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResTempPrintServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResTemplateServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeModuleServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeRelationServiceImpl.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeTypeServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ResUserLayerExtentServiceImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/RoleResCatalogServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ZhuanTiZhiTuServiceImpl.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ZiYuanFaBuServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/res/service/impl/ZiYuanMuLuServiceImpl.java 556 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/controller/AbstractController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/controller/SysLoginController.java 458 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/controller/SysMenuController.java 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/controller/SysUserController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/dao/BaseDao.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/dao/SysUserTokenDao.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/PubNews.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysColumn.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysField.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysFieldvalue.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysMenu.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysResource.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysRole.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysRoleResource.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysSysteminfo.java 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysTable.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysUser.java 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserApplist.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserRole.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserToken.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/redis/OnlineUserRedis.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/redis/SysFieldvalueRedis.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/redis/SysUserTokenRedis.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/service/SysFieldvalueService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/service/SysUserTokenService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/service/impl/SysFieldvalueServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/sys/service/impl/SysUserTokenServiceImpl.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/terra/GisService.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/modules/terra/GisServiceListener.java 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/landtool/lanbase/test/NcService.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-dev.yml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application-pro.yml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/banner.txt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/cas.keystore 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/generator.properties 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/logback-spring.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/DiTuFuWuMapper.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/JiChuDiTuMapper.xml 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/JitMonitorMapper.xml 240 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/KeShiHuaFuWuMapper.xml 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/PingTaiMenHuMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ActionRecordMapper.xml 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ApplyRecommendMapper.xml 552 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_AuditMapper.xml 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_BookMarksMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_BusinessRefMapper.xml 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_BusinessThemeMapper.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_CatalogMapper.xml 388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_DiyLayerInfoMapper.xml 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_EchartsConfingMapper.xml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_EvaluationMapper.xml 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_Ext3DMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtAppMapper.xml 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtBaseMapMapper.xml 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtBusinessLayerMapper.xml 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtDataBaseMapper.xml 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtDataSourceMapper.xml 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtFileSourceMapper.xml 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtIntegrateMapper.xml 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtInterFaceServiceMapper.xml 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtMapUrlMapper.xml 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtMiddleWareMapper.xml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtSpaceServerMapper.xml 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ExtThemeMapMapper.xml 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_FileSource_WayMapper.xml 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_FilesMapper.xml 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_MainInfoMapper.xml 992 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_OneMap_CatalogMapper.xml 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_OneMap_CatalogResourceMapper.xml 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ProblemFeedbackMapper.xml 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_QueryAroundMapper.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_SpacesParamMapper.xml 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_StorageConfigMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_Storage_RelationMapper.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_SubscriptionsMapper.xml 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_SymbolLibraryMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_TempPrintMapper.xml 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_TemplateMapper.xml 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ThemeMapper.xml 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_ThemeTypeMapper.xml 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_Theme_ModuleMapper.xml 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_Theme_RelationMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/Res_User_LayerExtentMapper.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/RoleResCatalogMapper.xml 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/ZhuanTiZhiTuMapper.xml 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/ZiYuanFaBuMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/res/ZiYuanMuLuMapper.xml 618 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/ZiYuanIcon/right.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/config/ResourceFlowConfig.json 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/AdminLTE.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/Query.css 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/TuXinCongif.css 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/TuXingConfig.css 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/ZiYuanZhongXin/Index.css 542 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/ZiYuanZhongXin/Indexnew.css 628 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/all-skins.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/bootstrap-extract.css 699 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/bootstrap-table.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/bootstrap.css 6584 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/bootstrap.min.css 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/components.css 14515 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/ditufuwu/index.css 554 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/ditufuwu/indexnew.css 511 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/firstebox.css 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/font-awesome.min.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/grid-selfAdaptH.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/jquery-ui.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/main.css 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/mtree.css 251 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/plugins.css 2570 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/tagsinput.css 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/css/zTreeCover.css 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/FontAwesome.otf 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/fontawesome-webfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/fontawesome-webfont.svg 2671 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/fontawesome-webfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/fontawesome-webfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/fontawesome-webfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/glyphicons-halflings-regular.eot 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/glyphicons-halflings-regular.svg 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/glyphicons-halflings-regular.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/glyphicons-halflings-regular.woff 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/AnXianChangDuTuLi.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_KJFX/KJ_KJFX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_KJFX/KJ_KJFX2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_SWMX/KJ_SWMX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_SWMX/KJ_SWMX2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC6.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC7.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC8.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ6.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_KJFX/KJ_KJFX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_KJFX/KJ_KJFX2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_SWDX/KJ_SWDX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_SWMX/KJ_SWMX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_SWYX/KJ_SWYX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC6.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC7.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ6.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC3.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC4.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC5.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Draw.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/HYTongJi/right.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/HYTongJi/wrong.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/addPic.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/fubiaobig.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/fubiaosmall.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/new.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/shipinbig.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/MenHuIndex/shipinsmall.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/FaBuShenHe.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/JiChuDiTu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/KeShiHua.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/ShenQingPiFu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/WoDeDingYue.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/WoDeFaBu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/WoDeShenQing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/WoDeShouCang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/ZhuanTiZhiTu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/ZiYuanFaBu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/ZiYuanMuLu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/fb_GuZhang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/fb_ZhengChang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/more.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/sp_GuZhang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/sp_ZhengChang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/sys.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/user.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/NewMenHu/user_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Plus.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/PubNews/资讯动态.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/PubNews/通知公告.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/QuYuBianHuaTuLi.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/First_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/IEicon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/haidao.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/haiyu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/huangjing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/huanjinganquan.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/jingji.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/search.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/yubaojianzai.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/zhifa.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/Systeminfo/zonghe.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TEXT1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/10haididianlanguandao.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/10haididianlanguandao_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/11ditudingweifenxi.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/11ditudingweifenxi_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/12haiyushiyonglunzheng.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/12haiyushiyonglunzheng_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/13shujujiaodui.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/13shujujiaodui_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/1gerenmenhu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/1zhzs.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/1zhzs_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/2shouye.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/2shouye_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/2zonghezhanshi.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/3ziyuanmulu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/4daohangxitong.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/4quyuyonghaiguihua.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/4quyuyonghaiguihua_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/5weitianhaoguihua.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/5weitianhaoguihua_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/5xitongshezhi.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/6haiyuquanshuguanli.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/6haiyuquanshuguanli_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/6yingxiangguanli.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/7haiyushiyongjinguanli.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/7haiyushiyongjinguanli_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/8haiyushiyongzhifa.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/8haiyushiyongzhifa_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/banner_bg_04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/banner_right.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/commontitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ditufuwutitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/jichuditutitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/mapicon_01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/mapicon_02.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/mapicon_03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/mapicon_04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/mapicon_06.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabutitle-old.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabutitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulutitle-old.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulutitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxin.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxintitle-old.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxintitle.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/admin.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_01_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_02.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_02_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_03_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_04_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_05.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/btn_05_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/top_bg.bak.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/top_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/top_tit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/NewMenu/user_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ResourceSearch.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/back.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/back_btn.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/back_btn_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/btn_bg.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/bz.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ditufuwu_Logo.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ditusearch.bmp 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/exit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/feature_data.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/feature_data_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/guangdong_tit_01.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/guangdongxianji_tit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_main.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_main_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_qsdj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_qsdj_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_sjll.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_sjll_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_sqsp.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hyqs_sqsp_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hysyj_main.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hysyj_main_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hysytj_main.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/hysytj_main_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/icon1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/jigouzhuangkuang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/logo_tit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapSearch.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/map_dixing.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/map_shiliang.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/map_yaogan.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_01_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_02.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_02_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_03_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_04_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_05.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_05_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_06.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/mapicon_06_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/oceanplan.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/oceanplan_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/peihaoluru.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/search_02bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/search_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/search_btn.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/shoucang_btn.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/shujuzhengli.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/shujuzhengli_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/sjff.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/10haididianlanguandao_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/10haididianlanguandao_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/11ditudingweifenxi_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/11ditudingweifenxi_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/12haiyushiyonglunzheng_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/12haiyushiyonglunzheng_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/13shujujiaodui_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/13shujujiaodui_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/1zhzs_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/1zhzs_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/2shouye_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/2shouye_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/4quyuyonghaiguihua_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/4quyuyonghaiguihua_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/5weitianhaoguihua_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/5weitianhaoguihua_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/6haiyuquanshuguanli_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/6haiyuquanshuguanli_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/7haiyushiyongjinguanli_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/7haiyushiyongjinguanli_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/8haiyushiyongzhifa_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/8haiyushiyongzhifa_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/back_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/btn_bg_small.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/feature_data_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/feature_data_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_main_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_main_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_qsdj_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_qsdj_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_sjll_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_sjll_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_sqsp_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hyqs_sqsp_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hysyj_main_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hysyj_main_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hysytj_main_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/hysytj_main_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/logo_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/oceanplan_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/oceanplan_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/shujuzhengli_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/shujuzhengli_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/tongyipeihao_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/tongyipeihao_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/watch_survey_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/watch_survey_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/zhzs_active_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/small/zhzs_small.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/tongyipeihao.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/tongyipeihao_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/top_bg_repeat.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/top_exit_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/top_time_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/top_user_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/watch_survey.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/watch_survey_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/xtdh.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/yidongdanbing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/yonghaishenqing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/zhzs.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/zhzs1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/zhzs_active.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_01_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_02.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_02_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanicon_03_on.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuansearch.bmp 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/ziyuanzhongxin_logo.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/zonghezhanshi.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/TopMenu/zyml.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/南海电子沙盘.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/地图服务平台.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/数字海洋应用.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海域动态监管.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海岛监视监测.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海洋政务信息.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海洋数据共享.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海洋空间规划.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海洋经济监测.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/YeWuXiTong/海洋预报减灾.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/navicon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/navicon_new.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/search.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/search_new.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/star.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/star_new.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/user.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZhuanTiZhiTu/user_new.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/btn1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/btn2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/diaoyon.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/diaoyoncishu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/ersanwei-erwei.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/ersanwei-sanwei.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/erweichakan.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/liulan_icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/liulancishu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/safety.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/safetyoff.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/sanweichakan.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/shenqingcishu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/shoucang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/shoucang_icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/shujukubiao.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/star.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/staroff.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/yisc.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/yish.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/ywtc.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/ziyuanpingjia.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuan/ziyuanshoucang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/1px.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/jichuditu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/jiekoufuwu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/list.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/num1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/num2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/num3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/search.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/search2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/shoucangicon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/shujuwenjian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/weipifu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/weitongguo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/wodeshenqing_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/yewutuceng.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/yitongguo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/New/zytj_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/dingxiangtuisong_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/f_post_pic1.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/fangwenpaihang_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/new.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/paihang_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/shenqing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/shenqing_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/shiyongqingkuang_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/shoucang_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/shoucangicon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/tongji_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/top6.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/weipifu.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/weitongguo.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/wodeshenqing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/wodeshenqing_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/wodeshoucang_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/wodezuji_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/yewujicheng_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/yitongguo.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/ywjc.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/ywtc.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/ziyuan.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/ziyuantuijian_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ZiYuanZhongXin/zuixin_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/arrow.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/audio.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/avatar.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/chart-icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/chart.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/JKFW.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/KJ_JCDT.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/KJ_KJFX.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/KJ_SWMX.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/KJ_YWTC.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/KJ_ZTDT.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/SJKB.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/SJWJ.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/YWJC.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/defaulticon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/folder.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classicons/folderOpen.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/JKFW.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_JCDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_KJFX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_SWDX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_SWMX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_SWYX.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_SWYX.gif.BAK 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_YWTC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/KJ_ZTDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/SJKB.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/SJWJ.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/YWJC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/bak/JKFW.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/bak/KJ_JCDT.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/bak/KJ_YWTC.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/classimg/bak/SJWJ.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/down.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/echarts/line-simple.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/echarts/more.bmp 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/edit.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/file.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/01.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/02.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/05.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/06.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/07.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/08.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/09.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/FaBuShenHe.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/ShenQingPiFu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/WoDeDingYue.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/WoDeFaBu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/WoDeShenQing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/WoDeShouCang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/wodedingyue_old.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gongzuotai/wodeshenqin_old.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/gray_down.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/left_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/liferay_userinfo/admin.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/liferay_userinfo/exit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/liferay_userinfo/modifypassword.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/liferay_userinfo/modifyuserinfo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/liferay_userinfo/user.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/linetext1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/list.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/logo_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/logo_tit.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/map.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/primarykey.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/recource_steps_top_bg.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/right.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/sxsj.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/text.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/toc_icons2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/translation.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/txt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/up.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/video.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/wpf.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/wrong.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/wtg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/yellow_down.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ytg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ziyuanfabu/ziyuanfabu_liulang.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ziyuanfabu/ziyuanfabu_shenqing.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ztree/-second_menu.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ztree/first_muen.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ztree/firstopen_muen.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ztree/tree_hide.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/image/ztree/tree_open.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/PingTaiMenHu/SystemInfoList.js 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ResTheme/MainInfoSelect.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ResTheme/ModuleList.js 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ResTheme/ResThemeModule.js 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ResTheme/restheme.js 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ResTheme/selectPanel.js 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/BaseMapSelect.js 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/BiaoZhuTu.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/BusinessLayerSelect.js 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/BusinessRefList.js 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/DataSource.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/JcdtList.js 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/ProblemFeedback.js 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/ShuJuYuan.js 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/ZYMLZiYuan.js 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/ZiYuanSelect.js 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYML/resourceList.js 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/FangWenPaiHangGD.js 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/SelectZhouBianTCSetBasic.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/ShenQingZiYuanGD.js 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/WoDeShouCangJiaGD.js 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/ZiYuanKZ.js 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/ZiYuanTongJiGD.js 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZYZX/ZuiXinZiYuanGD.js 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/ZiTuCengSheZHi.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/Extjs/restemplate/restemplate.js 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/FuWuZhiYuan/Index.js 979 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/GrayPhoto.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/MenHuMore.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/OperateLogUtil.js 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/app.js 923 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/bootstrap-responsive.min.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/bootstrap.min.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery-1.8.3.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery.easy-pie-chart.css 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery.easy-pie-chart.js 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/style.css 5427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYangJingJi/data-set.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYangJingJi/g2.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/admin.main.css 984 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/app.js 923 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap-responsive.min.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap.min.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/echarts.min.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/font-awesome.min.css 908 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/form-components.js 471 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery-1.8.3.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery-ui-1.10.1.custom.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery.divresize.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style-metro.css 829 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style-responsive.css 583 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style.css 5427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/uniform.default.css 366 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ResManage/NewResRegister/EditInit.js 1053 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ResManage/NewResRegister/EsbManage.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/BaseLeftSource.js 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/FJGL_Ext.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/Index.js 628 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/Indexnew.js 819 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/ShenQingZiYuanGD.js 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ZiYuanZhongXin/ziyuantuijian.js 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/base.js 1261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/bootstrap-colorpicker.js 540 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common.js 341 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common/resource_select.js 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common/resource_set_ChartTemplat.js 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common/resource_set_TuXin.js 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common/resource_set_gltc.js 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/common/resource_set_zbcx.js 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/copyJs/clipboard.js 939 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/copyJs/clipboard.min.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/ShenQingZiYuanGD.js 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/fangwenpaihanggd.js 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/index.js 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/indexnew.js 517 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/wodeshoucanggd.js 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/ziyuantuijian.js 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ditufuwu/zuixinziyuangd.js 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/echarts.min.4.1.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/esbmanage.js 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/esbmanagebak20200810.js 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/findPinyinByKeyWord.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/form-wizard_test.js 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/htmlformat.js 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/index.js 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/jqUI/jquery-ui.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/jqUI/jquery-ui.min.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/jquery-override.js 694 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/jquery.bootstrap.wizard.min.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/jsformat.js 568 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/actionrecord.js 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/appcount.js 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/applyrecommend.js 352 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/applyrecommendbysystem.js 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/appreource.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/apptotalcount.js 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/audit.js 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/catalog.js 674 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/databasetable.js 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/datasource/index.js 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/datasource/panel_select.js 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/evaluation.js 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/onemapcatalog.js 677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/problemfeedback.js 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/subscriptions.js 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/subscriptionsaudit.js 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/subscriptionslist.js 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/manage/symbollibrary.js 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/modules/sys/generator.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/modules/sys/menu.js 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/modules/sys/user.js 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/openresource.js 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/previewCtrl.js 638 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/selectChosen/chosen.jquery.js 1359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/selectChosen/chosen.jquery.min.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/selectChosen/component-chosen.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/dark.js 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/infographic.js 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/lt_blue.js 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/lt_mapChart.js 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/macarons.js 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/roma.js 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/shine.js 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/theme/vintage.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/validator.js 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/js/ziyuanmulu/index.js 1652 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/ajaxupload.js 674 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/app.js 772 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/bootstrap-table.min.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/bootstrap.min.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/html5shiv.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/jquery.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/respond.min.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/router.js 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/libs/vue.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/jqgrid/grid.locale-cn.js 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/jqgrid/jquery.jqGrid.min.js 1531 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/jqgrid/ui.jqgrid-bootstrap-ui.css 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/jqgrid/ui.jqgrid-bootstrap.css 937 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/jqgrid/ui.jqgrid.css 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/layer.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/mobile/layer.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/mobile/need/layer.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/icon-ext.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/layer.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/loading-0.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/loading-1.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/default/loading-2.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/moon/default.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/layer/skin/moon/style.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/bower.json 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/demo.html 461 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/jquery.caret.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/jquery.tag-editor.css 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/jquery.tag-editor.js 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/jquery.tag-editor.min.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/readme.md 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tag/tag-editor.jquery.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/jquery.tinymce.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/langs/readme.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/langs/zh_CN.js 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/license.txt 504 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/advlist/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/anchor/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/autolink/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/autoresize/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/autosave/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/bbcode/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/charmap/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/code/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/codesample/css/prism.css 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/codesample/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/colorpicker/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/contextmenu/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/directionality/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-cool.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-cry.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-embarassed.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-frown.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-innocent.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-kiss.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-laughing.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-money-mouth.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-sealed.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-smile.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-surprised.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-tongue-out.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-undecided.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-wink.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-yell.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/emoticons/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/fullpage/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/fullscreen/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/help/img/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/help/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/hr/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/image/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/imagetools/plugin.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/importcss/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/insertdatetime/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/legacyoutput/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/link/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/lists/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/media/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/nonbreaking/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/noneditable/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/pagebreak/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/paste/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/preview/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/print/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/save/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/searchreplace/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/spellchecker/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/tabfocus/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/table/plugin.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/template/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/textcolor/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/textpattern/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/toc/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/visualblocks/css/visualblocks.css 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/visualblocks/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/visualchars/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/plugins/wordcount/plugin.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/content.inline.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/content.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.eot 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.svg 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.woff 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.eot 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.svg 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.ttf 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.woff 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/img/anchor.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/img/loader.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/img/object.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/img/trans.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/skins/lightgray/skin.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/themes/inlite/theme.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/themes/modern/theme.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/tinymce/tinymce.min.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/img/collapse.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/img/expand.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/img/file.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/img/folder.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/jquery.treegrid.bootstrap3.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/jquery.treegrid.css 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/jquery.treegrid.extension.js 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/jquery.treegrid.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/treegrid/tree.table.js 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/awesomeStyle/awesome.css 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/awesomeStyle/awesome.less 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/awesomeStyle/fa.less 480 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/awesomeStyle/img/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/metroStyle/img/line_conn.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/metroStyle/img/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/metroStyle/img/metro.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/metroStyle/img/metro.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/metroStyle/metroStyle.css 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/1_close.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/1_open.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/6.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/7.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/8.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/9.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/line_conn.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/zTreeStandard.gif 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/img/zTreeStandard.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/css/zTreeStyle/zTreeStyle.css 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/static/plugins/ztree/jquery.ztree.all.min.js 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/Index.html 850 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/JcdtDataList.html 355 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/JcdtList.html 920 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/Left.html 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/ZiYuanDataList.html 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/ZiYuanList.html 996 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/ZiYuanSelect.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/FuWuZiYuan/ZiYuanSelect_Edit.html 886 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandType/BaoHuIndex.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandType/JianCeIndex.html 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandType/JuMinIndex.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandType/QuanYiIndex.html 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandType/XinXiIndex.html 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandTypeTemp/BaoHuIndex.html 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandTypeTemp/JianCeIndex.html 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandTypeTemp/QuanYiIndex.html 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/IsLandTypeTemp/XinXiIndex.html 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/KeShiHuaFuWu/Index.html 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterDemo.html 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/CommonPage/Header.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/CommonPage/Layout.html 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/Header.html 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/Layout.Empty.html 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/Layout.html 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/New/Header.html 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/New/Layout.html 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/New/footer.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/MasterPage/footer.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_New.html 475 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewThree.html 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewThree_bak.html 441 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewTwo.html 472 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/GongNengQuHua_New.html 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/GongNengQuHua_NewTwo.html 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/GongZuoTai.html 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/GongZuoTai_New.html 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HaiDaoShuLiang_New.html 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HaiDaoTongJi.html 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HaiYangJingJi_New.html 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HaiYangJingJi_NewTwo.html 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HaiYuShiYong_New.html 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/HuanJingJianCeFuBiao.html 4018 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/JianCeZhanDian.html 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/JianCeZhanDian_New.html 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/LianJie.html 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/LianJie_New.html 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ChaoXiGuanCe.html 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ChaoXiGuanCe_bak.html 511 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/GongZuoTai.html 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/PubNews.html 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ShiPinJianKong.html 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/SystemList.html 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPubNews/ZiXunDataList.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/NewPubNews/ZiXunIndex.html 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ShiPinJianKong.html 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ShiPinJianKong_New.html 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ShowShiPin.html 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/SystemInfoList.html 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/YonHaiXiangMu.html 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ZiXunDataList.html 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ZiXunDongTai.html 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ZiXunDongTai_New.html 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ZiXunIndex.html 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/PingTaiMenHu/ZiXunInfo.html 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResActionRecord/ShenQingZiYuanGD.html 547 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResActionRecord/ZuiXinZiYuanGD.html 538 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/Edit.html 349 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/Ext3D.html 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtBaseMap.html 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtBusinessLayer.html 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtDataBase.html 274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtFileSource.html 1007 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtIntegrate.html 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtInterFaceService.html 462 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtMapUrl.html 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtPresentationMode.html 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtSpaceServer.html 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtSpaceServerParams.html 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ExtThemeMap.html 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/MainInfo.html 483 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ResFiles.html 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/ResResourceClass.html 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/SpaceParameters.html 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/SpaceParameters_Edit.html 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/NewResRegister/obtainExtentMapViewer.html 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/AddDataSource.html 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/ApplyRecommendInfo.html 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/GuanLianBiaoZhuTu.html 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/MainInfoByYWTC.html 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/ZiYuanDingYue.html 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResApplyRecommend/ZiYuanShenQing.html 490 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/AreaTree.html 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/AtkasList.html 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoEextInterFace.html 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExt3D.html 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtBaseMap.html 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtBusinessLayer.html 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtDataBase.html 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtFileSource.html 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtIntegrate.html 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtSpaceServer.html 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseInfoExtThemeMap.html 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BaseMapSelect.html 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BusinessLayerSelect.html 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/BusinessRef.html 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/DataSource.html 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/DataSourceBase.html 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/DataSourceBase_Edit.html 282 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/DisplayType.html 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/Edit.html 425 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/Ext3D.html 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtApp.html 433 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtBaseMap.html 1106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtBusinessLayer.html 840 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtDataBase.html 420 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtFileSource.html 1287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtIntegrate.html 653 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtInterFaceService.html 654 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtPresentationMode.html 376 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtSpaceServer.html 384 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ExtThemeMap.html 1072 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/GuanLianBiaoZhuTu.html 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/List.html 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/MainInfo.html 972 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/MainInfoByYWTC.html 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/MuLuShu.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/NcFileConfig.html 448 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ProblemFeedback.html 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ResFiles.html 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/SelectZhouBianTCSetBasic.html 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ShuJuYuan.html 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ShuJuYuanInsert.html 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/SpaceParameters.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/SpaceParameters_Edit.html 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/StorageConfig.html 1118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/WSDL.html 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiTuCengSheZhi.html 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiYuanBaseInfo.html 1182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiYuanBaseInfo_bak20190109.html 1184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiYuanErrorPage.html 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiYuanKZ.html 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/ZiYuanRecommend.html 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoEextInterFace.html 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExt3D.html 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtBaseMap.html 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtBusinessLayer.html 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtDataBase.html 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtFileSource.html 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtIntegrate.html 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtSpaceServer.html 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtThemeMap.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/AddResTheme.html 637 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/AddResThemeModule.html 516 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/KongJianFuWuTree.html 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/MapSelect.html 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/ModuleList.html 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/PanelSelect.html 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/ResThemeModule.html 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/ZhuangTiDiTuTree.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/catalog_add.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/catalog_basicinfo.html 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/catalog_sort.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/index.html 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/left.html 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/onemapindex.html 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/resource_sort.html 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/catalog/text.html 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ResManage/ResTheme/index.html 305 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/AXCDTJ.html 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/AnXianTJ.html 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/DQHYSCIndex.html 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/DaiDingTongJi.html 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/GKHWIndex.html 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/GKJZXIndex.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/GKLKIndex.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/HYCYIndex.html 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/HYFZIndex.html 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/HYJJFZIndex.html 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/HYSYQQZSZHMJindex.html 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/HaiYangJingJi.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Index.html 1268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/JJSSIndex.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/QGHYSCIndex.html 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/SHJYRYIndex.html 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test1.html 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test2.html 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test3.html 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test4.html 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test5.html 656 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test5_bak.html 633 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test6.html 449 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test6_bak.html 422 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test6_bak20190122.html 428 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test7.html 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/Test7_bak.html 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/XZQHIndex.html 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/XZQHIndex1.html 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ShuJuZhanShi/YHFSMJTJindex.html 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/BaseLeftSource.html 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/FangWenPaiHangGD.html 537 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/Index.html 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/New/Index.html 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/WoDeShouCangJiaGD.html 541 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiDuanBieMingBasic.html 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiDuanBieMingBasic_Edit.html 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiDuanYingShe.html 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiDuanYingSheBasic.html 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiYuanTongJiGD.html 558 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ZiYuanZhongXin/ZiYuanTuiJianGD.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/bak/FuWuZiYuan/JcdtList_bak.html 1141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/SelectOfChart.html 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/ServiceConfig.html 603 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/TuXinCongif.html 759 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/TuXingConfig.html 949 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/add_ServiceConfig.html 867 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/jitmonitor.html 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/obtainExtentMapViewer.html 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_add_ChartTemplat.html 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_add_TuXin.html 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_select.html 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_set_ChartTemplat.html 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_set_TuXin.html 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_set_gltc.html 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/common/resource_set_zbcx.html 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/demo.html 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/New/index.html 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/ShenQingZiYuanGD.html 544 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/ZiYuanTuiJianGD.html 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/fangwenpaihanggd.html 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/index.html 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/wodeshoucanggd.html 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/ziyuantuijian.html 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ditufuwu/zuixinziyuangd.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/Controller.java.vm 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/Dao.java.vm 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/Dao.xml.vm 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/Entity.java.vm 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/Service.java.vm 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/ServiceImpl.java.vm 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/generatorConfig.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/list.html.vm 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/generator/list.js.vm 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/jichuditu/dataList.html 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/jichuditu/dataList_New.html 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/jichuditu/index.html 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/jichuditu/index_New.html 424 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/liferay_userinfo.html 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/liferay_userinfoNew.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/actionrecord/AppResource.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/actionrecord/AppTotalCount.html 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/actionrecord/index.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/applyrecommend/AppCount.html 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/applyrecommend/content.html 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/applyrecommend/index.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/applyrecommend/indexbysystem.html 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/applyrecommend/ziyuanapply.html 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/audit/index.html 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/catalog_add.html 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/catalog_basicinfo.html 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/catalog_sort.html 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/index.html 302 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/left.html 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/resource_sort.html 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/catalog/text.html 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/datasource/baseinfo.html 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/datasource/edit.html 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/datasource/index.html 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/datasource/panel_add.html 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/datasource/panel_select.html 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/evaluation/content.html 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/evaluation/index.html 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/problemfeedback/index.html 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/subscriptions/audit.html 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/subscriptions/content.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/subscriptions/index.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/subscriptions/opinion.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/subscriptions/subscriptions_list.html 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/symbolLibrary/edit.html 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/symbolLibrary/index.html 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/manage/symbolLibrary/symbolmap.html 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/restemplate/editchartcontent.html 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/restemplate/restemplate_edit.html 455 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/restemplate/restemplate_list.html 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/.vscode/settings.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/citystore.js 1627 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/data.js 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/demo.html 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/echarts_4.1.0.rc2_echarts.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/cc.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/cdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-kgx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-lk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-lk1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-rt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-rt1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-scx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-taix.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/gy-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jh.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx6.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/jx7.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/nybj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/ss.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/w-lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/wg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/wl-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/xx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/yw-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/yw-x.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/images/zj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/index.html 511 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/jquery-3.1.0.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/monitor.js 708 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/servermoniter/大数据运维总览图.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/systeminfo/dataList.html 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/systeminfo/dataList_New.html 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/systeminfo/index.html 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/systeminfo/index_New.html 424 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/BaseInfo.html 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/DataBase.html 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/Edit.html 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/EsbProxy.html 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/Ext3D.html 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtBaseMap.html 410 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtBusinessLayer.html 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtDataBase.html 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtFileSource.html 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtIntegrate.html 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtInterFaceService.html 334 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtSpaceServer.html 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/ExtThemeMap.html 420 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/MainInfo.html 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/first.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/form_wizard.html 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/test/third.html 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/zhuantizhitu/index.html 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanfabu/dataList.html 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanfabu/dataList_New.html 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanfabu/index.html 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanfabu/index_New.html 456 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanmulu/index.html 915 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/ziyuanmulu/index_New.html 1520 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/citystore.js 1627 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/echarts_4.1.0.rc2_echarts.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/cc.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/cdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-kgx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-lk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-lk1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-rt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-rt1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-scx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-taix.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/gy-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jh.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx6.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/jx7.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/nybj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/ss.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/w-lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/wg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/wl-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/xx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/yw-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/yw-x.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/images/zj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/index.html 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/jquery-3.1.0.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/monitor.js 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/templates/大数据运维总览图/大数据运维总览图.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/index.html 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/login.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/modules/sys/generator.html 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/modules/sys/main.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/modules/sys/menu.html 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/admin/modules/sys/user.html 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/.vscode/settings.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/citystore.js 1627 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/data.js 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/demo.html 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/echarts_4.1.0.rc2_echarts.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/cc.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/cdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-bj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-kgx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-lk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-lk1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-rt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-rt1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-scx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-taix.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/gy-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jdian.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jh.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jk.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx5.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx6.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/jx7.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/nybj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/ss.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/w-lx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/wg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/wl-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/xx.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/yw-tt.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/yw-x.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/images/zj.png 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/index.html 515 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/jquery-3.1.0.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/monitor.js 708 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/views/servermonitor/大数据运维总览图.png 补丁 | 查看 | 原始文档 | blame | 历史
temp/ResExtThemMapServer/i_expand.png 补丁 | 查看 | 原始文档 | blame | 历史
temp/ResExtThemMapServer/i_expand2.png 补丁 | 查看 | 原始文档 | blame | 历史
脚本/2021-11-30_RES_MAININFO新增字段SPC_STATUS 专题数据标识 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
脚本/20211230_001_更新资源状态.sql 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
说明.txt 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lanCatalog.iml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,207 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
  <component name="FacetManager">
    <facet type="Spring" name="Spring">
      <configuration />
    </facet>
    <facet type="web" name="Web">
      <configuration>
        <webroots>
          <root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
        </webroots>
      </configuration>
    </facet>
  </component>
  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
    <output url="file://$MODULE_DIR$/target/classes" />
    <output-test url="file://$MODULE_DIR$/target/test-classes" />
    <content url="file://$MODULE_DIR$">
      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
      <excludeFolder url="file://$MODULE_DIR$/target" />
    </content>
    <orderEntry type="jdk" jdkName="jdk-1.8" jdkType="JavaSDK" />
    <orderEntry type="sourceFolder" forTests="false" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: com.jayway.jsonpath:json-path:2.2.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:json-smart:2.2.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.1" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.3" level="project" />
    <orderEntry type="library" name="Maven: junit:junit:4.12" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:2.6.0" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:1.10.19" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.objenesis:objenesis:2.1" level="project" />
    <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.4.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-core:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-web:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-logging:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.1.11" level="project" />
    <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.1.11" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.25" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.17" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-tomcat:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-core:8.5.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-el:8.5.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.16" level="project" />
    <orderEntry type="library" name="Maven: org.hibernate:hibernate-validator:5.3.5.Final" level="project" />
    <orderEntry type="library" name="Maven: javax.validation:validation-api:1.1.0.Final" level="project" />
    <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.1.Final" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.8.9" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.8.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.8.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-web:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-expression:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-actuator:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-actuator:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-aop:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.10" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-beans:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-context:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-data-redis:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-redis:1.8.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-keyvalue:1.2.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:1.13.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-tx:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-oxm:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: redis.clients:jedis:2.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-pool2:2.4.2" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-configuration-processor:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-thymeleaf:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf-spring4:2.1.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.thymeleaf:thymeleaf:2.1.5.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: ognl:ognl:3.0.8" level="project" />
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
    <orderEntry type="library" name="Maven: org.unbescape:unbescape:1.1.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:1.4.0" level="project" />
    <orderEntry type="library" name="Maven: org.codehaus.groovy:groovy:2.4.12" level="project" />
    <orderEntry type="library" name="Maven: net.sourceforge.nekohtml:nekohtml:1.9.22" level="project" />
    <orderEntry type="library" name="Maven: xerces:xercesImpl:2.11.0" level="project" />
    <orderEntry type="library" name="Maven: xml-apis:xml-apis:1.4.01" level="project" />
    <orderEntry type="library" name="Maven: net.java.dev.jna:jna-platform:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: net.java.dev.jna:jna:4.5.2" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-jdbc:8.5.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tomcat:tomcat-juli:8.5.16" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.10.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:1.3.0" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis:3.4.4" level="project" />
    <orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.3.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-security:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-config:4.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-web:4.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-cas:4.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.jasig.cas.client:cas-client-core:3.4.1" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.security:spring-security-core:4.2.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
    <orderEntry type="library" name="Maven: javax.inject:javax.inject:1" level="project" />
    <orderEntry type="library" name="Maven: org.postgresql:postgresql:42.3.1" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: org.checkerframework:checker-qual:3.5.0" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.3" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:druid:1.1.3" level="project" />
    <orderEntry type="module-library">
      <library name="Maven: com.alibaba:jconsole:1.8.0">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/../../../soft/Java18/jdk1.8/lib/jconsole.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES />
      </library>
    </orderEntry>
    <orderEntry type="module-library">
      <library name="Maven: com.alibaba:tools:1.8.0">
        <CLASSES>
          <root url="jar://$MODULE_DIR$/../../../soft/Java18/jdk1.8/lib/tools.jar!/" />
        </CLASSES>
        <JAVADOC />
        <SOURCES />
      </library>
    </orderEntry>
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-autoconfigure:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
    <orderEntry type="library" name="Maven: commons-fileupload:commons-fileupload:1.3.1" level="project" />
    <orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
    <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.10" level="project" />
    <orderEntry type="library" name="Maven: commons-configuration:commons-configuration:1.10" level="project" />
    <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
    <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-web:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: org.apache.shiro:shiro-ehcache:1.3.2" level="project" />
    <orderEntry type="library" name="Maven: net.sf.ehcache:ehcache-core:2.5.3" level="project" />
    <orderEntry type="library" name="Maven: com.github.theborakompanioni:thymeleaf-extras-shiro:1.2.1" level="project" />
    <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.3.1" level="project" />
    <orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
    <orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.0.9" level="project" />
    <orderEntry type="library" name="Maven: com.github.axet:kaptcha:0.0.9" level="project" />
    <orderEntry type="library" name="Maven: com.jhlabs:filters:2.0.235" level="project" />
    <orderEntry type="library" name="Maven: com.qiniu:qiniu-java-sdk:7.2.29" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okhttp3:okhttp:3.14.4" level="project" />
    <orderEntry type="library" scope="RUNTIME" name="Maven: com.squareup.okio:okio:1.17.2" level="project" />
    <orderEntry type="library" name="Maven: com.qcloud:cos_api:4.4" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.3" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.3" level="project" />
    <orderEntry type="library" name="Maven: org.json:json:20140107" level="project" />
    <orderEntry type="library" name="Maven: org.jsoup:jsoup:1.10.3" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:fastjson:1.2.37" level="project" />
    <orderEntry type="library" name="Maven: org.apache.velocity:velocity:1.7" level="project" />
    <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.2" level="project" />
    <orderEntry type="library" name="Maven: com.belerweb:pinyin4j:2.5.1" level="project" />
    <orderEntry type="library" name="Maven: com.github.stuxuhai:jpinyin:1.1.7" level="project" />
    <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.8.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.13" level="project" />
    <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.13" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.6.14" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-common:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.reflections:reflections:0.9.11" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml:classmate:1.3.3" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.1.0.Final" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.7.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi:3.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml:3.16" level="project" />
    <orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-scratchpad:3.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:poi-ooxml-schemas:3.16" level="project" />
    <orderEntry type="library" name="Maven: org.apache.xmlbeans:xmlbeans:2.6.0" level="project" />
    <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.poi:ooxml-schemas:1.3" level="project" />
    <orderEntry type="library" name="Maven: eu.bitwalker:UserAgentUtils:1.20" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-devtools:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot:1.5.6.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.github.pagehelper:pagehelper:4.1.6" level="project" />
    <orderEntry type="library" name="Maven: com.github.jsqlparser:jsqlparser:0.9.5" level="project" />
    <orderEntry type="library" name="Maven: com.github.oshi:oshi-core:3.4.4" level="project" />
    <orderEntry type="library" name="Maven: org.threeten:threetenbp:1.3.6" level="project" />
    <orderEntry type="library" name="Maven: org.apache.axis:axis:1.4" level="project" />
    <orderEntry type="library" name="Maven: javax.xml.rpc:javax.xml.rpc-api:1.1.1" level="project" />
    <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.6" level="project" />
    <orderEntry type="library" name="Maven: wsdl4j:wsdl4j:1.6.3" level="project" />
    <orderEntry type="library" name="Maven: commons-discovery:commons-discovery:0.2" level="project" />
    <orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.2.6" level="project" />
    <orderEntry type="library" name="Maven: com.google.guava:guava:15.0" level="project" />
    <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.2" level="project" />
  </component>
</module>
pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,533 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.landtool</groupId>
    <artifactId>lanCatalog</artifactId>
    <version>1.0.0</version>
<!--    <packaging>jar</packaging>-->
    <packaging>war</packaging>
    <description>lanCatalog</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>
    <properties>
        <argLine>-Dfile.encoding=UTF-8</argLine>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
        <mysql.version>5.1.38</mysql.version>
        <druid.version>1.1.3</druid.version>
        <commons.lang.version>2.6</commons.lang.version>
        <commons.fileupload.version>1.3.1</commons.fileupload.version>
        <commons.io.version>2.5</commons.io.version>
        <commons.codec.version>1.10</commons.codec.version>
        <commons.configuration.version>1.10</commons.configuration.version>
        <shiro.version>1.3.2</shiro.version>
        <kaptcha.version>0.0.9</kaptcha.version>
        <qiniu.version>[7.2.0, 7.2.99]</qiniu.version>
        <qcloud.cos.version>4.4</qcloud.cos.version>
        <ehcache.version>3.3.1</ehcache.version>
        <jsoup.version>1.10.3</jsoup.version>
        <fastjson.version>1.2.37</fastjson.version>
        <velocity.version>1.7</velocity.version>
        <pinyin4j.version>2.5.1</pinyin4j.version>
        <jpinyin.version>1.1.7</jpinyin.version>
        <jwt.version>0.8.0</jwt.version>
        <swagger.version>2.7.0</swagger.version>
        <poi.version>3.16</poi.version>
        <ooxml.version>1.3</ooxml.version>
        <landtool.nctojson.version>1.0.7</landtool.nctojson.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--排除内置tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <groupId>org.springframework.boot</groupId>-->
<!--                    <artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
        </dependency>
        <!--添加servlet依赖-->
<!--        <dependency>-->
<!--            <groupId>javax.servlet</groupId>-->
<!--            <artifactId>javax.servlet-api</artifactId>-->
<!--            <version>3.1.0</version>-->
<!--            <scope>provided</scope>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna-platform</artifactId>
            <version>4.5.2</version>
            <exclusions>
                <exclusion>
                    <groupId>net.java.dev.jna</groupId>
                    <artifactId>jna</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>4.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis.spring.boot.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-cas</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <!--瀚高数据库驱动-->
<!--        <dependency>-->
<!--            <groupId>com.highgo</groupId>-->
<!--            <artifactId>hgdb-jdbc42</artifactId>-->
<!--            <version>4.0</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-data-jpa</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.lang.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${commons.fileupload.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons.io.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>${commons.codec.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>${commons.configuration.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.theborakompanioni</groupId>
            <artifactId>thymeleaf-extras-shiro</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.ehcache</groupId>
            <artifactId>ehcache</artifactId>
            <version>${ehcache.version}</version>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>3.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.0.9</version>
        </dependency>
        <dependency>
            <groupId>com.github.axet</groupId>
            <artifactId>kaptcha</artifactId>
            <version>${kaptcha.version}</version>
        </dependency>
        <dependency>
            <groupId>com.qiniu</groupId>
            <artifactId>qiniu-java-sdk</artifactId>
            <version>${qiniu.version}</version>
        </dependency>
        <dependency>
            <groupId>com.qcloud</groupId>
            <artifactId>cos_api</artifactId>
            <version>${qcloud.cos.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>${jsoup.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>${velocity.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-lang</groupId>
                    <artifactId>commons-lang</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.belerweb</groupId>
            <artifactId>pinyin4j</artifactId>
            <version>${pinyin4j.version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.stuxuhai</groupId>
            <artifactId>jpinyin</artifactId>
            <version>${jpinyin.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>${jwt.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-scratchpad</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>ooxml-schemas</artifactId>
            <version>${ooxml.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.xmlbeans</groupId>
                    <artifactId>xmlbeans</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>eu.bitwalker</groupId>
            <artifactId>UserAgentUtils</artifactId>
            <version>1.20</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.oshi</groupId>
            <artifactId>oshi-core</artifactId>
            <version>3.4.4</version>
            <exclusions>
                <exclusion>
                    <groupId>net.java.dev.jna</groupId>
                    <artifactId>jna-platform</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.java.dev.jna</groupId>
                    <artifactId>jna</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>net.java.dev.jna</groupId>
                    <artifactId>jna</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.threeten</groupId>
                    <artifactId>threetenbp</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.threeten</groupId>
            <artifactId>threetenbp</artifactId>
            <version>1.3.6</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.microsoft.sqlserver</groupId>-->
<!--            <artifactId>sqljdbc4</artifactId>-->
<!--            <version>4.0</version>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.rpc</groupId>
            <artifactId>javax.xml.rpc-api</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.3</version>
        </dependency>
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
            <version>0.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.theborakompanioni</groupId>
            <artifactId>thymeleaf-extras-shiro</artifactId>
            <version>1.2.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>poi-ooxml-schemas</artifactId>
                    <groupId>org.apache.poi</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>poi-ooxml</artifactId>
                    <groupId>org.apache.poi</groupId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.poi</groupId>
                    <artifactId>poi</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>cglib</groupId>
                    <artifactId>cglib</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.ehcache</groupId>
                    <artifactId>ehcache</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>15.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.2</version>
        </dependency>
    </dependencies>
    <build>
        <finalName>lancatalog</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.landtool.lanbase.LanbaseApplication</mainClass>
                    <fork>true</fork>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/templates/generator/generatorConfig.xml
                    </configurationFile>
                    <overwrite>true</overwrite>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.14</version>
                <configuration>
                    <imageName>lanbase/image</imageName>
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!--<repositories>
        <repository>
            <id>maven-public</id>
            <name>landtool nexus</name>
            <url>http://192.168.0.178:8181/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>maven-public</id>
            <name>landtool nexus</name>
            <url>http://192.168.0.178:8181/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>-->
</project>
src/main/java/com/landtool/lanbase/LanbaseApplication.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,114 @@
package com.landtool.lanbase;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.core.convert.converter.Converter;
import com.github.pagehelper.PageHelper;
import at.pollux.thymeleaf.shiro.dialect.ShiroDialect;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class LanbaseApplication extends SpringBootServletInitializer {
    /**
     * å¯åŠ¨ç¨‹åºæ–¹æ³•
     */
    public static void main(String[] args) {
        //showEnvironment();
        SpringApplication.run(LanbaseApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(LanbaseApplication.class);
    }
    @Bean
    public Converter<String, Timestamp> addNewConvert() {
        return new Converter<String, Timestamp>() {
            @Override
            public Timestamp convert(String source) {
                if(source.equals("")){
                    return null;
                }else {
                    DateFormat dateFormat;
                    dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);//设定格式
                    //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
                    dateFormat.setLenient(false);
                    Date timeDate = null;//util类型
                    try {
                        timeDate = dateFormat.parse(source);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                    java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
                    return dateTime;
                }
            }
        };
    }
    @Bean
    public PageHelper pageHelper(){
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum","true");
        properties.setProperty("rowBoundsWithCount","true");
        properties.setProperty("reasonable","true");
        properties.setProperty("dialect","PostgreSQL");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
//    <!--shiro整合thymeleaf-->
    @Bean
    public ShiroDialect shiroDialect() {
        return new ShiroDialect();
    }
    private static void showEnvironment(){
        System.out.println("java版本号:" + System.getProperty("java.version"));
        System.out.println("Java提供商名称:" + System.getProperty("java.vendor"));
//        System.out.println("Java提供商网站:" + System.getProperty("java.vendor.url"));
        System.out.println("jre主目录:" + System.getProperty("java.home"));
//        System.out.println("Java虚拟机规范版本号:" + System.getProperty("java.vm.specification.version"));
//        System.out.println("Java虚拟机规范提供商:" + System.getProperty("java.vm.specification.vendor"));
//        System.out.println("Java虚拟机规范名称:" + System.getProperty("java.vm.specification.name"));
        System.out.println("Java虚拟机版本号:" + System.getProperty("java.vm.version"));
        System.out.println("Java虚拟机提供商:" + System.getProperty("java.vm.vendor"));
        System.out.println("Java虚拟机名称:" + System.getProperty("java.vm.name"));
//        System.out.println("Java规范版本号:" + System.getProperty("java.specification.version"));
//        System.out.println("Java规范提供商:" + System.getProperty("java.specification.vendor"));
//        System.out.println("Java规范名称:" + System.getProperty("java.specification.name"));
        System.out.println("Java类版本号:" + System.getProperty("java.class.version"));
        System.out.println("Java类路径:" + System.getProperty("java.class.path"));
        System.out.println("Java lib路径:" + System.getProperty("java.library.path"));
        System.out.println("Java输入输出临时路径:" + System.getProperty("java.io.tmpdir"));
        System.out.println("Java编译器:" + System.getProperty("java.compiler"));
        System.out.println("Java执行路径:" + System.getProperty("java.ext.dirs"));
        System.out.println("操作系统名称:" + System.getProperty("os.name"));
        System.out.println("操作系统的架构:" + System.getProperty("os.arch"));
        System.out.println("操作系统版本号:" + System.getProperty("os.version"));
        System.out.println("文件分隔符:" + System.getProperty("file.separator"));
        System.out.println("路径分隔符:" + System.getProperty("path.separator"));
        System.out.println("直线分隔符:" + System.getProperty("line.separator"));
        System.out.println("操作系统用户名:" + System.getProperty("user.name"));
        System.out.println("操作系统用户的主目录:" + System.getProperty("user.home"));
        System.out.println("当前程序所在目录:" + System.getProperty("user.dir"));
    }
}
src/main/java/com/landtool/lanbase/common/Constant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,133 @@
package com.landtool.lanbase.common;
/**
 * @author lanbase
 * @Description: TODO(常量)
 * @date 2017-6-23 15:07
 */
public class Constant {
    /**
     * ç™»å½•错误次数
     */
    public  static final String LOGIN_ERROR_TIMES= "login_error_times";
    /**
     * è¶…级管理员ID
     */
    public static final int SUPER_ADMIN = 1;
    /**
     * utf-8编码
     */
    public static final String ENCODING_UTF_8="UTF-8";
    /**
     * èœå•类型
     */
    public enum MenuType {
        /**
         * ç›®å½•
         */
        CATALOG(0),
        /**
         * èœå•
         */
        MENU(1),
        /**
         * æŒ‰é’®
         */
        BUTTON(2);
        private int value;
        MenuType(int value) {
            this.value = value;
        }
        public int getValue() {
            return value;
        }
    }
    /**
     * ç”¨æˆ· çŠ¶æ€
     */
    public enum UserStatus {
        /**
         * ç¦ç”¨
         */
        DISABLE(1),
        /**
         * æ­£å¸¸
         */
        NORMAL(0);
        private int value;
        UserStatus(int value) {
            this.value = value;
        }
        public int getValue() {
            return value;
        }
    }
    /**
     * Taxonomy类型
     */
    public enum TaxonomyType {
        /**
         * åˆ†ç±»
         */
        CATEGORY(0),
        /**
         * ä¸“题
         */
        FEATURE(1),
        /**
         * æ ‡ç­¾
         */
        TAG(2);
        private int value;
        TaxonomyType(int value) {
            this.value = value;
        }
        public int getValue() {
            return value;
        }
    }
    /**
     * Content状态
     */
    public enum ContentStatus {
        /**
         * è‰ç¨¿
         */
        DRAFT(0),
        /**
         * æ­£å¸¸
         */
        NORMAL(1),
        /**
         * åˆ é™¤
         */
        DELETE(2);
        private int value;
        ContentStatus(int value) {
            this.value = value;
        }
        public int getValue() {
            return value;
        }
    }
}
src/main/java/com/landtool/lanbase/common/annotation/LogAction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.landtool.lanbase.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogAction {
    String value() default "";
}
src/main/java/com/landtool/lanbase/common/annotation/LogLogininfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.landtool.lanbase.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface LogLogininfo {
    String value() default "";
}
src/main/java/com/landtool/lanbase/common/annotation/SysLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.landtool.lanbase.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @author lanbase
 * @Description: TODO(系统日志注解)
 * @date 2017-6-23 15:07
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SysLog {
     String value() default "";
}
src/main/java/com/landtool/lanbase/common/aspect/LogActionAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
package com.landtool.lanbase.common.aspect;
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.landtool.lanbase.common.utils.HttpContextUtils;
import com.landtool.lanbase.common.utils.IPUtils;
import com.landtool.lanbase.config.LoginConfigProperties;
import com.landtool.lanbase.modules.log.entity.LogAction;
import com.landtool.lanbase.modules.log.service.LogActionService;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.res.entity.Res_Ext3D;
import com.landtool.lanbase.modules.res.entity.Res_ExtBaseMap;
import com.landtool.lanbase.modules.res.entity.Res_ExtBusinessLayer;
import com.landtool.lanbase.modules.res.entity.Res_ExtDataBase;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_ExtInterFaceService;
import com.landtool.lanbase.modules.res.entity.Res_ExtSpaceServerWithBLOBs;
import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
@Aspect
@Component
public class LogActionAspect {
    @Autowired
    private LogActionService logActionService;
    @Autowired
    private LoginConfigProperties loginConfig;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Pointcut("@annotation(com.landtool.lanbase.common.annotation.LogAction)")
    public void logPointCut() {
    }
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long beginTime = System.currentTimeMillis();
        //执行方法
        Object result = point.proceed();
        //执行时长(毫秒)
        long time = System.currentTimeMillis() - beginTime;
        //System.out.println("time"+time);
        //保存日志
        saveLogAction(point, time);
        return result;
    }
    private void saveLogAction(ProceedingJoinPoint joinPoint, long time) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        LogAction logAction = new LogAction();
        com.landtool.lanbase.common.annotation.LogAction log = method.getAnnotation(com.landtool.lanbase.common.annotation.LogAction.class);
        if(log != null){
            //注解上的描述
            String[] list = log.value().split(",");
            logAction.setLargemodel(list[0]); //大模块
            logAction.setSmallmodel(list[1]);//小模块
            logAction.setRemark(list[2]);    //备注
            //记录资源id和标题
            if(list[3].indexOf("|")!=-1){
                logAction.setActiontype(list[3].substring(0,list[3].indexOf("|")));//操作类型
                if(joinPoint.getArgs() != null && joinPoint.getArgs()[0] != null && joinPoint.getArgs().length > 0 ){
                    Integer resourceid = 0;
                    String title = "";
                    try{
                        resourceid = Integer.parseInt(joinPoint.getArgs()[0].toString());
                    }catch(Exception ex){
                        String className = joinPoint.getArgs()[0].getClass().getName().substring(joinPoint.getArgs()[0].getClass().getName().lastIndexOf(".")+1,joinPoint.getArgs()[0].getClass().getName().length());
                        switch (className){
                            case "Res_MainInfo":
                                Res_MainInfo mainInfo = (Res_MainInfo)joinPoint.getArgs()[0];
                                if(mainInfo != null && mainInfo.getResourceid() != null) resourceid = mainInfo.getResourceid();
                                break;
                            case "Res_ExtDataBase":
                                Res_ExtDataBase resExtDataBase = (Res_ExtDataBase)joinPoint.getArgs()[0];
                                if(resExtDataBase != null && resExtDataBase.getResourceid() != null) resourceid = resExtDataBase.getResourceid();
                                break;
                            case "Res_ExtInterFaceService":
                                Res_ExtInterFaceService resExtInterFaceService = (Res_ExtInterFaceService)joinPoint.getArgs()[0];
                                if(resExtInterFaceService != null && resExtInterFaceService.getResourceid() != null) resourceid = resExtInterFaceService.getResourceid();
                                break;
                            case "Res_ExtIntegrate":
                                Res_ExtIntegrate resExtIntegrate = (Res_ExtIntegrate)joinPoint.getArgs()[0];
                                if(resExtIntegrate != null && resExtIntegrate.getResourceid() != null) resourceid = resExtIntegrate.getResourceid();
                                break;
                            case "Res_ExtBaseMap":
                                Res_ExtBaseMap resExtBaseMap = (Res_ExtBaseMap)joinPoint.getArgs()[0];
                                if(resExtBaseMap != null && resExtBaseMap.getResourceid() != null) resourceid = resExtBaseMap.getResourceid();
                                break;
                            case "Res_ExtThemeMap":
                                Res_ExtThemeMap resExtThemeMap = (Res_ExtThemeMap)joinPoint.getArgs()[0];
                                if(resExtThemeMap != null && resExtThemeMap.getResourceid() != null) resourceid = resExtThemeMap.getResourceid();
                                break;
                            case "Res_ExtSpaceServerWithBLOBs":
                                Res_ExtSpaceServerWithBLOBs resExtSpaceServerWithBLOBs = (Res_ExtSpaceServerWithBLOBs)joinPoint.getArgs()[0];
                                if(resExtSpaceServerWithBLOBs != null && resExtSpaceServerWithBLOBs.getResourceid() != null) resourceid = resExtSpaceServerWithBLOBs.getResourceid();
                                break;
                            case "Res_Ext3D":
                                Res_Ext3D resExt3D = (Res_Ext3D)joinPoint.getArgs()[0];
                                if(resExt3D != null && resExt3D.getResourceid() != null) resourceid = resExt3D.getResourceid();
                                break;
                            case "Res_ExtBusinessLayer":
                                Res_ExtBusinessLayer resExtBusinessLayer = (Res_ExtBusinessLayer)joinPoint.getArgs()[0];
                                if(resExtBusinessLayer != null && resExtBusinessLayer.getResourceid() != null) resourceid = resExtBusinessLayer.getResourceid();
                                break;
                        }
                    }
                    logAction.setResourceid(resourceid);
                    if(list[3].indexOf("删除") != -1) {
                        title = joinPoint.getArgs()[1].toString();
                    }else{
                        if (resourceid != null && resourceid != 0) {
                            title = resMainInfoService.selectByPrimaryKey(resourceid) != null ? resMainInfoService.selectByPrimaryKey(resourceid).getTitle() : "";
                        }
                    }
                    logAction.setTitle(title);
                }
            }else{
                logAction.setActiontype(list[3]);//操作类型
            }
        }
        //获取request
        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
        String url=request.getServletPath();
        logAction.setRequesturl(url);
        //设置IP地址
        logAction.setRequestip(IPUtils.getIpAddr(request));
        //用户名
        Long userid = ((OrgUser) SecurityUtils.getSubject().getPrincipal()).getUserid();
        logAction.setUserid(userid);
        logAction.setAppid(loginConfig.getAppId());
//        logAction.setLargemodel(loginConfig.getAppFullName());
        //保存系统日志
        logActionService.save(logAction);
    }
}
src/main/java/com/landtool/lanbase/common/aspect/RedisAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.landtool.lanbase.common.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import com.landtool.lanbase.common.exception.LanbaseException;
/**
 * @author lanbase
 * @Description: TODO(Redis切面处理类)
 * @date 2017-6-23 15:07
 */
@Aspect
@Configuration
public class RedisAspect {
    private Logger logger = LoggerFactory.getLogger(getClass());
    //是否开启redis缓存  true开启   false关闭
    @Value("${spring.redis.open: #{false}}")
    private boolean open;
    @Around("execution(* com.landtool.lanbase.common.utils.RedisUtils.*(..))")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        Object result = null;
        if(open){
            try{
                result = point.proceed();
            }catch (Exception e){
                logger.error("redis error", e);
                throw new LanbaseException("Redis服务异常");
            }
        }
        return result;
    }
}
src/main/java/com/landtool/lanbase/common/aspect/SysLogAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package com.landtool.lanbase.common.aspect;
import java.lang.reflect.Method;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
/**
 * @author lanbase
 * @Description: TODO(系统日志,切面处理类)
 * @date 2017-6-23 15:07
 */
@Aspect
@Component
public class SysLogAspect {
//    @Autowired
//    private SysLogService sysLogService;
    @Pointcut("@annotation(com.landtool.lanbase.common.annotation.SysLog)")
    public void logPointCut() {
    }
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long beginTime = System.currentTimeMillis();
        //执行方法
        Object result = point.proceed();
        //执行时长(毫秒)
        long time = System.currentTimeMillis() - beginTime;
        //保存日志
        saveSysLog(point, time);
        return result;
    }
    private void saveSysLog(ProceedingJoinPoint joinPoint, long time) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
/*
        SysLog sysLog = new SysLog();
        com.landtool.lanbase.common.annotation.SysLog log = method.getAnnotation(com.landtool.lanbase.common.annotation.SysLog.class);
        if(log != null){
            //注解上的描述
            sysLog.setOperation(log.value());
        }
        //请求的方法名
        String className = joinPoint.getTarget().getClass().getName();
        String methodName = signature.getName();
        sysLog.setMethod(className + "." + methodName + "()");
        //请求的参数
        Object[] args = joinPoint.getArgs();
        try{
            String params = new Gson().toJson(args[0]);
            sysLog.setParams(params);
        }catch (Exception e){
        }
        //获取request
        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
        //设置IP地址
        sysLog.setIp(IPUtils.getIpAddr(request));
        //用户名
        String username = ((SysUser) SecurityUtils.getSubject().getPrincipal()).getUsername();
        sysLog.setUsername(username);
        sysLog.setTime(time);
        sysLog.setCreateTime(new Date());
        //保存系统日志
        sysLogService.save(sysLog); */
    }
}
src/main/java/com/landtool/lanbase/common/cache/BaseCacheFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.landtool.lanbase.common.cache;
/**
 * @author lanbase
 * @Description: TODO(缓存工厂基类)
 * @date 2017-6-23 15:07
 */
public abstract class BaseCacheFactory implements ICache {
    @SuppressWarnings("unchecked")
    public <T> T get(String cacheName, Object key, ILoader iLoader) {
        Object data = get(cacheName, key);
        if (data == null) {
            data = iLoader.load();
            put(cacheName, key, data);
        }
        return (T) data;
    }
    @SuppressWarnings("unchecked")
    public <T> T get(String cacheName, Object key, Class<? extends ILoader> iLoaderClass) {
        Object data = get(cacheName, key);
        if (data == null) {
            try {
                ILoader dataLoader = iLoaderClass.newInstance();
                data = dataLoader.load();
                put(cacheName, key, data);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
        return (T) data;
    }
}
src/main/java/com/landtool/lanbase/common/cache/CacheKit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.landtool.lanbase.common.cache;
import java.util.List;
/**
 * @author lanbase
 * @Description: TODO(缓存工具类)
 * @date 2017-6-23 15:07
 */
public class CacheKit {
    private static ICache defaultCacheFactory = new EhcacheFactory();
    public static void put(String cacheName, Object key, Object value) {
        defaultCacheFactory.put(cacheName, key, value);
    }
    public static <T> T get(String cacheName, Object key) {
        return defaultCacheFactory.get(cacheName, key);
    }
    @SuppressWarnings("rawtypes")
    public static List getKeys(String cacheName) {
        return defaultCacheFactory.getKeys(cacheName);
    }
    public static void remove(String cacheName, Object key) {
        defaultCacheFactory.remove(cacheName, key);
    }
    public static void removeAll(String cacheName) {
        defaultCacheFactory.removeAll(cacheName);
    }
    public static <T> T get(String cacheName, Object key, ILoader iLoader) {
        return defaultCacheFactory.get(cacheName, key, iLoader);
    }
    public static <T> T get(String cacheName, Object key, Class<? extends ILoader> iLoaderClass) {
        return defaultCacheFactory.get(cacheName, key, iLoaderClass);
    }
}
src/main/java/com/landtool/lanbase/common/cache/EhcacheFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.landtool.lanbase.common.cache;
import java.util.List;
import org.apache.log4j.Logger;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
/**
 * @author lanbase
 * @Description: TODO(Ehcache缓存工厂)
 * @date 2017-6-23 15:07
 */
public class EhcacheFactory extends BaseCacheFactory {
    private static CacheManager cacheManager;
    private static volatile Object locker = new Object();
    private static final Logger log = Logger.getLogger(EhcacheFactory.class);
    private static CacheManager getCacheManager() {
        if (cacheManager == null) {
            synchronized (EhcacheFactory.class) {
                if (cacheManager == null) {
                    cacheManager = CacheManager.create();
                }
            }
        }
        return cacheManager;
    }
    static Cache getOrAddCache(String cacheName) {
        CacheManager cacheManager = getCacheManager();
        Cache cache = cacheManager.getCache(cacheName);
        if (cache == null) {
            synchronized(locker) {
                cache = cacheManager.getCache(cacheName);
                if (cache == null) {
                    log.warn("无法找到缓存 [" + cacheName + "]的配置, ä½¿ç”¨é»˜è®¤é…ç½®.");
                    cacheManager.addCacheIfAbsent(cacheName);
                    cache = cacheManager.getCache(cacheName);
                    log.debug("缓存 [" + cacheName + "] å¯åЍ.");
                }
            }
        }
        return cache;
    }
    public void put(String cacheName, Object key, Object value) {
        getOrAddCache(cacheName).put(new Element(key, value));
    }
    @SuppressWarnings("unchecked")
    public <T> T get(String cacheName, Object key) {
        Element element = getOrAddCache(cacheName).get(key);
        return element != null ? (T)element.getObjectValue() : null;
    }
    @SuppressWarnings("rawtypes")
    public List getKeys(String cacheName) {
        return getOrAddCache(cacheName).getKeys();
    }
    public void remove(String cacheName, Object key) {
        getOrAddCache(cacheName).remove(key);
    }
    public void removeAll(String cacheName) {
        getOrAddCache(cacheName).removeAll();
    }
}
src/main/java/com/landtool/lanbase/common/cache/ICache.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.landtool.lanbase.common.cache;
import java.util.List;
/**
 * @author lanbase
 * @Description: TODO(通用缓存接口)
 * @date 2017-6-23 15:07
 */
public interface ICache {
    void put(String cacheName, Object key, Object value);
    <T> T get(String cacheName, Object key);
    @SuppressWarnings("rawtypes")
    List getKeys(String cacheName);
    void remove(String cacheName, Object key);
    void removeAll(String cacheName);
    <T> T get(String cacheName, Object key, ILoader iLoader);
    <T> T get(String cacheName, Object key, Class<? extends ILoader> iLoaderClass);
}
src/main/java/com/landtool/lanbase/common/cache/ILoader.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.landtool.lanbase.common.cache;
/**
 * @author lanbase
 * @Description: TODO(数据重载)
 * @date 2017-6-23 15:07
 */
public interface ILoader {
    Object load();
}
src/main/java/com/landtool/lanbase/common/datasource/DataSourceNames.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.landtool.lanbase.common.datasource;
/**
 * @author lanbase
 * @Description: TODO(配置多数据源的名字)
 * @date 2017-9-26 16:58
 */
public interface DataSourceNames {
    String FIRST = "first";
}
src/main/java/com/landtool/lanbase/common/datasource/DynamicDataSource.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.landtool.lanbase.common.datasource;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
 * @author lanbase
 * @Description: TODO(动态数据源)
 * @date 2017-6-23 15:07
 */
public class DynamicDataSource extends AbstractRoutingDataSource {
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();
    public DynamicDataSource(DataSource defaultTargetDataSource, Map<String, DataSource> targetDataSources) {
        super.setDefaultTargetDataSource(defaultTargetDataSource);
        super.setTargetDataSources(new HashMap<>(targetDataSources));
        super.afterPropertiesSet();
    }
    @Override
    protected Object determineCurrentLookupKey() {
        return getDataSource();
    }
    public static void setDataSource(String dataSource) {
        contextHolder.set(dataSource);
    }
    public static String getDataSource() {
        return contextHolder.get();
    }
    public static void clearDataSource() {
        contextHolder.remove();
    }
}
src/main/java/com/landtool/lanbase/common/datasource/annotation/DataSource.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.landtool.lanbase.common.datasource.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @author lanbase
 * @Description: TODO(多数据源注解)
 * @date 2017-9-26 16:53
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataSource {
    String name() default "";
}
src/main/java/com/landtool/lanbase/common/datasource/aspect/DataSourceAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.landtool.lanbase.common.datasource.aspect;
import java.lang.reflect.Method;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import com.landtool.lanbase.common.datasource.DataSourceNames;
import com.landtool.lanbase.common.datasource.DynamicDataSource;
import com.landtool.lanbase.common.datasource.annotation.DataSource;
/**
 * @author lanbase
 * @Description: TODO(多数据源切面处理类-注解切换数据源)
 * @date 2017-9-26 16:55
 */
@Aspect
@Component
public class DataSourceAspect implements Ordered {
    protected Logger logger = LoggerFactory.getLogger(getClass());
    @Pointcut("@annotation(com.landtool.lanbase.common.datasource.annotation.DataSource)")
    public void dataSourcePointCut() {
    }
    @Around("dataSourcePointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        MethodSignature signature = (MethodSignature) point.getSignature();
        Method method = signature.getMethod();
        //转换数据源
        DataSource ds = method.getAnnotation(DataSource.class);
        if(ds == null){
            DynamicDataSource.setDataSource(DataSourceNames.FIRST);
            logger.debug("set datasource is " + DataSourceNames.FIRST);
        }else {
            DynamicDataSource.setDataSource(ds.name());
            logger.debug("set datasource is " + ds.name());
        }
        try {
            return point.proceed();
        } finally {
            DynamicDataSource.clearDataSource();
            logger.debug("clean datasource");
        }
    }
    @Override
    public int getOrder() {
        return 1;
    }
}
src/main/java/com/landtool/lanbase/common/exception/LanbaseException.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.landtool.lanbase.common.exception;
/**
 * @author lanbase
 * @Description: TODO(自定义异常)
 * @date 2017-6-23 15:07
 */
public class LanbaseException extends RuntimeException {
    private String msg;
    private int code = 500;
    public LanbaseException(String msg) {
        super(msg);
        this.msg = msg;
    }
    public LanbaseException(String msg, Throwable e) {
        super(msg, e);
        this.msg = msg;
    }
    public LanbaseException(String msg, int code) {
        super(msg);
        this.msg = msg;
        this.code = code;
    }
    public LanbaseException(String msg, int code, Throwable e) {
        super(msg, e);
        this.msg = msg;
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
}
src/main/java/com/landtool/lanbase/common/exception/LanbaseExceptionHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.landtool.lanbase.common.exception;
import org.apache.shiro.authz.AuthorizationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import com.landtool.lanbase.common.utils.Result;
/**
 * @author lanbase
 * @Description: TODO(异常处理器)
 * @date 2017-6-23 15:07
 */
@RestControllerAdvice
public class LanbaseExceptionHandler {
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * è‡ªå®šä¹‰å¼‚常
     */
    @ExceptionHandler(LanbaseException.class)
    public Result handleLanbaseException(LanbaseException e){
        return Result.error(e.getCode(), e.getMessage());
    }
    @ExceptionHandler(DuplicateKeyException.class)
    public Result handleDuplicateKeyException(DuplicateKeyException e){
        logger.error(e.getMessage(), e);
        return Result.error("数据库中已存在该记录");
    }
    @ExceptionHandler(AuthorizationException.class)
    public Result handleAuthorizationException(AuthorizationException e){
        logger.error(e.getMessage(), e);
        return Result.error("没有权限,请联系管理员授权");
    }
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e){
        logger.error(e.getMessage(), e);
        return Result.error();
    }
}
src/main/java/com/landtool/lanbase/common/map/EsbToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.landtool.lanbase.common.map;
import com.alibaba.fastjson.JSONObject;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import java.io.IOException;
import static com.landtool.lanbase.common.utils.HttpOperateUtils.httpGet;
public class EsbToken {
    /**
     * èŽ·å–èµ„æºæœåŠ¡åœ°å€
     * @param Url        æœåŠ¡åœ°å€
     * @param userid     ç™»å½•用户名
     * @param RemoteAddr å®¢æˆ·ç«¯IP
     * @param ResourceId èµ„源ID
     * @param Espproxy   æ˜¯å¦ä»£ç†
     * @param sysConfig  é…ç½®è¯»å–对象
     * @param subzyids   å­å›¾å±‚id
     * @param isPubzy    æ˜¯å¦å®Œå…¨å…¬å¼€
     * @param tokenValue token值
     * @param returnToken æ˜¯å¦åªè¿”回token
     * @return
     */
    public static String getEsbUrl(String Url, Integer userid, String identyinfo, Integer ResourceId, Integer Espproxy, SysTemPropertyConfig sysConfig, String subzyids, Boolean isPubzy, String tokenValue, Boolean returnToken) {
        String ServerUrl = "";
        String token = "";// token
        if (Url != null && !Url.equals("")) {
            ServerUrl = Url;
            String urlEncode = "";
            String getTokenUrl = sysConfig.getTokenWebRoot() + "?userid=servdl&password=servdl123" + "&resourceid=" + ResourceId + "&expireSeconds=86400&identyinfo=" + identyinfo;// token获取地址
            String TokenResponse = null;// è¯·æ±‚token
            try {
                TokenResponse = httpGet(getTokenUrl);
            } catch (IOException e) {
               return  ServerUrl;
            }
            JSONObject object = JSONObject.parseObject(TokenResponse);// è½¬æ¢è¿”回JSON字符串
            token = object.getString("data");// èŽ·å–è¿”å›žtoken
            if (token != null && !token.isEmpty()) {
                if (ServerUrl.indexOf("?") > -1) {
                    ServerUrl += "&token=" + token;
                } else {
                    ServerUrl += "?token=" + token;
                }
            }
        }
        return  ServerUrl;
    }
    /**
     * èŽ·å–èµ„æºæœåŠ¡åœ°å€
     * @param userid     ç™»å½•用户名
     * @param appId      åº”用程序ID
     * @param appUrl     åº”用程序地址
     * @param ResourceId èµ„源ID
     * @param Espproxy   æ˜¯å¦ä»£ç†
     * @param sysConfig  é…ç½®è¯»å–对象
     * @param subzyids   å­å›¾å±‚id
     * @param tokenValue token值
     * @return
     */
    public static String getAppEsbToken(Integer userid, Integer appId, String appUrl, Integer ResourceId, Integer Espproxy,
                                        SysTemPropertyConfig sysConfig, String subzyids, String tokenValue) {
        String token = "";// token
        String urlEncode = "";
        if (Espproxy == 1) {
            try {
                String getTokenUrl = sysConfig.getApptokenWebRoot() + "?userId=" + userid + "&resourceId=" + ResourceId
                        + "&expireSeconds=86400&appId=" + appId + "&appUrl=" + appUrl + "&subzyids=" + subzyids;// token获取地址
                String TokenResponse = httpGet(getTokenUrl);// è¯·æ±‚token
                JSONObject object = JSONObject.parseObject(TokenResponse);// è½¬æ¢è¿”回JSON字符串
                token = object.getString("token");// èŽ·å–è¿”å›žtoken
            } catch (Exception e) {
            }
        } else if (Espproxy == 0) {
            if (tokenValue != "" && tokenValue != null) {
                token = tokenValue;
            }
        }
        return token;
    }
}
src/main/java/com/landtool/lanbase/common/map/TerraToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.landtool.lanbase.common.map;
import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
@Component
public class TerraToken {
     @Autowired
    private ResMainInfoService resMainInfoService;
    private static TerraToken ter;
     @PostConstruct
     public void init(){
         ter=this;
         ter.resMainInfoService=this.resMainInfoService;
     }
      public static String getToken(String Url, Integer userid, String RemoteAddr, Integer ResourceId, Integer Espproxy, SysTemPropertyConfig sysConfig, String subzyids, Boolean isPubzy, String tokenValue, Boolean returnToken) {
            String ServerUrl = "";
            Res_MainInfo resMainInfo = ter.resMainInfoService.selectByPrimaryKey(ResourceId);
         //   long expiration=resMainInfo.getExpiration()!=null?resMainInfo.getExpiration():null;
            String token = "";// token
            if (Url != null && !Url.equals("")) {
                ServerUrl = Url;
                String urlEncode = "";
                if (Espproxy == 1) {
                    try {
                        String getTokenUrl = sysConfig.getTerraTokenWebRoot() + "?userid=" + userid + "&resourceId=" + ResourceId +"&clientIp=" + RemoteAddr + "&subzyids=" + subzyids + "&isPubzy=" + isPubzy;// token获取地址;// token获取地址
                        String TokenResponse = HttpOperateUtils.httpGet(getTokenUrl);// è¯·æ±‚token
    //                    JSONObject object = JSONObject.parseObject(TokenResponse);// è½¬æ¢è¿”回JSON字符串
                        token = TokenResponse;// èŽ·å–è¿”å›žtoken
                        if(token != null && !token.isEmpty()) {
                            if (ServerUrl.indexOf("?") > -1) {
                                ServerUrl += "&token=" + token;
                            } else {
                                ServerUrl += "?token=" + token;
                            }
                        }
                    } catch (Exception e) {
                        //if (ServerUrl.indexOf("?") > -1) {
                        //    ServerUrl += "&token=";
                        //} else {
                        //    ServerUrl += "?token=";
                        //}
                    }
                } else if (Espproxy == 0 && tokenValue != null && !tokenValue.isEmpty()) {
                    if (ServerUrl.indexOf("?") > -1) {
                        ServerUrl += "&token=" + tokenValue;
                    } else {
                        ServerUrl += "?token=" + tokenValue;
                    }
                    token = tokenValue;
                }
            }
            if(returnToken) return token;
            return ServerUrl;
        }
}
src/main/java/com/landtool/lanbase/common/scheduletask/ScheduelTask.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package com.landtool.lanbase.common.scheduletask;
import cn.hutool.core.collection.CollectionUtil;
import com.landtool.lanbase.common.utils.HttpUtils;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.Res_ProblemFeedback;
import com.landtool.lanbase.modules.res.service.impl.ResMainInfoServiceImpl;
import com.landtool.lanbase.modules.res.service.impl.ResProblemFeedbackServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.transaction.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import com.landtool.lanbase.modules.res.controller.ResMainInfoController;
import com.landtool.lanbase.modules.res.service.impl.ResExtMapUrlServiceImpl;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@Component
@Configuration
public class ScheduelTask {
    public Logger log=LoggerFactory.getLogger(ScheduelTask.class);
    @Autowired
    ResMainInfoServiceImpl resMainInfoService;
    @Autowired
    ResExtMapUrlServiceImpl resExtMapUrlService;
    @Autowired
    private ResProblemFeedbackServiceImpl resProblemFeedbackService;
    /*
     * å®šæ—¶æ£€éªŒæ­£å¸¸æœåŠ¡  å¼‚常服务更新
     * add by zsx
     * æ¯å¤©å‡Œæ™¨6点
     *  æŸ¥è¯¢æ‰€æœ‰èµ„源原始地址 http请求地址
     *     1.请求正常  å¦‚果资源之前状态为异常则更新正常
     *     2.请求异常  è‹¥å­˜åœ¨å¼‚常记录 åˆ™æ›´æ–°è®°å½•æ—¶é—´  å¦åˆ™æ’入一条新的记录  (对应资源状态为正常则更新为异常)
//     */
    @Scheduled(cron = "0 0 6 * * ?")
    public void checkServiceUrl() {
         //获取所有的服务资源
        List<Res_ExtMapUrl> list = resExtMapUrlService.checkAllUrls();
        log.info("服务监控开始");
        for (Res_ExtMapUrl res_extMapUrl : list) {
            int status=0;  //插入记录数据 serverStatus 0 æ­£å¸¸  1异常
            boolean flag=false;
            Integer resourceid = res_extMapUrl.getResourceid();
            Integer serverResource = res_extMapUrl.getServerResource();
            try {
                String serverurl = res_extMapUrl.getServerurl();
                if(StringUtils.isNotBlank(serverurl)){
                    String s = HttpUtils.get(serverurl);
                    //正常 å¦‚果存在之前异常数据则更新状态为正常
                    if(1== serverResource){
                        updateServerStatus(resourceid,status);
                    }
                }
            } catch (Exception e) {
                status=1;
                //异常抛出认为是服务不能正常使用 ä¹‹åŽå¼‚常不重复记录(更新校验时间),
                List<Res_ProblemFeedback> problemFeedbacks = resProblemFeedbackService.selectByResourceid(resourceid);
                if(!CollectionUtil.isNotEmpty(problemFeedbacks)){
                    flag=true;
                }
                //首次记录异常记录
                InsertProblem(resourceid,status,flag);
                //如果存在之前正常数据则更新状态为异常
                if(0== serverResource){
                    updateServerStatus(resourceid,status);
                }
            }
        }
        log.info("服务监控结束");
    }
    //更新异常记录状态
    private void updateServerStatus(Integer resourceid, Integer status) {
        Res_MainInfo mainInfo = new Res_MainInfo();
        mainInfo.setResourceid(resourceid);
        mainInfo.setResourcestatus(status); //状态更新回来
        resMainInfoService.updateByPrimaryKeySelective(mainInfo);
    }
    //插入问题消息
    private void InsertProblem(Integer resourceid, Integer status,Boolean flag) {
        Res_ProblemFeedback model = new Res_ProblemFeedback();
        java.sql.Timestamp time = new java.sql.Timestamp(new Date().getTime());
        model.setResourceid(resourceid);
        model.setAddtime(time);
        if (flag){
            model.setCreateuserid(0); //管理员操作
            model.setFeedbacktype("系统");
            model.setServerstatus(status);
            model.setFeedbackstatus("服务问题");
            model.setRemark("资源打不开");
            resProblemFeedbackService.insertSelective(model);
        }else {
            resProblemFeedbackService.updateByResourceId(model);
        }
    }
    public static void main(String[] args)  {
        try {
            HttpUtils.get("http://71.3.251.104:8066/arcgis/rest/services/6257/MapServer");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/common/shiro/CasAuthenticationFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,235 @@
/*
 * Licensed to Jasig under one or more contributor license
 * agreements. See the NOTICE file distributed with this work
 * for additional information regarding copyright ownership.
 * Jasig licenses this file to you under the Apache License,
 * Version 2.0 (the "License"); you may not use this file
 * except in compliance with the License.  You may obtain a
 * copy of the License at the following location:
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
package com.landtool.lanbase.common.shiro;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.jasig.cas.client.Protocol;
import org.jasig.cas.client.authentication.AuthenticationRedirectStrategy;
import org.jasig.cas.client.authentication.ContainsPatternUrlPatternMatcherStrategy;
import org.jasig.cas.client.authentication.DefaultAuthenticationRedirectStrategy;
import org.jasig.cas.client.authentication.DefaultGatewayResolverImpl;
import org.jasig.cas.client.authentication.ExactUrlPatternMatcherStrategy;
import org.jasig.cas.client.authentication.GatewayResolver;
import org.jasig.cas.client.authentication.RegexUrlPatternMatcherStrategy;
import org.jasig.cas.client.authentication.UrlPatternMatcherStrategy;
import org.jasig.cas.client.configuration.ConfigurationKeys;
import org.jasig.cas.client.util.AbstractCasFilter;
import org.jasig.cas.client.util.CommonUtils;
import org.jasig.cas.client.util.ReflectUtils;
import org.jasig.cas.client.validation.Assertion;
/**
 * Filter implementation to intercept all requests and attempt to authenticate
 * the user by redirecting them to CAS (unless the user has a ticket).
 * <p>
 * This filter allows you to specify the following parameters (at either the context-level or the filter-level):
 * <ul>
 * <li><code>casServerLoginUrl</code> - the url to log into CAS, i.e. https://cas.rutgers.edu/login</li>
 * <li><code>renew</code> - true/false on whether to use renew or not.</li>
 * <li><code>gateway</code> - true/false on whether to use gateway or not.</li>
 * </ul>
 *
 * <p>Please see AbstractCasFilter for additional properties.</p>
 *
 * @author Scott Battaglia
 * @author Misagh Moayyed
 * @since 3.0
 */
public class CasAuthenticationFilter extends AbstractCasFilter {
    /**
     * The URL to the CAS Server login.
     */
    private String casServerLoginUrl;
    /**
     * Whether to send the renew request or not.
     */
    private boolean renew = false;
    /**
     * Whether to send the gateway request or not.
     */
    private boolean gateway = false;
    private GatewayResolver gatewayStorage = new DefaultGatewayResolverImpl();
    private AuthenticationRedirectStrategy authenticationRedirectStrategy = new DefaultAuthenticationRedirectStrategy();
    private UrlPatternMatcherStrategy ignoreUrlPatternMatcherStrategyClass = null;
    private static final Map<String, Class<? extends UrlPatternMatcherStrategy>> PATTERN_MATCHER_TYPES =
            new HashMap<String, Class<? extends UrlPatternMatcherStrategy>>();
    static {
        PATTERN_MATCHER_TYPES.put("CONTAINS", ContainsPatternUrlPatternMatcherStrategy.class);
        PATTERN_MATCHER_TYPES.put("REGEX", RegexUrlPatternMatcherStrategy.class);
        PATTERN_MATCHER_TYPES.put("EXACT", ExactUrlPatternMatcherStrategy.class);
    }
    public CasAuthenticationFilter() {
        this(Protocol.CAS2);
    }
    protected CasAuthenticationFilter(final Protocol protocol) {
        super(protocol);
    }
    protected void initInternal(final FilterConfig filterConfig) throws ServletException {
        if (!isIgnoreInitConfiguration()) {
            super.initInternal(filterConfig);
            setCasServerLoginUrl(getString(ConfigurationKeys.CAS_SERVER_LOGIN_URL));
            setRenew(getBoolean(ConfigurationKeys.RENEW));
            setGateway(getBoolean(ConfigurationKeys.GATEWAY));
            final String ignorePattern = getString(ConfigurationKeys.IGNORE_PATTERN);
            final String ignoreUrlPatternType = getString(ConfigurationKeys.IGNORE_URL_PATTERN_TYPE);
            if (ignorePattern != null) {
                final Class<? extends UrlPatternMatcherStrategy> ignoreUrlMatcherClass = PATTERN_MATCHER_TYPES.get(ignoreUrlPatternType);
                if (ignoreUrlMatcherClass != null) {
                    this.ignoreUrlPatternMatcherStrategyClass = ReflectUtils.newInstance(ignoreUrlMatcherClass.getName());
                } else {
                    try {
                        logger.trace("Assuming {} is a qualified class name...", ignoreUrlPatternType);
                        this.ignoreUrlPatternMatcherStrategyClass = ReflectUtils.newInstance(ignoreUrlPatternType);
                    } catch (final IllegalArgumentException e) {
                        logger.error("Could not instantiate class [{}]", ignoreUrlPatternType, e);
                    }
                }
                if (this.ignoreUrlPatternMatcherStrategyClass != null) {
                    this.ignoreUrlPatternMatcherStrategyClass.setPattern(ignorePattern);
                }
            }
            final Class<? extends GatewayResolver> gatewayStorageClass = getClass(ConfigurationKeys.GATEWAY_STORAGE_CLASS);
            if (gatewayStorageClass != null) {
                setGatewayStorage(ReflectUtils.newInstance(gatewayStorageClass));
            }
            final Class<? extends AuthenticationRedirectStrategy> authenticationRedirectStrategyClass = getClass(ConfigurationKeys.AUTHENTICATION_REDIRECT_STRATEGY_CLASS);
            if (authenticationRedirectStrategyClass != null) {
                this.authenticationRedirectStrategy = ReflectUtils.newInstance(authenticationRedirectStrategyClass);
            }
        }
    }
    public void init() {
        super.init();
        CommonUtils.assertNotNull(this.casServerLoginUrl, "casServerLoginUrl cannot be null.");
    }
    public final void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse,
            final FilterChain filterChain) throws IOException, ServletException {
        final HttpServletRequest request = (HttpServletRequest) servletRequest;
        final HttpServletResponse response = (HttpServletResponse) servletResponse;
       //String loginNamd=   AssertionHolder.getAssertion().getPrincipal().getName();
        String username = request.getRemoteUser();
        if (!StringUtils.isBlank(username)) {
            return ;
        }
        if (isRequestUrlExcluded(request)) {
            logger.debug("Request is ignored.");
            filterChain.doFilter(request, response);
            return;
        }
        final HttpSession session = request.getSession(false);
        final Assertion assertion = session != null ? (Assertion) session.getAttribute(CONST_CAS_ASSERTION) : null;
        if (assertion != null) {
            filterChain.doFilter(request, response);
            return;
        }
        final String serviceUrl = constructServiceUrl(request, response);
        final String ticket = retrieveTicketFromRequest(request);
        final boolean wasGatewayed = this.gateway && this.gatewayStorage.hasGatewayedAlready(request, serviceUrl);
        if (CommonUtils.isNotBlank(ticket) || wasGatewayed) {
            filterChain.doFilter(request, response);
            return;
        }
        final String modifiedServiceUrl;
        logger.debug("no ticket and no assertion found");
        if (this.gateway) {
            logger.debug("setting gateway attribute in session");
            modifiedServiceUrl = this.gatewayStorage.storeGatewayInformation(request, serviceUrl);
        } else {
            modifiedServiceUrl = serviceUrl;
        }
        logger.debug("Constructed service url: {}", modifiedServiceUrl);
        final String urlToRedirectTo = CommonUtils.constructRedirectUrl(this.casServerLoginUrl,
                getProtocol().getServiceParameterName(), modifiedServiceUrl, this.renew, this.gateway);
        logger.debug("redirecting to \"{}\"", urlToRedirectTo);
        this.authenticationRedirectStrategy.redirect(request, response, urlToRedirectTo);
    }
    public final void setRenew(final boolean renew) {
        this.renew = renew;
    }
    public final void setGateway(final boolean gateway) {
        this.gateway = gateway;
    }
    public final void setCasServerLoginUrl(final String casServerLoginUrl) {
        this.casServerLoginUrl = casServerLoginUrl;
    }
    public final void setGatewayStorage(final GatewayResolver gatewayStorage) {
        this.gatewayStorage = gatewayStorage;
    }
    private boolean isRequestUrlExcluded(final HttpServletRequest request) {
        if (this.ignoreUrlPatternMatcherStrategyClass == null) {
            return false;
        }
        final StringBuffer urlBuffer = request.getRequestURL();
        if (request.getQueryString() != null) {
            urlBuffer.append("?").append(request.getQueryString());
        }
        final String requestUri = urlBuffer.toString();
        return this.ignoreUrlPatternMatcherStrategyClass.matches(requestUri);
    }
}
src/main/java/com/landtool/lanbase/common/shiro/ShiroAuthenticatingFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,246 @@
package com.landtool.lanbase.common.shiro;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.HttpStatus;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.StringUtils;
import org.apache.shiro.web.filter.authc.AuthenticatingFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMethod;
import com.google.gson.Gson;
import com.landtool.lanbase.common.utils.HttpUtils;
import com.landtool.lanbase.common.utils.Result;
/**
 * @author lanbase
 * @Description: TODO(shiro è®¤è¯è¿‡æ»¤å™¨)
 * @date 2017-6-23 15:07
 */
public class ShiroAuthenticatingFilter extends AuthenticatingFilter {
    private static  String loginUrl; // http://127.0.0.1:8082/login
    private static String CasHost;// https://cas.nmsmp.com/cas/
    private Logger logger = LoggerFactory.getLogger(getClass());
    public ShiroAuthenticatingFilter(String loginUrl,String casHost)
    {
        this.loginUrl=loginUrl;
        this.CasHost=casHost;
    }
    // åˆ›å»ºshiro认证的token
    @Override
    protected AuthenticationToken createToken(ServletRequest request, ServletResponse response) throws Exception {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String username = httpRequest.getRemoteUser();
        // èŽ·å–è¯·æ±‚token
        String token = getRequestToken((HttpServletRequest) request);
        ShiroToken shiroToken = null;
//        if (!StringUtils.isBlank(token)) {
//            shiroToken = new ShiroToken(token);
//        } else if (!StringUtils.isBlank(username)) {
//            shiroToken = new ShiroToken(username, true);
//        } else {
//            return null;
//        }
        return shiroToken;
    }
    // protected boolean preHandle(ServletRequest request, ServletResponse
    // response) throws Exception {
    // HttpServletRequest httpRequest = WebUtils.toHttp(request);
    // HttpServletResponse httpResponse = WebUtils.toHttp(response);
    // if (httpRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
    // httpResponse.setHeader("Access-control-Allow-Origin", origin);
    // httpResponse.setHeader("Access-Control-Allow-Methods",
    // httpRequest.getMethod());
    // httpResponse.setHeader("Access-Control-Allow-Headers",
    // httpRequest.getHeader("Access-Control-Request-Headers"));
    // httpResponse.setStatus(HttpStatus.OK.value());
    // return false;
    // }
    // return super.preHandle(request, response);
    // }
    // æ˜¯å¦å…è®¸è®¿é—®
    @Override
    protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
        return false;
    }
    // æ‹’绝访问的出来
    @Override
    protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        // å¤„理CORS的options请求 by Tanbin
        if (httpRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
            String origin = httpRequest.getHeader("Origin");
            httpResponse.setHeader("Access-control-Allow-Origin", origin);
            httpResponse.setHeader("Access-Control-Allow-Methods", httpRequest.getMethod());
            httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
            httpResponse.setHeader("Access-Control-Allow-Headers",
                    httpRequest.getHeader("Access-Control-Request-Headers"));
            httpResponse.setStatus(HttpStatus.SC_OK);
            return false;
        }
        String username = httpRequest.getRemoteUser();
        if (StringUtils.hasText(username)) {// å·²ç»ç™»å½•shiro
            logger.debug("0----已经登录shiro:" + username);
             return true ;
        } else {
            username = getLoginNamefromXml(httpRequest);
            if (StringUtils.hasText(username)) {
                Subject subject = SecurityUtils.getSubject();
                ShiroToken shiroToken = new ShiroToken(username, true);
                 if(!subject.isAuthenticated())
                 {
                     subject.login(shiroToken);
                     logger.debug("8----loginshiro:" );
                 }
                String redirectUrl=     getValidateTicketServer(httpRequest);
                logger.debug("3----RedirectOldurl:" + redirectUrl);
                //WebUtils.issueRedirect(request, response, oldUrl);
                httpResponse.setHeader("P3P", "CP=CAO PSA OUR");
                httpResponse.sendRedirect(redirectUrl);
            } else {
                String reloginUrl=    getFirstServer(httpRequest);
                reloginUrl=    CasHost +  "login?service="+URLEncoder.encode( reloginUrl);
                logger.debug("1----RedirectCasloginUrl:" + reloginUrl);
                httpResponse.sendRedirect(reloginUrl);// ç”¨æˆ·åä¸å­˜åœ¨è·³è½¬å›žç™»å½•页面
                return false;
            }
        }
        return true ;
    }
    @Override
    protected boolean onLoginFailure(AuthenticationToken token, AuthenticationException e, ServletRequest request,
            ServletResponse response) {
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setContentType("application/json;charset=utf-8");
        try {
            // å¤„理登录失败的异常
            Throwable throwable = e.getCause() == null ? e : e.getCause();
            Result r = Result.error(HttpStatus.SC_UNAUTHORIZED, throwable.getMessage());
            String json = new Gson().toJson(r);
            httpResponse.getWriter().print(json);
        } catch (IOException e1) {
        }
        return false;
    }
    /**
     * èŽ·å–è¯·æ±‚çš„token
     */
    private String getRequestToken(HttpServletRequest httpRequest) {
        // ä»Žheader中获取token
        String token = httpRequest.getHeader("token");
        // å¦‚æžœheader中不存在token,则从参数中获取token
        if (!StringUtils.hasText(token)) {
            token = httpRequest.getParameter("token");
        }
        return token;
    }
    private String getLoginNamefromXml(HttpServletRequest request) throws Exception {
        String username = "";
        Subject subject = SecurityUtils.getSubject();
        Session session =subject.getSession(true);
        username = session.getAttribute("shirousername") == null ? ""
                : session.getAttribute("shirousername").toString();
        logger.debug("4----shirousername:" + session.getAttribute("shirousername") +(session.getId() ));
        if (org.springframework.util.StringUtils.isEmpty(username)) {
            String ticket = request.getParameter("ticket");
            if (!org.springframework.util.StringUtils.isEmpty(ticket)) {
                String reloginUrl=     getValidateTicketServer(request);
                String url = CasHost.replace("https", "http");
                String validateurl = url + "serviceValidate?ticket=" + ticket + "&service=" +  URLEncoder.encode(reloginUrl);
                logger.debug("2----ServiceValidate:" + validateurl);
                String casxml;
                casxml = HttpUtils.get(validateurl);
                logger.debug(casxml);
                Integer index = casxml.indexOf("<cas:user>");
                Integer end = casxml.indexOf("</cas:user>");
                if (index > 0) {
                    username = casxml.substring(index + 10, end);
                }
            }
        }
        return username;
    }
    private String getValidateTicketServer(HttpServletRequest request) {
        String server = getServerParameter(request);
        String reloginUrl=     request.getRequestURL().toString();
        if(StringUtils.hasText(  server))
        {
            reloginUrl+="?"+server;
        }
        return reloginUrl;
    }
    private String getServerParameter(HttpServletRequest request) {
        String server = request.getQueryString();
        String ticket = request.getParameter("ticket");
        if (!org.springframework.util.StringUtils.isEmpty(ticket)) {
            server = server.replace("ticket=" + ticket, "");
            if (server.endsWith("&"))
                server = server.substring(0, server.length() - 1);
        }
        return server;
    }
    /***
     * èŽ·å–åŽŸå§‹è®¿é—®è·¯å¾„
     *
     * @return
     */
    private String getFirstServer(HttpServletRequest httpRequest) {
        String reloginUrl=     httpRequest.getRequestURL().toString();
        if(StringUtils.hasText( httpRequest.getQueryString()))
        {
            reloginUrl+="?"+httpRequest.getQueryString();
        }
        return reloginUrl;
    }
}
src/main/java/com/landtool/lanbase/common/shiro/ShiroCasRealm.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
//package com.landtool.lanbase.common.shiro;
//
//import java.util.Set;
//
//import org.apache.shiro.authz.AuthorizationInfo;
//import org.apache.shiro.authz.SimpleAuthorizationInfo;
//import org.apache.shiro.cas.CasRealm;
//import org.apache.shiro.subject.PrincipalCollection;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import com.landtool.lanbase.modules.org.entity.OrgUser;
//import com.landtool.lanbase.modules.sys.service.OrgUserService;
//
//public class ShiroCasRealm extends CasRealm{
//
//    private static final Logger logger = LoggerFactory.getLogger(ShiroCasRealm.class);
//
//    @Autowired
//    private OrgUserService OrgUserService;
//
////    @PostConstruct
////    public void initProperty(){
//////      setDefaultRoles("ROLE_USER");
////        setCasServerUrlPrefix(ShiroCasConfiguration.casServerUrlPrefix);
////        // å®¢æˆ·ç«¯å›žè°ƒåœ°å€
////        setCasService(ShiroCasConfiguration.shiroServerUrlPrefix + ShiroCasConfiguration.casFilterUrlPattern);
////    }
//
//    /**
//     * æƒé™è®¤è¯ï¼Œä¸ºå½“前登录的Subject授予角色和权限
//     * @see ç»æµ‹è¯•:本例中该方法的调用时机为需授权资源被访问时
//     * @see ç»æµ‹è¯•:并且每次访问需授权资源时都会执行该方法中的逻辑,这表明本例中默认并未启用AuthorizationCache
//     * @see ç»æµ‹è¯•:如果连续访问同一个URL(比如刷新),该方法不会被重复调用,Shiro有一个时间间隔(也就是cache时间,在ehcache-shiro.xml中配置),超过这个时间间隔再刷新页面,该方法会被执行
//     */
//    @Override
//    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
//        logger.info("##################执行Shiro权限认证##################");
//        //获取当前登录输入的用户名,等价于(String) principalCollection.fromRealm(getName()).iterator().next();
//        String loginName = (String)super.getAvailablePrincipal(principalCollection);
//        //到数据库查是否有此对象
////        User user=userDao.findByName(loginName);// å®žé™…项目中,这里可以根据实际情况做缓存,如果不做,Shiro自己也是有时间间隔机制,2分钟内不会重复执行该方法
//        //用户信息
//        OrgUser user = OrgUserService.queryByUserName(loginName);
//        //账号不存在
////        if(user == null) {
////            ShiroUtils.setSessionAttribute(Constant.LOGIN_ERROR_TIMES, ++errorTimes);
////            return Result.error("账号不存在").put("errorTimes", errorTimes);
////        }
//        if(user!=null){
//            Long userId = user.getId();
//            //用户权限列表
//            Set<String> permsSet = OrgUserService.getUserPermissions(userId);
//            SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
//            info.setStringPermissions(permsSet);
//
//            //权限信息对象info,用来存放查出的用户的所有的角色(role)及权限(permission)
////            SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
//            //用户的角色集合
////            info.setRoles(user.getRolesName());
////            //用户的角色对应的所有权限,如果只使用角色定义访问权限,下面的四行可以不要
////            List<Role> roleList=user.getRoleList();
////            for (Role role : roleList) {
////                info.addStringPermissions(role.getPermissionsName());
////            }
//            // æˆ–者按下面这样添加
//            //添加一个角色,不是配置意义上的添加,而是证明该用户拥有admin角色
////            simpleAuthorInfo.addRole("admin");
//            //添加权限
////            simpleAuthorInfo.addStringPermission("admin:manage");
////            logger.info("已为用户[mike]赋予了[admin]角色和[admin:manage]权限");
//            return info;
//        }
//        // è¿”回null的话,就会导致任何用户访问被拦截的请求时,都会自动跳转到unauthorizedUrl指定的地址
//        return null;
//    }
//
//}
src/main/java/com/landtool/lanbase/common/shiro/ShiroRealm.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.landtool.lanbase.common.shiro;
import java.util.Set;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.ExpiredCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.landtool.lanbase.common.Constant;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.sys.entity.SysUserToken;
import com.landtool.lanbase.modules.sys.service.SysUserTokenService;
/**
 * @author lanbase
 * @Description: TODO(认证)
 * @date 2017-6-23 15:07
 */
@Component
public class ShiroRealm extends AuthorizingRealm {
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private SysUserTokenService sysUserTokenService;
    @Override
    public boolean supports(AuthenticationToken token) {
        return token instanceof ShiroToken;
    }
    /**
     * æŽˆæƒ
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        OrgUser user = (OrgUser)principals.getPrimaryPrincipal();
        Long userId = user.getUserid();
        //用户权限列表
        Set<String> permsSet = orgUserService.getUserPermissions(userId);
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        info.setStringPermissions(permsSet);
        return info;
    }
    /**
     * è®¤è¯
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        ShiroToken accessToken = (ShiroToken) token;
        OrgUser user;
        if (!accessToken.IsCasToken()) {
            // æ ¹æ®accessToken,查询用户信息
            SysUserToken tokenEntity = sysUserTokenService.queryByToken(accessToken.getPrincipal());
            // token失效
            if (tokenEntity == null || tokenEntity.getExpireTime().getTime() < System.currentTimeMillis()) {
                throw new ExpiredCredentialsException("token失效,请重新登录");
            }
            user = orgUserService.queryObject(tokenEntity.getUserId());
        }
        else
        {
            //用户信息
            user = orgUserService.queryByUserName(accessToken.getPrincipal());
        }
        //账号锁定
        if(Constant.UserStatus.DISABLE.getValue()==user.getUserstatus()){
            throw new LockedAccountException("账号已被锁定,请联系管理员");
        }
        SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, token.getPrincipal(), getName());
        return info;
    }
}
src/main/java/com/landtool/lanbase/common/shiro/ShiroToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.landtool.lanbase.common.shiro;
import org.apache.shiro.authc.AuthenticationToken;
/**
 * @author lanbase
 * @Description: TODO(token)
 * @date 2017-6-23 15:07
 */
public class ShiroToken implements AuthenticationToken {
    private String token;
    private boolean isCasToken;
    public ShiroToken(String token) {
        this.token = token;
        this.isCasToken = false;
    }
    public ShiroToken(String token, boolean isCasToken) {
        this.token = token;
        this.isCasToken = isCasToken;
    }
    @Override
    public String getPrincipal() {
        return token;
    }
    @Override
    public Object getCredentials() {
        return token;
    }
    public boolean IsCasToken() {
        return isCasToken;
    }
}
src/main/java/com/landtool/lanbase/common/shiro/TokenGenerator.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package com.landtool.lanbase.common.shiro;
import java.security.MessageDigest;
import java.util.UUID;
import com.landtool.lanbase.common.exception.LanbaseException;
/**
 * @author lanbase
 * @Description: TODO(生成token)
 * @date 2017-6-23 15:07
 */
public class TokenGenerator {
    public static String generateValue() {
        return generateValue(UUID.randomUUID().toString());
    }
    private static final char[] hexCode = "0123456789abcdef".toCharArray();
    public static String toHexString(byte[] data) {
        if(data == null) {
            return null;
        }
        StringBuilder r = new StringBuilder(data.length*2);
        for ( byte b : data) {
            r.append(hexCode[(b >> 4) & 0xF]);
            r.append(hexCode[(b & 0xF)]);
        }
        return r.toString();
    }
    public static String generateValue(String param) {
        try {
            MessageDigest algorithm = MessageDigest.getInstance("MD5");
            algorithm.reset();
            algorithm.update(param.getBytes());
            byte[] messageDigest = algorithm.digest();
            return toHexString(messageDigest);
        } catch (Exception e) {
            throw new LanbaseException("生成Token失败", e);
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/AttachmentUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
/**
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.landtool.lanbase.common.utils;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
/**
 * @author lanbase
 * @Description: TODO(attachment文件处理)
 * @date 2017-6-23 15:07
 */
public class AttachmentUtils {
    static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    /**
     * åˆ›å»ºæ–‡ä»¶å
     * @param suffix
     * @return
     */
    public static String newFileName(String suffix){
        String webRoot = FileUtils.getTempPath();
        String uuid = UUID.randomUUID().toString().replace("-", "");
        StringBuilder newFileName = new StringBuilder(webRoot).append(File.separator).append("attachment")
                .append(File.separator).append(dateFormat.format(new Date())).append(File.separator).append(uuid)
                .append(suffix);
        File newfile = new File(newFileName.toString());
        if (!newfile.getParentFile().exists()) {
            newfile.getParentFile().mkdirs();
        }
        return newFileName.toString();
    }
    /**
     * åˆ›å»ºæ–‡ä»¶å
     * @param suffix
     * @param root
     * @param category
     * @return
     */
    public static String newFileName(String suffix,String root,String category){
        String webRoot = root;
        String uuid = UUID.randomUUID().toString().replace("-", "");
        StringBuilder newFileName = new StringBuilder(webRoot).append(File.separator).append("attachment")
                .append(File.separator).append(category).append(File.separator).append(uuid)
                .append(suffix);
        File newfile = new File(newFileName.toString());
        if (!newfile.getParentFile().exists()) {
            newfile.getParentFile().mkdirs();
        }
        return newFileName.toString();
    }
    static List<String> imageSuffix = new ArrayList<String>();
    static {
        imageSuffix.add(".jpg");
        imageSuffix.add(".jpeg");
        imageSuffix.add(".png");
        imageSuffix.add(".bmp");
        imageSuffix.add(".gif");
    }
    public static boolean isImage(String path) {
        String sufffix = FileUtils.getSuffix(path);
        if (StringUtils.isNotBlank(sufffix))
            return imageSuffix.contains(sufffix.toLowerCase());
        return false;
    }
}
src/main/java/com/landtool/lanbase/common/utils/CoderUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,181 @@
package com.landtool.lanbase.common.utils;
import java.security.MessageDigest;
import java.util.Base64;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
//import sun.misc.BASE64Decoder;
//import sun.misc.BASE64Encoder;
/**
 * åŸºç¡€åŠ å¯†ç»„ä»¶
 * @author TanBin
 */
public abstract class CoderUtils {
    public static final String KEY_SHA = "SHA";
    public static final String KEY_MD5 = "MD5";
    /**
     * MAC算法可选以下多种算法
     * <pre>
     * HmacMD5
     * HmacSHA1
     * HmacSHA256
     * HmacSHA384
     * HmacSHA512
     * </pre>
     */
    public static final String KEY_MAC = "HmacMD5";
    /**
     * BASE64加密
     * @param key
     * @return
     * @throws Exception
     */
    public static String encryptBASE64(byte[] data) {
        //text.getBytes("UTF-8"); new String(decoder.decode(encodedText), "UTF-8")
        //法1:使用sun.misc套件。1.6之前, æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//        return (new BASE64Encoder()).encodeBuffer(data);
        //法2:使用Apache Commons Codec。
//        return (new Base64()).encodeToString(data);
        //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
        return Base64.getEncoder().encodeToString(data);
    }
    /**
     * BASE64解密
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptBASE64(String key) {
        //法1:使用sun.misc套件。 æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//        return (new BASE64Decoder()).decodeBuffer(key);
        //法2:使用Apache Commons Codec。
//      return (new Base64()).decode(key);
      //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
      return Base64.getDecoder().decode(key);
    }
    /**
     * MD5加密
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptMD5(byte[] data) throws Exception{
        MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
        md5.update(data);
        return md5.digest();
    }
    /**
     * è“å›¾çš„MD5加密算法
     * @param text
     * @return
     * @throws Exception
     */
    public static String lantuEncryptMD5(String text) throws Exception{
        byte[] b = encryptMD5(text.getBytes("UTF-8"));
        String key = convertToHexString(b);
        //转为大写
        key = key.toUpperCase();
        //倒序
        char[] array = key.toCharArray();
        String reverseKey = "";
        for (int i = array.length-1; i >= 0; i--) {
            reverseKey += array[i];
        }
        return reverseKey;
    }
    /**
     * å­—节数组转为32位字符串
     * @param data
     * @return
     */
    private static String convertToHexString(byte data[]) {
        StringBuffer strBuffer = new StringBuffer();
        for (int i = 0; i < data.length; i++) {
            //strBuffer.append(Integer.toHexString(0xff & data[i]));    //30bit
            String haxHex = Integer.toHexString(data[i] & 0xFF);
            if(haxHex.length() < 2){
                strBuffer.append("0");
            }
            strBuffer.append(haxHex);
        }
        return strBuffer.toString();
    }
    /**
     * SHA加密
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptSHA(byte[] data) throws Exception{
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
        sha.update(data);
        return sha.digest();
    }
    /**
     * åˆå§‹åŒ–HMAC密钥
     * @return
     * @throws Exception
     */
    public static String initMacKey() throws Exception{
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
        SecretKey secretKey = keyGenerator.generateKey();
        return encryptBASE64(secretKey.getEncoded());
    }
    /**
     * HMAC加密
     * @param data
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        mac.init(secretKey);
        return mac.doFinal(data);
    }
    public static void main(String[] args) {
        String inputStr = "123456";
        System.err.println("原文:" + inputStr);
        try {
            String codeBASE64 = encryptBASE64(inputStr.getBytes("UTF-8"));
            String codeMD5 = lantuEncryptMD5(inputStr);
            byte[] codeSHA = encryptSHA(inputStr.getBytes("UTF-8"));
            String key = initMacKey();
            System.err.println("Mac密钥:" + key);
            byte[] codeHMAC = encryptHMAC(inputStr.getBytes("UTF-8"), key);
            System.err.println("\nBASE64:" + codeBASE64);
            System.err.println("BASE64解密:" + new String(decryptBASE64(codeBASE64),"UTF-8"));
            System.err.println("MD5:" + codeMD5);
            System.err.println("SHA:" + codeSHA);
            System.err.println("HMAC:" + codeHMAC);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/CommonUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.landtool.lanbase.common.utils;
public class CommonUtils {
    public static String subStringUtils(String str, int end) {
        int length = 0;
        char[] ch = str.toCharArray();
        String str2 = "";
        for (int i = 0; i < str.length(); i++) {
            int num = str.codePointAt(i);
            if (num >= 0 && num <= 255) {
                length++;
            } else {
                length += 2;
            }
            if (length < end) {
                str2 += ch[i];
            } else if (length == end) {
                str2 += ch[i];
                if (i < str.length() - 1) {
                    str2 += "...";
                }
                break;
            } else {
                break;
            }
        }
        return str2;
    }
    /**
     * ä¸­æ–‡è½¬Unicode
     * @param gbString è½¬æ¢ä¸­æ–‡å­—符串
     * @return è½¬æ¢åŽUnicode
     */
    public static String gbEncoding(final String gbString) {
        char[] utfBytes = gbString.toCharArray();
        String unicodeBytes = "";
        for(int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) {
            String hexB = Integer.toHexString(utfBytes[byteIndex]);//转换为16进制整型字符串
            if(hexB.length() <= 2) {
                hexB = "00" + hexB;
            }
            unicodeBytes = unicodeBytes + "\\u" + hexB;
        }
        return unicodeBytes;
    }
    /**
     * Unicode转中文
     * @param dataStr Unicode字符串
     * @return è½¬æ¢åŽä¸­æ–‡
     */
    public static String decodeUnicode(final String dataStr) {
        int start = 0;
        int end = 0;
        final StringBuffer buffer = new StringBuffer();
        while (start > -1){
            end = dataStr.indexOf("\\u", start + 2);
            String charStr = "";
            if(end == -1) {
                charStr = dataStr.substring(start +2, dataStr.length());
            } else {
                charStr = dataStr.substring(start + 2, end);
            }
            char letter = (char) Integer.parseInt(charStr, 16);
            buffer.append(new Character(letter).toString());
            start = end;
        }
        return buffer.toString();
    }
}
src/main/java/com/landtool/lanbase/common/utils/DateUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.landtool.lanbase.common.utils;
import java.security.InvalidParameterException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(日期处理)
 * @date 2017-6-23 15:07
 */
public class DateUtils {
    /** æ—¶é—´æ ¼å¼(yyyy-MM-dd) */
    public final static String DATE_PATTERN = "yyyy-MM-dd";
    /** æ—¶é—´æ ¼å¼(yyyy-MM-dd HH:mm:ss) */
    public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
    public static String format(Date date) {
        return format(date, DATE_PATTERN);
    }
    public static String format(Date date, String pattern) {
        if(date != null){
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }
    /**
     * ç»Ÿè®¡ä¸¤ä¸ªæ—¥æœŸä¹‹é—´åŒ…含的天数。
     *
     * @param date1
     * @param date2
     * @return
     */
    public static int getDayDiff(Date date1, Date date2) {
        if (date1 == null || date2 == null) {
            throw new InvalidParameterException("date1 and date2 cannot be null!");
        }
        long millSecondsInOneDay = 24 * 60 * 60 * 1000;
        return (int) ((date1.getTime() - date2.getTime()) / millSecondsInOneDay);
    }
    //根据选择时间补全系统时分秒
    public static Timestamp getFunllDate(Timestamp selectDate){
        if(selectDate != null){
            String dateStr = selectDate.toString().substring(0,10);
            //系统时间时分秒
            Calendar sysdate = Calendar.getInstance();
            dateStr += " "+ sysdate.get(Calendar.HOUR_OF_DAY) + ":"
                    + sysdate.get(Calendar.MINUTE) + ":"
                    + sysdate.get(Calendar.SECOND);
            return Timestamp.valueOf(dateStr);
        }else{
            return  selectDate;
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/EsriTokenUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.landtool.lanbase.common.utils;
import java.io.IOException;
/**
 * esri token å¸®åŠ©ç±»
 * Xiexx 2018.3.30
 */
public class EsriTokenUtils {
    /**
     * èŽ·å–Esri Token
     * @param requestUri
     * @param UserName
     * @param PassWord
     * @param ClientId
     * @return Token(String)
     */
    public static String GetEsriServerToken(String requestUri, String UserName, String PassWord, String ClientId) throws IOException {
        String token = "";   //返回对象
        String infoUrl = ""; //请求地址
        if(requestUri.toLowerCase().contains("/generatetoken")) {
            String tokenResponse = HttpOperateUtils.httpGet(requestUri);
            token = getJsonValue(tokenResponse, "token");
            return token;
        } else {
            if(requestUri.toLowerCase().contains("/rest/")) {
                infoUrl = requestUri.substring(0, requestUri.toLowerCase().indexOf("/rest/"));
            }
            else if (requestUri.toLowerCase().contains("/sharing/")) {
                infoUrl = requestUri.substring(0, requestUri.toLowerCase().indexOf("/sharing/"));
                infoUrl = infoUrl + "/sharing";
            }
        }
        if (infoUrl != ""){
            infoUrl += "/rest/info?f=json";
            String infoResponse = HttpOperateUtils.httpGet(infoUrl);
            String tokenServiceUri = getJsonValue(infoResponse, "tokenServicesUrl");
            if (tokenServiceUri != null && !tokenServiceUri.isEmpty())
            {
                String owningSystemUrl = getJsonValue(infoResponse, "owningSystemUrl");
                if (owningSystemUrl != null && !owningSystemUrl.isEmpty())
                {
                    tokenServiceUri = owningSystemUrl + "/sharing/generateToken";
                }
            }
            if (tokenServiceUri != null && tokenServiceUri != "")
            {
                String tokenExpiration = "3600";//Token有效时间(分钟)
                String uri = tokenServiceUri + "?f=json&request=getToken&&client=referer&referer=" + ClientId + "&expiration="+ tokenExpiration + "&username=" + UserName + "&password=" + PassWord;
                String tokenResponse = HttpOperateUtils.httpGet(uri);
                token = getJsonValue(tokenResponse, "token");
            }
        }
        return token;
    }
    //获取Json指定Key的值
    private static String getJsonValue(String text, String key)
    {
        int i = text.indexOf(key);//获取Key位置
        String value = "";
        if (i > -1)
        {
            value = text.substring(text.indexOf(':', i) + 1).trim();
            value = value.length() > 0 && value.startsWith("\"") ?
                    value.substring(1, value.indexOf('"', 1) - 1) :
                    value.substring(0, Math.max(0, Math.min(Math.min(value.indexOf(","), value.indexOf("]")), value.indexOf("}"))));
        }
        return value;
    }
}
src/main/java/com/landtool/lanbase/common/utils/FieldUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
//package com.landtool.lanbase.common.utils;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.landtool.lanbase.config.SysTemPropertyConfig;
//import com.landtool.lanbase.modules.sys.entity.SysFieldvalue;
//import com.landtool.lanbase.modules.sys.entity.SysResource;
//
//import org.apache.http.HttpEntity;
//import org.apache.http.HttpResponse;
//import org.apache.http.client.HttpClient;
//import org.apache.http.client.methods.HttpGet;
//import org.apache.http.impl.client.DefaultHttpClient;
//import org.apache.http.util.EntityUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.LinkedHashMap;
//import java.util.List;
//
///**
// * @author lanCatalog
// * @Description: TODO(获取字典信息)
// * @date 2018-3-22 15:09
// */
//public class FieldUtils {
//    /**
//     * æ ¹æ®å­—å…¸key获取对应字典值
//     * @param Key
//     * @return
//     */
//    public static LinkedHashMap<String, String> getFieldListByKey(String Key, SysTemPropertyConfig  sysConfig) {
//
//        LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
//        List<SysFieldvalue> permsList = new ArrayList<SysFieldvalue>();
//        try {
//            String url =sysConfig.getApiServer()+ "/api/sys/field/queryListByKey/" + Key;
//            permsList= HttpOperateUtils.getJsonObjectArray(url,SysFieldvalue.class);
//             if (permsList != null) {
//                 for (int i = 0; i < permsList.size(); i++) {
//                     SysFieldvalue item = permsList.get(i);
//                     String key =item.getVcode();
//                     String value =item.getVtext();
//                     map.put(key, value);
//                 }
//             }
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return map;
//    }
//}
src/main/java/com/landtool/lanbase/common/utils/FileUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,301 @@
/**
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.landtool.lanbase.common.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import javax.servlet.http.HttpServletResponse;
import com.landtool.lanbase.common.Constant;
import com.landtool.lanbase.common.exception.LanbaseException;
/**
 * @author lanbase
 * @Description: TODO(文件处理)
 * @date 2017-6-23 15:07
 */
public class FileUtils {
    public static String getSuffix(String fileName) {
        if (fileName != null && fileName.contains(".")) {
            return fileName.substring(fileName.lastIndexOf("."));
        }
        return null;
    }
    public static String removePrefix(String src, String prefix) {
        if (src != null && src.startsWith(prefix)) {
            return src.substring(prefix.length());
        }
        return src;
    }
    public static String readString(File file) {
        ByteArrayOutputStream baos = null;
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(file);
            baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            for (int len = 0; (len = fis.read(buffer)) > 0;) {
                baos.write(buffer, 0, len);
            }
            return new String(baos.toByteArray(), Constant.ENCODING_UTF_8);
        } catch (Exception e) {
        } finally {
            close(fis, baos);
        }
        return null;
    }
    public static void writeString(File file, String string) {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream(file, false);
            fos.write(string.getBytes(Constant.ENCODING_UTF_8));
        } catch (Exception e) {
        } finally {
            close(null, fos);
        }
    }
    private static void close(InputStream is, OutputStream os) {
        if (is != null)
            try {
                is.close();
            } catch (IOException e) {
            }
        if (os != null)
            try {
                os.close();
            } catch (IOException e) {
            }
    }
    public static void unzip(String zipFilePath) throws IOException {
        String targetPath = zipFilePath.substring(0, zipFilePath.lastIndexOf("."));
        unzip(zipFilePath, targetPath);
    }
    public static void unzip(String zipFilePath, String targetPath) throws IOException {
        ZipFile zipFile = new ZipFile(zipFilePath);
        try{
            Enumeration<?> entryEnum = zipFile.entries();
            if (null != entryEnum) {
                while (entryEnum.hasMoreElements()) {
                    OutputStream os = null;
                    InputStream is = null;
                    try {
                        ZipEntry zipEntry = (ZipEntry) entryEnum.nextElement();
                        if (!zipEntry.isDirectory()) {
                            File targetFile = new File(targetPath + File.separator + zipEntry.getName());
                            if (!targetFile.getParentFile().exists()) {
                                targetFile.getParentFile().mkdirs();
                            }
                            os = new BufferedOutputStream(new FileOutputStream(targetFile));
                            is = zipFile.getInputStream(zipEntry);
                            byte[] buffer = new byte[4096];
                            int readLen = 0;
                            while ((readLen = is.read(buffer, 0, 4096)) > 0) {
                                os.write(buffer, 0, readLen);
                            }
                        }
                    } finally {
                        if (is != null)
                            is.close();
                        if (os != null)
                            os.close();
                    }
                }
            }
        }finally{
            zipFile.close();
        }
    }
    /**
     * èŽ·å–ä¸´æ—¶ç›®å½•
     */
    public static String getTempPath(){
        return System.getProperty("java.io.tmpdir");
    }
    /**
     * æ–‡ä»¶ä¸‹è½½
     * @param path
     * @param fileName
     * @param response
     */
    public static void download(String path, String fileName, HttpServletResponse response){
        File file=new File(path);
        if(!file.exists()){
            throw new LanbaseException("文件不存在");
        }else{
            response.setContentType("application/force-download");
            response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
            byte[] buffer = new byte[1024];
            FileInputStream fis = null;
            BufferedInputStream bis = null;
            OutputStream os = null;
            try {
                os = response.getOutputStream();
                fis = new FileInputStream(file);
                bis = new BufferedInputStream(fis);
                int i = bis.read(buffer);
                while(i != -1){
                    os.write(buffer);
                    i = bis.read(buffer);
                }
            } catch (Exception e) {
                throw new LanbaseException("系统异常");
            } finally {
                try {
                    os.close();
                    bis.close();
                    fis.close();
                } catch (Exception e) {
                    throw new LanbaseException("系统异常");
                }
            }
        }
    }
    //文件临时文件处理
    public static void main(String[] args) {
        String fileName = "D:\\uploadFiles\\resource\\FileSource\\wenjianjia\\201805\\1665";
        final long start = System.nanoTime();
        final long total =getTotalSizeOfFilesInDir(new File(fileName));
        final long end = System.nanoTime();
        System.out.println("Total Size: " + total);
        System.out.println("Time taken: " + (end - start) / 1.0e9);
    }
    public static void copy(File file, File toFile) throws Exception {
        byte[] b = new byte[1024];
        int a;
        FileInputStream fis;
        FileOutputStream fos;
        if (file.isDirectory()) {
            String filepath = file.getAbsolutePath();
            filepath=filepath.replaceAll("\\\\", "/");
            String toFilepath = toFile.getAbsolutePath();
            toFilepath=toFilepath.replaceAll("\\\\", "/");
            int lastIndexOf = filepath.lastIndexOf("/");
            toFilepath = toFilepath + filepath.substring(lastIndexOf ,filepath.length());
            File copy=new File(toFilepath);
            //复制文件夹
            if (!copy.exists()) {
                copy.mkdir();
            }
            //遍历文件夹
            for (File f : file.listFiles()) {
                copy(f, copy);
            }
        } else {
            if (toFile.isDirectory()) {
                String filepath = file.getAbsolutePath();
                filepath=filepath.replaceAll("\\\\", "/");
                String toFilepath = toFile.getAbsolutePath();
                toFilepath=toFilepath.replaceAll("\\\\", "/");
                int lastIndexOf = filepath.lastIndexOf("/");
                toFilepath = toFilepath + filepath.substring(lastIndexOf ,filepath.length());
                //写文件
                File newFile = new File(toFilepath);
                fis = new FileInputStream(file);
                fos = new FileOutputStream(newFile);
                while ((a = fis.read(b)) != -1) {
                    fos.write(b, 0, a);
                }
            } else {
                //写文件
                fis = new FileInputStream(file);
                fos = new FileOutputStream(toFile);
                while ((a = fis.read(b)) != -1) {
                    fos.write(b, 0, a);
                }
            }
        }
    }
    public static void moveTotherFolders(String startPath,String endPath){
        try {
            File startFile = new File(startPath);
            File tmpFile = new File(endPath);//获取文件夹路径
            if(!tmpFile.exists()){//判断文件夹是否创建,没有创建则创建新文件夹
                tmpFile.mkdirs();
            }
            System.out.println(endPath +"\\"+startFile.getName());
            if (startFile.renameTo(new File(endPath +"\\"+startFile.getName()))) {
                System.out.println("File is moved successful!");
            } else {
                System.out.println("File is failed to move!");
            }
        } catch (Exception e) {
        }
    }
    public static long getTotalSizeOfFilesInDir(final File file) {
        if (file.isFile())
            return file.length();
        final File[] children = file.listFiles();
        long total = 0;
        if (children != null)
            for (final File child : children)
                total += getTotalSizeOfFilesInDir(child);
        return total;
    }
    public static String setSize(long size) {
        //获取到的size为:1705230
        int GB = 1024 * 1024 * 1024;//定义GB的计算常量
        int MB = 1024 * 1024;//定义MB的计算常量
        int KB = 1024;//定义KB的计算常量
        DecimalFormat df = new DecimalFormat("0.00");//格式化小数
        String resultSize = "";
        if (size / GB >= 1) {
            //如果当前Byte的值大于等于1GB
            resultSize = df.format(size / (float) GB) + " GB";
        } else if (size / MB >= 1) {
            //如果当前Byte的值大于等于1MB
            resultSize = df.format(size / (float) MB) + " MB";
        } else if (size / KB >= 1) {
            //如果当前Byte的值大于等于1KB
            resultSize = df.format(size / (float) KB) + " KB";
        } else {
            resultSize = size + " B";
        }
        return resultSize;
    }
}
src/main/java/com/landtool/lanbase/common/utils/GeneratorUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,223 @@
package com.landtool.lanbase.common.utils;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.WordUtils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import com.landtool.lanbase.common.exception.LanbaseException;
import com.landtool.lanbase.modules.sys.entity.SysColumn;
import com.landtool.lanbase.modules.sys.entity.SysTable;
/**
 * @author lanbase
 * @Description: TODO(代码生成器工具类)
 * @date 2017-6-23 15:07
 */
public class GeneratorUtils {
    public static List<String> getTemplates(){
        List<String> templates = new ArrayList<String>();
        templates.add("templates/generator/Entity.java.vm");
        templates.add("templates/generator/Dao.java.vm");
        templates.add("templates/generator/Dao.xml.vm");
        templates.add("templates/generator/Service.java.vm");
        templates.add("templates/generator/ServiceImpl.java.vm");
        templates.add("templates/generator/Controller.java.vm");
        templates.add("templates/generator/list.html.vm");
        templates.add("templates/generator/list.js.vm");
        return templates;
    }
    /**
     * ç”Ÿæˆä»£ç 
     */
    public static void generatorCode(Map<String, String> table,
            List<Map<String, String>> columns, ZipOutputStream zip){
        //配置信息
        Configuration config = getConfig();
        //表信息
        SysTable sysTable = new SysTable();
        sysTable.setTableName(table.get("tableName"));
        sysTable.setComments(table.get("tableComment"));
        //表名转换成Java类名
        String className = tableToJava(sysTable.getTableName(), config.getString("tablePrefix"));
        sysTable.setClassName(className);         ////全部单词首字母大写
        sysTable.setClassname(StringUtils.uncapitalize(className));  ////首字母小写,驼峰
        //列信息
        List<SysColumn> columsList = new ArrayList<>();
        for(Map<String, String> column : columns){
            SysColumn sysColumn = new SysColumn();
            sysColumn.setColumnName(column.get("columnName"));
            sysColumn.setDataType(column.get("dataType"));
            sysColumn.setComments(column.get("columnComment"));
            sysColumn.setExtra(column.get("extra"));
            //列名转换成Java属性名
            String attrName = columnToJava(sysColumn.getColumnName());
            sysColumn.setAttrName(attrName);
            sysColumn.setAttrname(StringUtils.uncapitalize(attrName));
            //列的数据类型,转换成Java类型
            String attrType = config.getString(sysColumn.getDataType(), "unknowType");
            sysColumn.setAttrType(attrType);
            //是否主键
            // if("PRI".equalsIgnoreCase(column.get("columnKey")) && sysTable.getPk() == null){
            //     sysTable.setPk(sysColumn);
            // }
            if(column.get("columnName").equalsIgnoreCase(table.get("keyColumnName")) && sysTable.getPk() == null){
                sysTable.setPk(sysColumn);
            }
            columsList.add(sysColumn);
        }
        sysTable.setColumns(columsList);
        //没主键,则第一个字段为主键
        if(sysTable.getPk() == null){
            sysTable.setPk(sysTable.getColumns().get(0));
        }
        //设置velocity资源加载器
        Properties prop = new Properties();
        prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        Velocity.init(prop);
        String entityPrefix=config.getString("entityPrefix");
        String classNameTemp=entityPrefix+sysTable.getClassName();
        String classnameTmep=sysTable.getClassname();
        String pathPrefix=config.getString("pathPrefix");
        //封装模板数据
        Map<String, Object> map = new HashMap<>();
        map.put("tableName", sysTable.getTableName());
        map.put("comments", sysTable.getComments());
        map.put("pk", sysTable.getPk());
        map.put("className", classNameTemp);
        map.put("classname", classnameTmep);
        map.put("pathPrefix", pathPrefix);
        map.put("pathName", "/"+ sysTable.getClassname().toLowerCase());   //REST服务路径,全小写: ${pathPrefix}${pathName}/list
        map.put("columns", sysTable.getColumns());
        map.put("package", config.getString("package"));
        map.put("author", config.getString("author"));
        map.put("datetime", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
        VelocityContext context = new VelocityContext(map);
        //获取模板列表
        List<String> templates = getTemplates();
        for(String template : templates){
            //渲染模板
            StringWriter sw = new StringWriter();
            Template tpl = Velocity.getTemplate(template, "UTF-8");
            tpl.merge(context, sw);
            try {
                //添加到zip
                zip.putNextEntry(new ZipEntry(getFileName(template, classNameTemp, classnameTmep, pathPrefix, config.getString("package"))));
                IOUtils.write(sw.toString(), zip, "UTF-8");
                IOUtils.closeQuietly(sw);
                zip.closeEntry();
            } catch (IOException e) {
                throw new LanbaseException("渲染模板失败,表名:" + sysTable.getTableName(), e);
            }
        }
    }
    /**
     * åˆ—名转换成Java属性名
     */
    public static String columnToJava(String columnName) {
        return WordUtils.capitalizeFully(columnName, new char[]{'_'}).replace("_", "");
    }
    /**
     * è¡¨åè½¬æ¢æˆJava类名
     */
    public static String tableToJava(String tableName, String tablePrefix) {
        if(StringUtils.isNotBlank(tablePrefix)){
            tableName = tableName.replace(tablePrefix, "");
            tableName = tableName.replace(tablePrefix.toLowerCase(), "");
            tableName = tableName.replace(tablePrefix.toUpperCase(), "");
        }
        return columnToJava(tableName);
    }
    /**
     * èŽ·å–é…ç½®ä¿¡æ¯
     */
    public static Configuration getConfig(){
        try {
            return new PropertiesConfiguration("generator.properties");
        } catch (ConfigurationException e) {
            throw new LanbaseException("获取配置文件失败,", e);
        }
    }
    /**
     * èŽ·å–æ–‡ä»¶å
     */
    public static String getFileName(String template, String className, String classname, String pathPrefix, String packageName){
        String packagePath = "main" + File.separator + "java" + File.separator;
        if(StringUtils.isNotBlank(packageName)){
            packagePath += packageName.replace(".", File.separator) + File.separator;
        }
        if(template.contains("Entity.java.vm")){
            return packagePath + "entity" + File.separator + className + ".java";
        }
        if(template.contains("Dao.java.vm")){
            return packagePath + "dao" + File.separator + className + "Dao.java";
        }
        if(template.contains("Service.java.vm")){
            return packagePath + "service" + File.separator + className + "Service.java";
        }
        if(template.contains("ServiceImpl.java.vm")){
            return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java";
        }
        if(template.contains("Controller.java.vm")){
            return packagePath + "controller" + File.separator + className + "Controller.java";
        }
        if(template.contains("Dao.xml.vm")){
            return "main" + File.separator + "resources" + File.separator + "mapper" + File.separator + pathPrefix + File.separator + className + "Dao.xml";
        }
        if(template.contains("list.html.vm")){
            return "main" + File.separator + "resources" + File.separator + "views" + File.separator
                    + "modules" + File.separator + pathPrefix + File.separator + classname + ".html";
        }
        if(template.contains("list.js.vm")){
            return "main" + File.separator + "resources" + File.separator + "static" + File.separator + "js" + File.separator
                    + "modules" + File.separator + pathPrefix + File.separator + classname + ".js";
        }
        return null;
    }
}
src/main/java/com/landtool/lanbase/common/utils/HttpClientUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,262 @@
package com.landtool.lanbase.common.utils;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.io.UnsupportedEncodingException;
import java.net.UnknownHostException;
import java.util.*;
import javax.net.ssl.SSLException;
import javax.net.ssl.SSLHandshakeException;
import com.alibaba.fastjson.JSON;
import com.qiniu.util.Json;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.NameValuePair;
import org.apache.http.NoHttpResponseException;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.conn.routing.HttpRoute;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
public class HttpClientUtils {
    static final int timeOut = 10 * 1000;
    private static CloseableHttpClient httpClient = null;
    private final static Object syncLock = new Object();
    private static void config(HttpRequestBase httpRequestBase) {
        // è®¾ç½®Header等
        // httpRequestBase.setHeader("User-Agent", "Mozilla/5.0");
        // httpRequestBase
        // .setHeader("Accept",
        // "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        // httpRequestBase.setHeader("Accept-Language",
        // "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3");// "en-US,en;q=0.5");
        // httpRequestBase.setHeader("Accept-Charset",
        // "ISO-8859-1,utf-8,gbk,gb2312;q=0.7,*;q=0.7");
        // é…ç½®è¯·æ±‚的超时设置
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectionRequestTimeout(timeOut)
                .setConnectTimeout(timeOut).setSocketTimeout(timeOut).build();
        httpRequestBase.setConfig(requestConfig);
    }
    /**
     * èŽ·å–HttpClient对象
     *
     * @return
     * @author SHANHY
     * @create 2015å¹´12月18日
     */
    public static CloseableHttpClient getHttpClient(String url) {
        String hostname = url.split("/")[2];
        int port = 80;
        if (hostname.contains(":")) {
            String[] arr = hostname.split(":");
            hostname = arr[0];
            port = Integer.parseInt(arr[1]);
        }
        if (httpClient == null) {
            synchronized (syncLock) {
                if (httpClient == null) {
                    httpClient = createHttpClient(200, 40, 100, hostname, port);
                }
            }
        }
        return httpClient;
    }
    /**
     * åˆ›å»ºHttpClient对象
     *
     * @return
     * @author SHANHY
     * @create 2015å¹´12月18日
     */
    public static CloseableHttpClient createHttpClient(int maxTotal,
            int maxPerRoute, int maxRoute, String hostname, int port) {
        ConnectionSocketFactory plainsf = PlainConnectionSocketFactory
                .getSocketFactory();
        LayeredConnectionSocketFactory sslsf = SSLConnectionSocketFactory
                .getSocketFactory();
        Registry<ConnectionSocketFactory> registry = RegistryBuilder
                .<ConnectionSocketFactory> create().register("http", plainsf)
                .register("https", sslsf).build();
        PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(
                registry);
        // å°†æœ€å¤§è¿žæŽ¥æ•°æ·»åŠ 
        cm.setMaxTotal(maxTotal);
        // å°†æ¯ä¸€ä¸ªè·¯ç”±åŸºç¡€çš„连接添加
        cm.setDefaultMaxPerRoute(maxPerRoute);
        HttpHost httpHost = new HttpHost(hostname, port);
        // å°†ç›®æ ‡ä¸»æœºçš„æœ€å¤§è¿žæŽ¥æ•°æ·»åŠ 
        cm.setMaxPerRoute(new HttpRoute(httpHost), maxRoute);
        // è¯·æ±‚重试处理
        HttpRequestRetryHandler httpRequestRetryHandler = new HttpRequestRetryHandler() {
            public boolean retryRequest(IOException exception,
                    int executionCount, HttpContext context) {
                if (executionCount >= 2) {// å‡è®¾å·²ç»é‡è¯•了2次,就放弃
                    return false;
                }
                if (exception instanceof NoHttpResponseException) {// å‡è®¾server丢掉了连接。那么就重试
                    return true;
                }
                if (exception instanceof SSLHandshakeException) {// ä¸è¦é‡è¯•SSL握手异常
                    return false;
                }
                if (exception instanceof InterruptedIOException) {// è¶…æ—¶
                    return false;
                }
                if (exception instanceof UnknownHostException) {// ç›®æ ‡server不可达
                    return false;
                }
                if (exception instanceof ConnectTimeoutException) {// è¿žæŽ¥è¢«æ‹’绝
                    return false;
                }
                if (exception instanceof SSLException) {// SSL握手异常
                    return false;
                }
                HttpClientContext clientContext = HttpClientContext
                        .adapt(context);
                HttpRequest request = clientContext.getRequest();
                // å‡è®¾è¯·æ±‚是幂等的,就再次尝试
                if (!(request instanceof HttpEntityEnclosingRequest)) {
                    return true;
                }
                return false;
            }
        };
        CloseableHttpClient httpClient = HttpClients.custom()
                .setConnectionManager(cm)
                .setRetryHandler(httpRequestRetryHandler).build();
        return httpClient;
    }
    private static void setPostParams(HttpPost httpost,
            Map<String, Object> params) {
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        Set<String> keySet = params.keySet();
        for (String key : keySet) {
            nvps.add(new BasicNameValuePair(key, params.get(key).toString()));
        }
        try {
            httpost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
    /**
     * GET请求URL获取内容
     *
     * @param url
     * @return
     * @author SHANHY
     * @throws IOException
     * @create 2015å¹´12月18日
     */
    public static String post(String url, Map<String, Object> params) throws IOException {
        HttpPost httppost = new HttpPost(url);
        config(httppost);
        setPostParams(httppost, params);
        CloseableHttpResponse response = null;
        try {
            response = getHttpClient(url).execute(httppost,
                    HttpClientContext.create());
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity, "utf-8");
            EntityUtils.consume(entity);
            return result;
        } catch (Exception e) {
//          e.printStackTrace();
            throw e;
        } finally {
            try {
                if (response != null)
                    response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    /**
     * GET请求URL获取内容
     *
     * @param url
     * @return
     * @author SHANHY
     * @create 2015å¹´12月18日
     */
    public static String get(String url) {
        HttpGet httpget = new HttpGet(url);
        config(httpget);
        CloseableHttpResponse response = null;
        try {
            response = getHttpClient(url).execute(httpget,
                    HttpClientContext.create());
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity, "utf-8");
            EntityUtils.consume(entity);
            return result;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (response != null)
                    response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    public static void main(String[] args) throws Exception {
        String proxyUrl="http://192.168.20.106:8066/serverRegister/addArcGisServer";
        String resourceIdStr="zyid="+12;
        String serverUrlStr="serverUrl="+"http://gis.nmsmp.com/arcgis/rest/services/HYSW/haiyangshengwu/MapServer/4";
        String isPublicStr= "isPublic="+1;
        String fromsys= "fromsys=HYJGPT";
        String enable="enable=1";
        String s = HttpUtils.get(proxyUrl+"?"+
                resourceIdStr+"&"+
                serverUrlStr+"&"+
                isPublicStr+"&"+
                fromsys+"&"+
                enable
        );
        HashMap<String,Object> result= Json.decode(s,HashMap.class);
         proxyUrl=(String)result.get("proxyurl");
    }
}
src/main/java/com/landtool/lanbase/common/utils/HttpContextUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.landtool.lanbase.common.utils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
public class HttpContextUtils {
    public static HttpServletRequest getHttpServletRequest() {
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }
}
src/main/java/com/landtool/lanbase/common/utils/HttpOperateUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
package com.landtool.lanbase.common.utils;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import com.alibaba.fastjson.JSONObject;
import cn.hutool.http.HttpUtil;
/**
 * @author
 * @Description: TODO(获取字典信息)
 * @date 2018-3-22 15:09
 */
public class HttpOperateUtils {
    /**
     * HttpGet è¯·æ±‚ URL è¿”回数据
     *
     * @param url
     * @return
     * @throws IOException
     */
    public static String httpGet(String url) throws IOException {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(url.trim());
        HttpResponse httpResponse = client.execute(request);
        HttpEntity httpEntity = httpResponse.getEntity();
        return EntityUtils.toString(httpEntity, "UTF-8");
    }
    public static boolean isgzip(String url) throws IOException {
        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet(url.trim());
        HttpResponse httpResponse = null;
        httpResponse = client.execute(request);
        String Encoding = String.valueOf(httpResponse.getEntity().getContentEncoding());
        boolean flag = false;
        if(Encoding != null && Encoding.indexOf("gzip") > -1) {
            flag = true;
        }
        return flag;
    }
    public static <T> T getJsonObject(String url, Class<T> clazz) throws IOException {
        String resultjson = HttpOperateUtils.httpGet(url);
        JSONObject jsonobject = JSONObject.parseObject(resultjson);
        return JSONObject.toJavaObject(jsonobject, clazz);
    }
    public static <T> List<T> getJsonObjectArray(String url, Class<T> clazz) throws IOException {
        String resultjson = HttpOperateUtils.httpGet(url);
        return JSONObject.parseArray(resultjson, clazz);
    }
    public static <T> List<T> getJsonObjectArrayByParams(String url, Class<T> clazz,Map<String, Object> params) throws IOException {
        String resultjson = HttpUtil.get(url,params);
        return JSONObject.parseArray(resultjson, clazz);
    }
    /**
     * HttpPost
     */
    public static String httpPost(String url, Object obj) throws IOException {
        String charset = "utf-8";
        HttpClient httpClient = null;
        HttpPost httpPost = null;
        String result = null;
        try {
            Map<String, String> map = objectToMap(obj);
            httpClient = new DefaultHttpClient();
            httpPost = new HttpPost(url);
            // è®¾ç½®å‚æ•°
            List<NameValuePair> list = new ArrayList<NameValuePair>();
            Iterator iterator = map.entrySet().iterator();
            while (iterator.hasNext()) {
                Entry<String, String> elem = (Entry<String, String>) iterator.next();
                if(elem.getValue() != null && !elem.getValue().equals("null")) list.add(new BasicNameValuePair(elem.getKey(), elem.getValue()));
            }
            if (list.size() > 0) {
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, charset);
                httpPost.setEntity(entity);
            }
            HttpResponse response = httpClient.execute(httpPost);
            if (response != null) {
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    result = EntityUtils.toString(resEntity, charset);
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return result;
    }
    /**
     * èŽ·å–åˆ©ç”¨åå°„èŽ·å–ç±»é‡Œé¢çš„å€¼å’Œåç§°
     *
     * @param obj
     * @return
     * @throws IllegalAccessException
     */
    public static Map<String, String> objectToMap(Object obj) throws IllegalAccessException {
        Map<String, String> map = new HashMap<>();
        Class<?> clazz = obj.getClass();
        System.out.println(clazz);
        for (Field field : clazz.getDeclaredFields()) {
            field.setAccessible(true);
            String fieldName = field.getName();
            String value = field.get(obj) != null ? String.valueOf(field.get(obj)) : null;
            map.put(fieldName, value);
        }
        return map;
    }
}
src/main/java/com/landtool/lanbase/common/utils/HttpUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,405 @@
/**
 * Copyright (c) 2015-2016, Michael Yang æ¨ç¦æµ· (fuhai999@gmail.com).
 *
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.landtool.lanbase.common.utils;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.zip.GZIPInputStream;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import com.landtool.lanbase.common.Constant;
/**
 * @author lanbase
 * @Description: TODO(http工具)
 * @date 2017-6-23 15:07
 */
public class HttpUtils {
    private static final String TAG = "HttpUtils";
    private static final int mReadTimeOut = 1000 * 10; // 10秒
    private static final int mConnectTimeOut = 1000 * 5; // 5秒
    private static final String CHAR_SET = Constant.ENCODING_UTF_8;
    private static final int mRetry = 2; // é»˜è®¤å°è¯•访问次数
    public static String get(String url) throws Exception {
        return get(url, null);
    }
    public static String get(String url, Map<String, ? extends Object> params) throws Exception {
        return get(url, params, null);
    }
    public static String get(String url, Map<String, ? extends Object> params, Map<String, String> headers)
            throws Exception {
        if (url == null || url.trim().length() == 0) {
            throw new Exception(TAG + ": url is null or empty!");
        }
        if (params != null && params.size() > 0) {
            if (!url.contains("?")) {
                url += "?";
            }
            if (url.charAt(url.length() - 1) != '?') {
                url += "&";
            }
            url += buildParams(params);
        }
        return tryToGet(url, headers);
    }
    public static String buildParams(Map<String, ? extends Object> params) throws UnsupportedEncodingException {
        if (params == null || params.isEmpty()) {
            return null;
        }
        StringBuilder builder = new StringBuilder();
        for (Map.Entry<String, ? extends Object> entry : params.entrySet()) {
            if (entry.getKey() != null && entry.getValue() != null)
                builder.append(entry.getKey().trim()).append("=")
                        .append(URLEncoder.encode(entry.getValue().toString(), CHAR_SET)).append("&");
        }
        if (builder.charAt(builder.length() - 1) == '&') {
            builder.deleteCharAt(builder.length() - 1);
        }
        return builder.toString();
    }
    private static String tryToGet(String url, Map<String, String> headers) throws Exception {
        int tryTime = 0;
        Exception ex = null;
        while (tryTime < mRetry) {
            try {
                return doGet(url, headers);
            } catch (Exception e) {
                if (e != null)
                    ex = e;
                tryTime++;
            }
        }
        if (ex != null)
            throw ex;
        else
            throw new Exception("未知网络错误 ");
    }
    private static String doGet(String strUrl, Map<String, String> headers) throws Exception {
        System.out.printf("$$$$$ HTTP GET:[%s]", strUrl);
        HttpURLConnection connection = null;
        InputStream stream = null;
        try {
            connection = getConnection(strUrl);
            configConnection(connection);
            if (headers != null && headers.size() > 0) {
                for (Map.Entry<String, String> entry : headers.entrySet()) {
                    connection.setRequestProperty(entry.getKey(), entry.getValue());
                }
            }
            connection.setInstanceFollowRedirects(true);
            connection.connect();
            stream = connection.getInputStream();
            ByteArrayOutputStream obs = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            for (int len = 0; (len = stream.read(buffer)) > 0;) {
                obs.write(buffer, 0, len);
            }
            obs.flush();
            obs.close();
            stream.close();
            return new String(obs.toByteArray());
        } finally {
            if (stream != null) {
                stream.close();
            }
            if (connection != null) {
                connection.disconnect();
                connection=null;
            }
        }
    }
    public static String getGZip(String url) throws Exception {
        return getGZip(url, null);
    }
    public static String getGZip(String url, Map<String, ? extends Object> params) throws Exception {
        return getGZip(url, params, null);
    }
    public static String getGZip(String url, Map<String, ? extends Object> params, Map<String, String> headers)
            throws Exception {
        if (url == null || url.trim().length() == 0) {
            throw new Exception(TAG + ": url is null or empty!");
        }
        if (params != null && params.size() > 0) {
            if (!url.contains("?")) {
                url += "?";
            }
            if (url.charAt(url.length() - 1) != '?') {
                url += "&";
            }
            url += buildParams(params);
        }
        return tryToGetGZip(url, headers);
    }
    private static String tryToGetGZip(String url, Map<String, String> headers) throws Exception {
        int tryTime = 0;
        Exception ex = null;
        while (tryTime < mRetry) {
            try {
                return doGetGZip(url, headers);
            } catch (Exception e) {
                if (e != null)
                    ex = e;
                tryTime++;
            }
        }
        if (ex != null)
            throw ex;
        else
            throw new Exception("未知网络错误 ");
    }
    private static String doGetGZip(String strUrl, Map<String, String> headers) throws Exception {
        HttpURLConnection connection = null;
        InputStream stream = null;
        try {
            connection = getConnection(strUrl);
            configConnection(connection);
            if (headers != null && headers.size() > 0) {
                for (Map.Entry<String, String> entry : headers.entrySet()) {
                    connection.setRequestProperty(entry.getKey(), entry.getValue());
                }
            }
            connection.setInstanceFollowRedirects(true);
            connection.connect();
            stream = connection.getInputStream();
            GZIPInputStream gzin = new GZIPInputStream(stream);
            StringBuffer sb = new StringBuffer();
            InputStreamReader isr = new InputStreamReader(gzin, "UTF-8");
            java.io.BufferedReader br = new java.io.BufferedReader(isr);
            String strtemp;
            while ((strtemp = br.readLine()) != null) {
                sb.append(strtemp);
                sb.append("\r\n");
            }
            isr.close();
            gzin.close();
            String strJson = sb.toString();
            return strJson;
        } finally {
            if (stream != null) {
                stream.close();
            }
            if (connection != null) {
                connection.disconnect();
                connection=null;
            }
        }
    }
    public static String post(String url) throws Exception {
        return post(url, null);
    }
    public static String post(String url, Map<String, ? extends Object> params) throws Exception {
        return post(url, params, null);
    }
    public static String post(String url, Map<String, ? extends Object> params, Map<String, String> headers)
            throws Exception {
        if (url == null || url.trim().length() == 0) {
            throw new Exception(TAG + ":url is null or empty!");
        }
        if (params != null && params.size() > 0) {
            return tryToPost(url, buildParams(params), headers);
        } else {
            return tryToPost(url, null, headers);
        }
    }
    public static String post(String url, String content, Map<String, String> headers) throws Exception {
        return tryToPost(url, content, headers);
    }
    private static String tryToPost(String url, String postContent, Map<String, String> headers) throws Exception {
        int tryTime = 0;
        Exception ex = null;
        while (tryTime < mRetry) {
            try {
                return doPost(url, postContent, headers);
            } catch (Exception e) {
                if (e != null)
                    ex = e;
                tryTime++;
            }
        }
        if (ex != null)
            throw ex;
        else
            throw new Exception("未知网络错误 ");
    }
    private static String doPost(String strUrl, String postContent, Map<String, String> headers) throws Exception {
        HttpURLConnection connection = null;
        InputStream stream = null;
        try {
            connection = getConnection(strUrl);
            configConnection(connection);
            if (headers != null && headers.size() > 0) {
                for (Map.Entry<String, String> entry : headers.entrySet()) {
                    connection.setRequestProperty(entry.getKey(), entry.getValue());
                }
            }
            connection.setRequestMethod("POST");
            connection.setDoOutput(true);
            if (null != postContent && !"".equals(postContent)) {
                DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
                dos.write(postContent.getBytes(CHAR_SET));
                dos.flush();
                dos.close();
            }
            stream = connection.getInputStream();
            ByteArrayOutputStream obs = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            for (int len = 0; (len = stream.read(buffer)) > 0;) {
                obs.write(buffer, 0, len);
            }
            obs.flush();
            obs.close();
            return new String(obs.toByteArray());
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
            if (stream != null) {
                stream.close();
            }
        }
    }
    private static void configConnection(HttpURLConnection connection) {
        if (connection == null)
            return;
        connection.setReadTimeout(mReadTimeOut);
        connection.setConnectTimeout(mConnectTimeOut);
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        connection.setRequestProperty("User-Agent",
                "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");
    }
    private static HttpURLConnection getConnection(String strUrl) throws Exception {
        if (strUrl == null) {
            return null;
        }
        if (strUrl.toLowerCase().startsWith("https")) {
            return getHttpsConnection(strUrl);
        } else {
            return getHttpConnection(strUrl);
        }
    }
    private static HttpURLConnection getHttpConnection(String urlStr) throws Exception {
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        return conn;
    }
    private static HttpsURLConnection getHttpsConnection(String urlStr) throws Exception {
        URL url = new URL(urlStr);
        HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
        conn.setHostnameVerifier(hnv);
        SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
        if (sslContext != null) {
            TrustManager[] tm = { xtm };
            sslContext.init(null, tm, null);
            SSLSocketFactory ssf = sslContext.getSocketFactory();
            conn.setSSLSocketFactory(ssf);
        }
        return conn;
    }
    private static X509TrustManager xtm = new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] chain, String authType) {
        }
        public void checkServerTrusted(X509Certificate[] chain, String authType) {
        }
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    };
    private static HostnameVerifier hnv = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };
}
src/main/java/com/landtool/lanbase/common/utils/IPUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.landtool.lanbase.common.utils;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.druid.util.StringUtils;
/**
 * @author lanbase
 * @Description: TODO(IP地址处理工具类)
 * @date 2017-6-23 15:07
 */
public class IPUtils {
    private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
    /**
     * èŽ·å–IP地址
     *
     * ä½¿ç”¨Nginx等反向代理软件, åˆ™ä¸èƒ½é€šè¿‡request.getRemoteAddr()获取IP地址
     * å¦‚果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = null;
        try {
            ip = request.getHeader("x-forwarded-for");
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_CLIENT_IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
        } catch (Exception e) {
            logger.error("IPUtils ERROR ", e);
        }
//        //使用代理,则获取第一个IP地址
//        if(StringUtils.isEmpty(ip) && ip.length() > 15) {
//            if(ip.indexOf(",") > 0) {
//                ip = ip.substring(0, ip.indexOf(","));
//            }
//        }
        return ip;
    }
}
src/main/java/com/landtool/lanbase/common/utils/ImageUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,253 @@
/**
 * Copyright (c) 2015-2016, Michael Yang æ¨ç¦æµ· (fuhai999@gmail.com).
 *
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.landtool.lanbase.common.utils;
import java.awt.AlphaComposite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
/**
 * @author lanbase
 * @Description: TODO(图片处理)
 * @date 2017-6-23 15:07
 */
public class ImageUtils {
    public static int[] ratio(String src) throws IOException {
        BufferedImage bufferedImage = ImageIO.read(new File(src));
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        return new int[] { width, height };
    }
    public static String ratioAsString(String src) throws IOException {
        File file = new File(src);
        if (!file.exists()) {
            return null;
        }
        BufferedImage bufferedImage = ImageIO.read(file);
        int width = bufferedImage.getWidth();
        int height = bufferedImage.getHeight();
        return String.format("%s x %s", width, height);
    }
    public static String scale(String src, int w, int h) throws IOException {
        int inserTo = src.lastIndexOf(".");
        String dest = src.substring(0, inserTo) + String.format("_%sx%s", w, h) + src.substring(inserTo, src.length());
        scale(src, dest, w, h);
        return dest;
    }
    /**
     * å›¾ç‰‡å¤§å°åŽ‹ç¼©
     *
     * @param src
     * @throws IOException
     */
    public static void scale(String src) throws IOException {
        File file = new File(src);
        if (!file.exists()) {
            return;
        }
        BufferedImage bufferedImage = ImageIO.read(file);
        int w = bufferedImage.getWidth();
        int h = bufferedImage.getHeight();
        String srcSuffix = src.substring(src.lastIndexOf(".") + 1);
        Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName(srcSuffix);
        ImageReader reader = (ImageReader) iterator.next();
        InputStream in = new FileInputStream(src);
        ImageInputStream iis = ImageIO.createImageInputStream(in);
        reader.setInput(iis);
        BufferedImage srcBuffered = readBuffereImage(reader, w, h);
        BufferedImage targetBuffered = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = targetBuffered.getGraphics();
        graphics.drawImage(srcBuffered.getScaledInstance(w, h, Image.SCALE_DEFAULT), 0, 0, null); // ç»˜åˆ¶ç¼©å°åŽçš„图
        graphics.dispose();
        srcBuffered.flush();
        in.close();
        iis.close();
        ImageIO.write(targetBuffered, srcSuffix, file);
        targetBuffered.flush();
    }
    /**
     * ç­‰æ¯”缩放,居中剪切
     *
     * @param src
     * @param dest
     * @param w
     * @param h
     * @throws IOException
     */
    public static void scale(String src, String dest, int w, int h) throws IOException {
        String srcSuffix = src.substring(src.lastIndexOf(".") + 1);
        Iterator<ImageReader> iterator = ImageIO.getImageReadersByFormatName(srcSuffix);
        ImageReader reader = (ImageReader) iterator.next();
        InputStream in = new FileInputStream(src);
        ImageInputStream iis = ImageIO.createImageInputStream(in);
        reader.setInput(iis);
        BufferedImage srcBuffered = readBuffereImage(reader, w, h);
        BufferedImage targetBuffered = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics graphics = targetBuffered.getGraphics();
        graphics.drawImage(srcBuffered.getScaledInstance(w, h, Image.SCALE_DEFAULT), 0, 0, null); // ç»˜åˆ¶ç¼©å°åŽçš„图
        graphics.dispose();
        srcBuffered.flush();
        in.close();
        iis.close();
        ImageIO.write(targetBuffered, srcSuffix, new File(dest));
        targetBuffered.flush();
    }
    private static BufferedImage readBuffereImage(ImageReader reader, int w, int h) throws IOException {
        ImageReadParam param = reader.getDefaultReadParam();
        int srcWidth = reader.getWidth(0);
        int srcHeight = reader.getHeight(0);
        Rectangle rect = null;
        if ((float) w / h > (float) srcWidth / srcHeight) {
            h = h * srcWidth / w;
            w = srcWidth;
            rect = new Rectangle(0, (srcHeight - h) / 2, w, h);
        } else {
            w = w * srcHeight / h;
            h = srcHeight;
            rect = new Rectangle((srcWidth - w) / 2, 0, w, h);
        }
        param.setSourceRegion(rect);
        BufferedImage srcBuffered = reader.read(0, param);
        return srcBuffered;
    }
    public final static void pressImage(String watermarkImg, String srcImageFile) {
        pressImage(watermarkImg, srcImageFile, srcImageFile, 5, -1, -1, 0.2f, 1);
    }
    public final static void pressImage(String watermarkImg, String srcImageFile, String destImageFile) {
        pressImage(watermarkImg, srcImageFile, destImageFile, 5, -1, -1, 0.2f, 1);
    }
    public final static void pressImage(String watermarkImg, String srcImageFile, String destImageFile, int position,
            float alpha) {
        pressImage(watermarkImg, srcImageFile, destImageFile, position, -1, -1, 0.2f, alpha);
    }
    /**
     * @param watermarkImg
     *            æ°´å°å›¾ç‰‡ä½ç½®
     * @param srcImageFile
     *            æºå›¾ç‰‡ä½ç½®
     * @param destImageFile
     *            ç”Ÿæˆçš„图片位置
     * @param position
     *            æ°´å°æ‰“印的位置: 1->左上角,2->右上角,1->居中,1->左下角,1->右下角
     * @param xOffset
     *            x轴偏移量,xOffset小于0,自动偏移
     * @param yOffset
     *            y轴偏移量,yOffset小于0,自动偏移
     * @param radio
     *            é»˜è®¤ä¸ºåŽŸå›¾çš„ 1/4
     * @param alpha
     *            é€æ˜Žåº¦ï¼ˆ0~1),PNG图片建议设置为1
     */
    public final static void pressImage(String watermarkImg, String srcImageFile, String destImageFile, int position,
            int xOffset, int yOffset, float radio, float alpha) {
        try {
            File img = new File(srcImageFile);
            Image src = ImageIO.read(img);
            int srcWidth = src.getWidth(null);
            int srcHeight = src.getHeight(null);
            BufferedImage image = new BufferedImage(srcWidth, srcHeight, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = image.createGraphics();
            graphics.drawImage(src, 0, 0, srcWidth, srcHeight, null);
            // æ°´å°æ–‡ä»¶
            Image wmImage = ImageIO.read(new File(watermarkImg));
            int wmWidth = wmImage.getWidth(null);
            int wmHeight = wmImage.getHeight(null);
            radio = radio <= 0 ? 0.2f : radio;
            int newWidth = (int) (srcWidth * radio);
            int newHeight = (int) (wmHeight * (newWidth / (float) wmWidth));
            xOffset = (xOffset < 0) ? (int) (newWidth * 0.1f) : xOffset;
            yOffset = (yOffset < 0) ? (int) (newHeight * 0.1f) : yOffset;
            int xPostion = 0;
            int yPostion = 0;
            switch (position) {
            case 1:
                xPostion = xOffset;
                yPostion = yOffset;
                break;
            case 2:
                xPostion = (int) (srcWidth * (1 - radio) - xOffset);
                yPostion = yOffset;
                break;
            case 3:
                xPostion = (int) (srcWidth - newWidth) / 2;
                yPostion = (int) (srcHeight - newHeight) / 2;
                break;
            case 4:
                xPostion = xOffset;
                yPostion = (int) (srcHeight - newHeight - yOffset);
                break;
            case 5:
                xPostion = (int) (srcWidth * (1 - radio) - xOffset);
                yPostion = (int) (srcHeight - newHeight - yOffset);
                break;
            default:
                xPostion = xOffset;
                yPostion = yOffset;
                break;
            }
            graphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
            graphics.drawImage(wmImage, xPostion, yPostion, newWidth, newHeight, null);
            // æ°´å°æ–‡ä»¶ç»“束
            graphics.dispose();
            ImageIO.write((BufferedImage) image, "JPEG", new File(destImageFile));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/JpinyinUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
package com.landtool.lanbase.common.utils;
import com.github.stuxuhai.jpinyin.ChineseHelper;
import com.github.stuxuhai.jpinyin.PinyinFormat;
import com.github.stuxuhai.jpinyin.PinyinHelper;
/**
 * @author lanCatalog
 * @Description: TODO(中文转拼音工具)
 * @date 2018-3-21 10:09
 */
public class JpinyinUtils {
    /**
     * è½¬æ¢ä¸ºæœ‰å£°è°ƒçš„æ‹¼éŸ³å­—符串
     *
     * @param pinYinStr æ±‰å­—
     * @return æœ‰å£°è°ƒçš„æ‹¼éŸ³å­—符串
     */
    public static String changeToMarkPinYin(String pinYinStr) {
        String tempStr = null;
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
    /**
     * è½¬æ¢ä¸ºæ•°å­—声调字符串
     *
     * @param pinYinStr éœ€è½¬æ¢çš„æ±‰å­—
     * @return è½¬æ¢å®Œæˆçš„æ‹¼éŸ³å­—符串
     */
    public static String changeToNumberPinYin(String pinYinStr) {
        String tempStr = null;
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
    /**
     * è½¬æ¢ä¸ºä¸å¸¦éŸ³è°ƒçš„æ‹¼éŸ³å­—符串
     *
     * @param pinYinStr éœ€è½¬æ¢çš„æ±‰å­—
     * @return æ‹¼éŸ³å­—符串
     */
    public static String changeToTonePinYin(String pinYinStr) {
        String tempStr = null;
        try {
            tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITHOUT_TONE);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
    /**
     * è½¬æ¢ä¸ºæ¯ä¸ªæ±‰å­—对应拼音首字母字符串
     *
     * @param pinYinStr éœ€è½¬æ¢çš„æ±‰å­—
     * @return æ‹¼éŸ³å­—符串
     */
    public static String changeToGetShortPinYin(String pinYinStr) {
        String tempStr = null;
        try {
            tempStr = PinyinHelper.getShortPinyin(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
    /**
     * æ£€æŸ¥æ±‰å­—是否为多音字
     *
     * @param pinYinStr éœ€æ£€æŸ¥çš„æ±‰å­—
     * @return true å¤šéŸ³å­—,false ä¸æ˜¯å¤šéŸ³å­—
     */
    public static boolean checkPinYin(char pinYinStr) {
        boolean check = false;
        try {
            check = PinyinHelper.hasMultiPinyin(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return check;
    }
    /**
     * ç®€ä½“转换为繁体
     *
     * @param pinYinStr
     * @return
     */
    public static String changeToTraditional(String pinYinStr) {
        String tempStr = null;
        try {
            tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
    /**
     * ç¹ä½“转换为简体
     *
     * @param pinYinSt
     * @return
     */
    public static String changeToSimplified(String pinYinSt) {
        String tempStr = null;
        try {
            tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return tempStr;
    }
}
src/main/java/com/landtool/lanbase/common/utils/JsoupUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,132 @@
/**
 * Copyright (c) 2015-2016, Michael Yang æ¨ç¦æµ· (fuhai999@gmail.com).
 *
 * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.gnu.org/licenses/lgpl-3.0.txt
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.landtool.lanbase.common.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Attribute;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
 * @author lanbase
 * @Description: TODO(html处理工具)
 * @date 2017-6-23 15:07
 */
public class JsoupUtils {
    public static String getFirstImageSrc(String html) {
        if (html == null)
            return null;
        Elements es = Jsoup.parseBodyFragment(html).select("img");
        if (es != null && es.size() > 0)
            return es.first().attr("src");
        return null;
    }
    public static List<String> getImageSrcs(String html) {
        if (StringUtils.isBlank(html)) {
            return null;
        }
        List<String> list = new ArrayList<String>();
        Document doc = Jsoup.parseBodyFragment(html);
        Elements es = doc.select("img");
        if (es != null && es.size() > 0) {
            for (Element e : es) {
                list.add(e.attr("src"));
            }
        }
        return list;
    }
    public static String getText(String html) {
        return Jsoup.parse(html).text();
    }
    public static String getBodyHtml(String html) {
        if (StringUtils.isNotBlank(html)) {
            Document document = Jsoup.parse(html);
            if (null != document && document.body() != null) {
                return document.body().html().toString();
            }
        }
        return html;
    }
    static MyWhitelist whitelist = new MyWhitelist();
    public static String clear(String html) {
        if (StringUtils.isNotBlank(html))
            return Jsoup.clean(html, whitelist);
        return html;
    }
    /**
     * åšè‡ªå·±çš„白名单,允许base64的图片通过等
     *
     * @author michael
     */
    public static class MyWhitelist extends org.jsoup.safety.Whitelist {
        public MyWhitelist() {
            addTags("a", "b", "blockquote", "br", "caption", "cite", "code", "col", "colgroup", "dd", "div", "dl", "dt",
                    "em", "h1", "h2", "h3", "h4", "h5", "h6", "i", "img", "li", "ol", "p", "pre", "q", "small",
                    "strike", "strong", "sub", "sup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "u", "ul");
            addAttributes("a", "href", "title", "target");
            addAttributes("blockquote", "cite");
            addAttributes("col", "span");
            addAttributes("colgroup", "span");
            addAttributes("img", "align", "alt", "src", "title");
            addAttributes("ol", "start");
            addAttributes("q", "cite");
            addAttributes("table", "summary");
            addAttributes("td", "abbr", "axis", "colspan", "rowspan", "width");
            addAttributes("th", "abbr", "axis", "colspan", "rowspan", "scope", "width");
            addAttributes("video", "src", "autoplay", "controls", "loop", "muted", "poster", "preload");
            addAttributes(":all", "class");
            addAttributes(":all", "style");
            addAttributes(":all", "height");
            addAttributes(":all", "width");
            addAttributes(":all", "type");
            addAttributes(":all", "id");
            addAttributes(":all", "name");
            addProtocols("a", "href", "ftp", "http", "https", "mailto", "tel");
            addProtocols("blockquote", "cite", "http", "https");
            addProtocols("cite", "cite", "http", "https");
            addProtocols("img", "src", "http", "https");
            addProtocols("q", "cite", "http", "https");
        }
        @Override
        protected boolean isSafeAttribute(String tagName, Element el, Attribute attr) {
            return ("img".equals(tagName) && "src".equals(attr.getKey()) && attr.getValue().startsWith("data:;base64"))
                    || super.isSafeAttribute(tagName, el, attr);
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/NameBindId.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.landtool.lanbase.common.utils;
/**
 * @Description: name与id的绑定结果 ï¼ˆä½œç”¨ï¼šç”¨äºŽè¿”回结果的pojo)
 * @Author: zimao.guo
 * @Date: 11:34 2018/2/2
 */
public class NameBindId {
    private String name;
    private Long id;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
}
src/main/java/com/landtool/lanbase/common/utils/PageUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package com.landtool.lanbase.common.utils;
import java.io.Serializable;
import java.util.List;
/**
 * @author lanbase
 * @Description: TODO(分页工具类)
 * @date 2017-6-23 15:07
 */
public class PageUtils implements Serializable {
    private static final long serialVersionUID = 1L;
    //总记录数
    private int totalCount;
    //每页记录数
    private int pageSize;
    //总页数
    private int totalPage;
    //当前页数
    private int currPage;
    //列表数据
    private List<?> list;
    /**
     * åˆ†é¡µ
     * @param list        åˆ—表数据
     * @param totalCount  æ€»è®°å½•æ•°
     * @param pageSize    æ¯é¡µè®°å½•æ•°
     * @param currPage    å½“前页数
     */
    public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
        this.list = list;
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        this.currPage = currPage;
        this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public int getCurrPage() {
        return currPage;
    }
    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }
    public List<?> getList() {
        return list;
    }
    public void setList(List<?> list) {
        this.list = list;
    }
}
src/main/java/com/landtool/lanbase/common/utils/PinyinUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.landtool.lanbase.common.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
 * @author lanbase
 * @Description: TODO(中文转拼音工具)
 * @date 2017-9-26 10:09
 */
public class PinyinUtils {
    /**
     * å°†æ–‡å­—转为汉语拼音
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     */
    private static String toHanyuPinyin(String ChineseLanguage, HanyuPinyinCaseType caseType){
        char[] cl_chars = ChineseLanguage.trim().toCharArray();
        String hanyupinyin = "";
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(caseType);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// ä¸å¸¦å£°è°ƒ
        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
        try {
            for (int i=0; i<cl_chars.length; i++){
                if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")){// å¦‚果字符是中文,则将中文转为汉语拼音
                    hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];
                } else {// å¦‚果字符不是中文,则不转换
                    hanyupinyin += cl_chars[i];
                }
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return hanyupinyin;
    }
    /**
     * å°†æ–‡å­—转为大写汉语拼音
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     * @return
     */
    public static String toHanyuPinyinUpperCase(String ChineseLanguage){
        return toHanyuPinyin(ChineseLanguage, HanyuPinyinCaseType.UPPERCASE);
    }
    /**
     * å°†æ–‡å­—转为小写汉语拼音
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     * @return
     */
    public static String toHanyuPinyinLowerCase(String ChineseLanguage){
        return toHanyuPinyin(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
    }
    /**
     * å–第一个汉字的第一个字符
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     * @param caseType å¤§å†™è¿˜æ˜¯å°å†™
     * @return
     */
    private static String getFirstLetter(String ChineseLanguage, HanyuPinyinCaseType caseType){
        char[] cl_chars = ChineseLanguage.trim().toCharArray();
        String hanyupinyin = "";
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(caseType);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// ä¸å¸¦å£°è°ƒ
        try {
            String str = String.valueOf(cl_chars[0]);
            if (str.matches("[\u4e00-\u9fa5]+")) {// å¦‚果字符是中文,则将中文转为汉语拼音,并取第一个字母
                hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(cl_chars[0], defaultFormat)[0].substring(0, 1);
            } else {// å¦‚果字符不是中文,则不转换
                hanyupinyin += cl_chars[0];
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return hanyupinyin;
    }
    /**
     * å–第一个汉字的第一个大写字符
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     * @return
     */
    public static String getFirstLetterUpperCase(String ChineseLanguage){
        return getFirstLetter(ChineseLanguage, HanyuPinyinCaseType.UPPERCASE);
    }
    /**
     * å–第一个汉字的第一个小写字符
     * @param ChineseLanguage è¦è½¬æˆæ‹¼éŸ³çš„中文
     * @return
     */
    public static String getFirstLetterLowerCase(String ChineseLanguage){
        return getFirstLetter(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
    }
}
src/main/java/com/landtool/lanbase/common/utils/Query.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package com.landtool.lanbase.common.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.landtool.lanbase.common.xss.SQLFilter;
/**
 * @author lanbase
 * @Description: TODO(查询参数)
 * @date 2017-6-23 15:07
 */
public class Query extends LinkedHashMap<String, Object> {
    private static final long serialVersionUID = 1L;
    //当前页码
    private int page;
    //每页条数
    private int limit;
    public Query(Map<String, Object> params){
        this.putAll(params);
        //分页参数
        this.page = Integer.parseInt(params.get("page").toString());
        this.limit = Integer.parseInt(params.get("limit").toString());
        this.put("page", page);
        this.put("limit", limit);
        this.put("lowerOffset", (page - 1) * limit);
        this.put("upperOffset", page * limit );
        //防止SQL注入(因为sidx、order是通过拼接SQL实现排序的,会有SQL注入风险)
        String sidx = (String)params.get("sidx");
        String order = (String)params.get("order");
        String fkey=(String)params.get("fkey");
        String cname=(String)params.get("cname");
        String appid=(String)params.get("appid");
        String UserName=(String)params.get("userName");
        String beginDate=(String)params.get("beginDate");
        String endDate=(String)params.get("endDate");
        String appfullName=(String)params.get("appfullName");
        if(StringUtils.isNotBlank(sidx)){
            this.put("sidx", SQLFilter.sqlInject(sidx));
        }
        if(StringUtils.isNotBlank(order)){
            this.put("order", SQLFilter.sqlInject(order));
        }
        if(StringUtils.isNotBlank(fkey)){
            this.put("fkey", fkey);
        }
        if(StringUtils.isNotBlank(appid)){
            this.put("appid", appid);
        }
        if(StringUtils.isNotBlank(UserName)){
            this.put("UserName", UserName);
        }
        if(StringUtils.isNotBlank(cname)){
            this.put("cname", cname);
        }
        if(StringUtils.isNotBlank(beginDate)){
           this.put("beginDate", beginDate);
        }
        if(StringUtils.isNotBlank(endDate)){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            try {
                Date d=new Date(sdf.parse(endDate).getTime()+24*3600*1000);
                endDate=sdf.format(d);
                this.put("endDate", endDate);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        if(StringUtils.isNotBlank(appfullName)){
            this.put("appfullName", appfullName);
        }
    }
    public int getPage() {
        return page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public int getLimit() {
        return limit;
    }
    public void setLimit(int limit) {
        this.limit = limit;
    }
}
src/main/java/com/landtool/lanbase/common/utils/RandomUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
/**
 *
 */
package com.landtool.lanbase.common.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.lang.StringUtils;
/**
* @Description: TODO(随机数工具类)
* @author lanbase
* @date 2016å¹´10月10日 ä¸Šåˆ8:50:13
*/
public class RandomUtils {
    private static final Random RANDOM=new Random();
    public static Random getRandom() {
        return RANDOM;
    }
    private static char[] chars = {
            'a', 'b', 'c', 'd', 'e', 'f', 'g',
            'h', 'i', 'j', 'k', 'l', 'm', 'n',
            'o', 'p', 'q', 'r', 's', 't', 'u',
            'v', 'w', 'x', 'y', 'z',
            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            'A', 'B', 'C', 'D', 'E', 'F', 'G',
            'H', 'I', 'J', 'K', 'L', 'M', 'N',
            'O', 'P', 'Q', 'R', 'S', 'T', 'U',
            'V', 'W', 'X', 'Y', 'Z'
    };
    /**
     * éšæœºç”Ÿæˆç”±0-9a-zA-Z组合而成的字符串
     *
     * @param len å­—符串长度
     * @return ç”Ÿæˆç»“æžœ
     */
    public static String randomChar(int len) {
        StringBuilder shortBuffer = new StringBuilder();
        String uuid = UUID.randomUUID().toString().replace("-", "");
        for (int i = 0; i < len; i++) {
            String str = uuid.substring(i * 4, i * 4 + 4);
            int x = Integer.parseInt(str, 16);
            shortBuffer.append(chars[x % 0x3E]);
        }
        return shortBuffer.toString();
    }
    /**
     * éšæœºæ•°+日期
     * @param startaKey
     * @param endKey
     * @return
     */
    public static String randomKey(String startaKey, String endKey) {
        String simpleDate = new SimpleDateFormat("yyMMddHHmmss").format(new Date());
        String result = simpleDate + randomSixNum();
        if (StringUtils.isNotBlank(startaKey)) {
            result = startaKey + result;
        }
        if (StringUtils.isNotBlank(endKey)) {
            result = result + endKey;
        }
        return result;
    }
    public static Integer randomKey(int count) {
        Integer result = getRandom().nextInt(count);
        return result + 1;
    }
    /**
     * éšæœºç”Ÿæˆå…­ä½éšæœºæ•°
     * @return
     */
    public static int randomSixNum() {
        int randomNum = (int) ((Math.random() * 9 + 1) * 100000);
        return randomNum;
    }
}
src/main/java/com/landtool/lanbase/common/utils/RedisUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,174 @@
package com.landtool.lanbase.common.utils;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component;
import com.google.gson.Gson;
/**
 * @author lanbase
 * @Description: TODO(Redis工具类)
 * @date 2017-6-23 15:07
 */
@Component
public class RedisUtils {
    //是否开启redis缓存  true开启   false关闭
    @Value("${spring.redis.open: #{false}}")
    private boolean open;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Autowired
    private ValueOperations<String, String> valueOperations;
    @Autowired
    private HashOperations<String, String, Object> hashOperations;
    @Autowired
    private ListOperations<String, Object> listOperations;
    @Autowired
    private SetOperations<String, Object> setOperations;
    @Autowired
    private ZSetOperations<String, Object> zSetOperations;
    /**  é»˜è®¤è¿‡æœŸæ—¶é•¿ï¼Œå•位:秒 */
    public final static long DEFAULT_EXPIRE = 60 * 60 * 24;
    /**  ä¸è®¾ç½®è¿‡æœŸæ—¶é•¿ */
    public final static long NOT_EXPIRE = -1;
    private final static Gson gson = new Gson();
    public boolean exists(String key) {
        if(!open){
            return false;
        }
        return redisTemplate.hasKey(key);
    }
    public void set(String key, Object value, long expire){
        if(!open){
            return;
        }
        valueOperations.set(key, toJson(value));
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
    }
    public void set(String key, Object value){
        if(!open){
            return;
        }
        set(key, value, DEFAULT_EXPIRE);
    }
    public <T> T get(String key, Class<T> clazz, long expire) {
        if(!open){
            return null;
        }
        String value = valueOperations.get(key);
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
        return value == null ? null : fromJson(value, clazz);
    }
    public <T> T get(String key, Class<T> clazz) {
        if(!open){
            return null;
        }
        return get(key, clazz, NOT_EXPIRE);
    }
    public String get(String key, long expire) {
        if(!open){
            return null;
        }
        String value = valueOperations.get(key);
        if(expire != NOT_EXPIRE){
            redisTemplate.expire(key, expire, TimeUnit.SECONDS);
        }
        return value;
    }
    public String get(String key) {
        if(!open){
            return null;
        }
        return get(key, NOT_EXPIRE);
    }
    public void delete(String key) {
        if(!open){
            return;
        }
        if(exists(key)){
            redisTemplate.delete(key);
        }
    }
    public void delete(String... keys) {
        if(!open){
            return;
        }
        for (String key : keys) {
            redisTemplate.delete(key);
        }
    }
    public void deletePattern(String pattern) {
        if(!open){
            return;
        }
        Set<String> keys = redisTemplate.keys(pattern);
        if (keys.size() > 0)
            redisTemplate.delete(keys);
    }
    /**
     * Object转成JSON数据
     */
    private String toJson(Object object){
        if(!open){
            return null;
        }
        if(object instanceof Integer || object instanceof Long || object instanceof Float ||
                object instanceof Double || object instanceof Boolean || object instanceof String){
            return String.valueOf(object);
        }
        return gson.toJson(object);
    }
    /**
     * JSON数据,转成Object
     */
    private <T> T fromJson(String json, Class<T> clazz){
        if(!open){
            return null;
        }
        return gson.fromJson(json, clazz);
    }
}
src/main/java/com/landtool/lanbase/common/utils/Result.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.landtool.lanbase.common.utils;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpStatus;
/**
 * @author lanbase
 * @Description: TODO(返回数据)
 * @date 2017-6-23 15:07
 */
public class Result extends HashMap<String, Object> {
    private final static int CODE_SUCCESS=0;
    public static Result error() {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常,请联系管理员");
    }
    public static Result error(String msg) {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
    }
    public static Result error(int code, String msg) {
        Result r = new Result();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }
    public static Result ok() {
        return ok("操作成功");
    }
    public static Result ok(String msg) {
        Result r = new Result();
        r.put("code", CODE_SUCCESS);
        r.put("msg", msg);
        return r;
    }
    public Result put(Map<String, Object> map) {
        super.putAll(map);
        return this;
    }
    public Result put(String key, Object value) {
        super.put(key, value);
        return this;
    }
}
src/main/java/com/landtool/lanbase/common/utils/ShiroUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.landtool.lanbase.common.utils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import com.landtool.lanbase.modules.org.entity.OrgUser;
/**
 * @author lanbase
 * @Description: TODO(Shiro工具类)
 * @date 2017-6-23 15:07
 */
public class ShiroUtils {
    public static Session getSession() {
        return SecurityUtils.getSubject().getSession();
    }
    public static Subject getSubject() {
        return SecurityUtils.getSubject();
    }
    public static OrgUser getUserEntity() {
        return (OrgUser)SecurityUtils.getSubject().getPrincipal();
    }
    public static Long getUserId() {
        return getUserEntity().getUserid();
    }
    public static void setSessionAttribute(Object key, Object value) {
        getSession().setAttribute(key, value);
    }
    public static Object getSessionAttribute(Object key) {
        return getSession().getAttribute(key);
    }
    public static boolean isLogin() {
        return SecurityUtils.getSubject().getPrincipal() != null;
    }
    public static void logout() {
        SecurityUtils.getSubject().logout();
    }
}
src/main/java/com/landtool/lanbase/common/utils/SpringContextUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.landtool.lanbase.common.utils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
 * @author lanbase
 * @Description: TODO(Spring Context å·¥å…·ç±»)
 * @date 2017-6-23 15:07
 */
@Component
public class SpringContextUtils implements ApplicationContextAware {
    public static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext)
            throws BeansException {
        SpringContextUtils.applicationContext = applicationContext;
    }
    public static Object getBean(String name) {
        return applicationContext.getBean(name);
    }
    public static <T> T getBean(String name, Class<T> requiredType) {
        return applicationContext.getBean(name, requiredType);
    }
    public static <T> T getBean(Class<T> requiredType) {
        return applicationContext.getBean(requiredType);
    }
    public static boolean containsBean(String name) {
        return applicationContext.containsBean(name);
    }
    public static boolean isSingleton(String name) {
        return applicationContext.isSingleton(name);
    }
    public static Class<? extends Object> getType(String name) {
        return applicationContext.getType(name);
    }
}
src/main/java/com/landtool/lanbase/common/utils/TimeIntervalUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.landtool.lanbase.common.utils;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeIntervalUtil {
    public static String getInterval(String createtime) { //传入的时间格式必须类似于2012-8-21 17:53:20这样的格式
        String interval = null;
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        ParsePosition pos = new ParsePosition(0);
        Date d1 = (Date) sd.parse(createtime, pos);
        //用现在距离1970年的时间间隔new Date().getTime()减去以前的时间距离1970年的时间间隔d1.getTime()得出的就是以前的时间与现在时间的时间间隔
        long time = new Date().getTime() - d1.getTime();// å¾—出的时间间隔是毫秒
        if(time/1000 < 10 && time/1000 >= 0) {
            //如果时间间隔小于10秒则显示“刚刚”time/10得出的时间间隔的单位是秒
            interval ="刚刚";
        } else if(time/3600000 < 24 && time/3600000 > 0) {
            //如果时间间隔小于24小时则显示多少小时前
            int h = (int) (time/3600000);//得出的时间间隔的单位是小时
            interval = h + "小时前";
        } else if(time/60000 < 60 && time/60000 > 0) {
            //如果时间间隔小于60分钟则显示多少分钟前
            int m = (int) ((time%3600000)/60000);//得出的时间间隔的单位是分钟
            interval = m + "分钟前";
        } else if(time/1000 < 60 && time/1000 > 0) {
            //如果时间间隔小于60秒则显示多少秒前
            int se = (int) ((time%60000)/1000);
            interval = se + "秒前";
        }
        else if(time/3600000/24 < 24 && time/3600000/24 >= 0 ) {
            //如果时间间隔大于24小时则显示多少天前
            int d = (int) (time/3600000/24);
            interval = d + "天前";
        }
        else if(time/3600000/24/30 < 12 && time/3600000/24/30 >= 0 ) {
            //如果时间间隔大于30天,则显示多少个月前
            int d = (int) (time/3600000/24/30);
            interval = d + "个月前";
        }
        else {
            //大于12个月,则显示正常的时间,但是不显示时分秒
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            ParsePosition pos2 = new ParsePosition(0);
            Date d2 = (Date) sdf.parse(createtime, pos2);
            interval = sdf.format(d2);
        }
        return interval;
    }
}
src/main/java/com/landtool/lanbase/common/utils/TransformUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.landtool.lanbase.common.utils;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
/**
 * @Description: æ ¼å¼è½¬æ¢å·¥å…·
 * @Author: zimao.guo
 * @Date: 15:15 2018/2/9
 */
public class TransformUtils {
    /**
     * @Description: String转Longlist
     * @Author: zimao.guo
     * @Date: 15:16 2018/2/9
     * @return: List<Long>
     * @see Long
     * @param inList
     */
    public static List<Long> StringToLongList(List<String> inList){
        List<Long> LongList = new ArrayList<Long>(inList.size());
        CollectionUtils.collect(inList, new Transformer() {
            @Override
            public Object transform(Object o) {
                return new Long((String)o);
            }
        },LongList);
        return LongList;
    }
}
src/main/java/com/landtool/lanbase/common/utils/WADOMUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,326 @@
package com.landtool.lanbase.common.utils;
import java.util.ArrayList;
import java.util.List;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.landtool.lanbase.modules.api.utils.DOMUtil;
import com.landtool.lanbase.modules.res.entity.WebService.ParameterInfo;
import com.landtool.lanbase.modules.res.entity.WebService.SchemaDefaultType;
/**
 * ç¬¬äºŒæ­¥ï¼Œä½¿ç”¨DOM解析XML Schema,获取元素名称和类型
 *
 * @author wangleai
 */
public class WADOMUtil {
    private static Logger log = Logger.getLogger(WADOMUtil.class);
    /**
     * æŸ¥æ‰¾æŸä¸ªæ“ä½œå«æœ‰çš„参数
     *
     * @param inputParamList
     * @param document
     * @param typeName         ç±»åž‹åç§°
     * @param xPath            åˆ°element上个结点的xpath
     * @param parentParam
     * @param isSelfDefinition æ˜¯å¦è‡ªå·±å®šä¹‰
     * @throws Exception
     */
    public static void getInputParams(List<ParameterInfo> inputParamList, Document document, String typeName,
                                      String xPath, ParameterInfo parentParam, boolean isSelfDefinition) throws
            Exception {
        // æ˜¯å¦æ·»åŠ ç»“ç‚¹
        boolean canAddParam = true;
        // å‚æ•°
        ParameterInfo param = new ParameterInfo();
        param.setName(typeName);
        // å¯»æ‰¾element节点
        String elementXPath = getElementXPath(xPath, typeName);
        Node elementNode = WADOMUtil.findNode(document, elementXPath);
        // åˆ¤æ–­element是否为空,为空说明该类型名称可能是直接定义在simpleType或complexType中
        // åˆ¤æ–­æ˜¯å¦æ˜¯è‡ªå·±å®šä¹‰ï¼Œé˜²æ­¢åŒåå¯¼è‡´çš„堆栈溢出问题
        if (elementNode != null && isSelfDefinition) {
            // æ˜¯å¦å«type属性
            if (DOMUtil.assertNodeAttributeExist(elementNode, "type")) {
                String type = DOMUtil.getNodeType(elementNode);
                // æ˜¯å¦æ˜¯æ•°ç»„,XML Schema中map会定义成List<Object>的形式
                if (DOMUtil.isArray(elementNode)) {
                    param.setType(SchemaDefaultType.type_array.getType());
                    param.setChildType(type);
                    // å¤æ‚类型数组
                    if (!DOMUtil.isDefaultType(elementNode)) {
                        getInputParams(inputParamList, document, type, xPath, param, false);
                    } else {
                        param.setValue(WAIXPathConstant.VALUEDEF);
                    }
                } else {
                    param.setType(type);
                    // å¤æ‚类型
                    if (!DOMUtil.isDefaultType(elementNode)) {
                        getInputParams(inputParamList, document, type, WAIXPathConstant.SCHEMAXPATH, param, false);
                    } else {
                        param.setValue(WAIXPathConstant.VALUEDEF);
                    }
                }
            } else {
                // æ˜¯å¦æ˜¯æ•°ç»„,XML Schema中map会定义成List<Object>的形式
                if (DOMUtil.isArray(elementNode)) {
                    param.setType(SchemaDefaultType.type_array.getType());
                }
                // å¦‚æžœtype属性不存在,说明该结点的类型在其子结点中定义
                // åˆ¤æ–­æ˜¯simpleType还是complexType
                Node simpleTypeNode = getSimpleTypeNode(document, typeName, elementXPath, true);
                if (simpleTypeNode != null) {
                    String type = DOMUtil.getNodeBase(simpleTypeNode);
                    if (DOMUtil.isArray(elementNode)) {
                        param.setChildType(type);
                    } else {
                        param.setType(type);
                    }
                    param.setValue(WAIXPathConstant.VALUEDEF);
                    // TODO: 2018/2/24
                    // å¿½ç•¥é™å®šæ¡ä»¶
                } else {
                    // å¯»æ‰¾complexType
                    List<Node> nodeList = getComplexTypeSequenceElement(document, typeName, elementXPath, true);
                    if (nodeList.size() != 0) {
                        for (Node tempNode : nodeList) {
                            // éåކelement
                            String elementName = DOMUtil.getNodeName(tempNode);
                            String sequenceXPath = getSequenceXPathByName(document, typeName, elementXPath, true,
                                    elementName);
                            getInputParams(inputParamList, document, elementName, sequenceXPath, param, true);
                        }
                    } else {
                        log.warn("unknown type " + typeName + ",please check your document");
                    }
                }
            }
        } else {
            // éžè‡ªå·±å®šä¹‰çš„Type添加到父结点
            canAddParam = false;
            // åˆ¤æ–­æ˜¯simpleType还是complexType
            Node simpleTypeNode = getSimpleTypeNode(document, typeName, xPath, false);
            if (simpleTypeNode != null) {
                String type = DOMUtil.getNodeBase(simpleTypeNode);
                parentParam.setType(type);
                parentParam.setValue(WAIXPathConstant.VALUEDEF);
                // TODO: 2018/2/24
                // å¿½ç•¥é™å®šæ¡ä»¶
            } else {
                // å¯»æ‰¾complexType
                List<Node> nodeList = getComplexTypeSequenceElement(document, typeName, elementXPath, false);
                if (nodeList.size() != 0) {
                    for (Node tempNode : nodeList) {
                        // éåކelement
                        String elementName = DOMUtil.getNodeName(tempNode);
                        String sequenceXPath = getSequenceXPathByName(document, typeName, elementXPath, false,
                                elementName);
                        getInputParams(inputParamList, document, elementName, sequenceXPath, parentParam, true);
                    }
                } else {
                    log.warn("unknown type " + typeName + ",please check your document");
                }
            }
        }
        if (canAddParam) {
            if (parentParam == null) {
                inputParamList.add(param);
            } else {
                parentParam.addChild(param);
            }
        }
    }
    /**
     * èŽ·å–element的xpath
     *
     * @param xPath    çˆ¶ç»“点xpath
     * @param typeName åç§°
     * @return
     */
    private static String getElementXPath(String xPath, String typeName) {
        String elementXPath = xPath + "/*[local-name()='element' and @name='" + typeName + "']";
        return elementXPath;
    }
    /**
     * èŽ·å–simpleType结点
     *
     * @param document
     * @param simpleTypeName   simpleType名称,当为自己定义时可以为空
     * @param elementXPath     XPath路径,当非自己定义时可以为空
     * @param isSelfDefinition æ˜¯å¦ä¸ºè‡ªå·±å®šä¹‰
     * @return
     * @throws Exception
     */
    private static Node getSimpleTypeNode(Document document, String simpleTypeName, String elementXPath,
                                          boolean isSelfDefinition) throws Exception {
        String simpleTypeXPath = isSelfDefinition
                ? elementXPath + "/*[local-name()='simpleType']/*[local-name()='restriction']"
                : WAIXPathConstant.SCHEMAXPATH + "/*[local-name()='simpleType' and @name='" + simpleTypeName
                + "']/*[local-name()='restriction']";
        Node node = WADOMUtil.findNode(document, simpleTypeXPath);
        return node;
    }
    /**
     * èŽ·å–complexType中element
     *
     * @param document
     * @param complexTypeName  complexType名称,当为自己定义时可以为空
     * @param elementXPath     XPath路径,当非自己定义时可以为空
     * @param isSelfDefinition æ˜¯å¦ä¸ºè‡ªå·±å®šä¹‰
     * @return
     * @throws Exception
     */
    private static List<Node> getComplexTypeSequenceElement(Document document, String complexTypeName,
                                                            String elementXPath, boolean isSelfDefinition) throws
            Exception {
        List<Node> nodeList = new ArrayList<Node>();
        // åˆ¤æ–­æ˜¯å¦æœ‰ç»§æ‰¿
        String extensionXpath = isSelfDefinition
                ? elementXPath + "/*[local-name()='complexType']/*[local-name()='complexContent']/*[local-name()"
                + "='extension']"
                : WAIXPathConstant.SCHEMAXPATH + "/*[local-name()='complexType' and @name='" + complexTypeName
                + "']/*[local-name()='complexContent']/*[local-name()='extension']";
        Node extension = WADOMUtil.findNode(document, extensionXpath);
        if (extension != null) {
            // å­˜åœ¨ç»§æ‰¿
            // æ·»åŠ çˆ¶ç±»
            String parentTypeName = DOMUtil.getAttributeValue(extension, "base").split(":")[1];
            List<Node> parentElements = getComplexTypeSequenceElement(document, parentTypeName, elementXPath, false);
            if (parentElements != null && parentElements.size() > 0) {
                nodeList.addAll(parentElements);
            }
            // æŸ¥æ‰¾è‡ªå·±
            String selfXpath = extensionXpath + "/*[local-name()='sequence']/*[local-name()" + "='element']";
            NodeList selfList = WADOMUtil.findNodeList(document, selfXpath);
            if (selfList != null && selfList.getLength() > 0) {
                nodeList.addAll(DOMUtil.covertNodeListToList(selfList));
            }
        } else {
            // æŸ¥æ‰¾è‡ªå·±çš„属性
            String elementsOfSequenceXpath = isSelfDefinition
                    ? elementXPath + "/*[local-name()='complexType']/*[local-name()='sequence']/*[local-name()"
                    + "='element']"
                    : WAIXPathConstant.SCHEMAXPATH + "/*[local-name()='complexType' and @name='" + complexTypeName
                    + "']/*[local-name()='sequence']/*[local-name()='element']";
            NodeList elementsOfSequence = WADOMUtil.findNodeList(document, elementsOfSequenceXpath);
            nodeList = DOMUtil.covertNodeListToList(elementsOfSequence);
        }
        return nodeList;
    }
    /**
     * èŽ·å–complexType中element上一级sequence的xpath
     *
     * @param document
     * @param complexTypeName  complexType名称,当为自己定义时可以为空
     * @param elementXPath     XPath路径,当非自己定义时可以为空
     * @param isSelfDefinition æ˜¯å¦ä¸ºè‡ªå·±å®šä¹‰
     * @param elementName      ç»“点名称
     * @return
     * @throws Exception
     */
    private static String getSequenceXPathByName(Document document, String complexTypeName, String elementXPath,
                                                 boolean isSelfDefinition, String elementName) throws Exception {
        String result = "";
        // åˆ¤æ–­æ˜¯å¦æœ‰ç»§æ‰¿
        String extensionXpath = isSelfDefinition
                ? elementXPath + "/*[local-name()='complexType']/*[local-name()='complexContent']/*[local-name()"
                + "='extension']"
                : WAIXPathConstant.SCHEMAXPATH + "/*[local-name()='complexType' and @name='" + complexTypeName
                + "']/*[local-name()='complexContent']/*[local-name()='extension']";
        Node extension = WADOMUtil.findNode(document, extensionXpath);
        if (extension != null) {
            // å­˜åœ¨ç»§æ‰¿
            // åœ¨çˆ¶ç±»æŸ¥æ‰¾
            String parentTypeName = DOMUtil.getAttributeValue(extension, "base").split(":")[1];
            result = getSequenceXPathByName(document, parentTypeName, elementXPath, false, elementName);
            // åœ¨è‡ªå·±æŸ¥æ‰¾
            String sequenceXPath = extensionXpath + "/*[local-name()='sequence']";
            String eleXPath = sequenceXPath + "/*[local-name()='element' and @name='" + elementName + "']";
            Node selfNode = WADOMUtil.findNode(document, eleXPath);
            if (selfNode != null) {
                result = sequenceXPath;
            }
        } else {
            // åœ¨è‡ªå·±æŸ¥æ‰¾
            String sequenceXPath = isSelfDefinition
                    ? elementXPath + "/*[local-name()='complexType']/*[local-name()='sequence']"
                    : WAIXPathConstant.SCHEMAXPATH + "/*[local-name()='complexType' and @name='" + complexTypeName
                    + "']/*[local-name()='sequence']";
            String eleXpath = sequenceXPath + "/*[local-name()='element' and @name='" + elementName + "']";
            Node selfNode = WADOMUtil.findNode(document, eleXpath);
            if (selfNode != null) {
                result = sequenceXPath;
            }
        }
        return result;
    }
    /**
     * åœ¨document中查找结点,如果查找不到,则进入import结点中递归查找
     *
     * @param document
     * @param xpathStr
     * @return
     * @throws Exception
     */
    public static Node findNode(Document document, String xpathStr) throws Exception {
        XPath xpath = WAWsdlUtil.getXPath();
        Node node = (Node) xpath.evaluate(xpathStr, document, XPathConstants.NODE);
        if (node == null) {
            List<Document> importDocumentList = WAWsdlUtil.getImportDocumentList(document, xpath);
            for (Document importDoucment : importDocumentList) {
                node = findNode(importDoucment, xpathStr);
                if (node != null) {
                    return node;
                }
            }
        }
        return node;
    }
    /**
     * åœ¨document中查找结点,如果查找不到,则进入import结点中递归查找
     *
     * @param document
     * @param xpathStr
     * @return
     * @throws Exception
     */
    public static NodeList findNodeList(Document document, String xpathStr) throws Exception {
        XPath xpath = WAWsdlUtil.getXPath();
        NodeList nodeList = (NodeList) xpath.evaluate(xpathStr, document, XPathConstants.NODESET);
        if (nodeList.getLength() == 0) {
            List<Document> importDocumentList = WAWsdlUtil.getImportDocumentList(document, xpath);
            for (Document importDoucment : importDocumentList) {
                nodeList = findNodeList(importDoucment, xpathStr);
                if (nodeList.getLength() > 0) {
                    return nodeList;
                }
            }
        }
        return nodeList;
    }
}
src/main/java/com/landtool/lanbase/common/utils/WAIXPathConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
package com.landtool.lanbase.common.utils;
import javax.xml.XMLConstants;
/**
 * æ”¾ç½®å¯¹åº”内容的XPath和其他常量 æˆ‘也是醉了,import中的xsd文件哪怕写入了命名空间,但就是不解析,快要气炸了,暂且搁置命名空间问题
 *
 * @author wangleai
 */
public class WAIXPathConstant {
    /**
     * é»˜è®¤çš„value值,表示需要填入内容
     */
    public static String VALUEDEF = "?";
    /*--------------------------------------------------------发送消息--------------------------------------------------------------*/
    /*-------------------------------------------------------包含命名空间------------------------------------------------------------*/
    /**
     * é»˜è®¤çš„wsdl命名空间
     */
    public static String DEFAULTWSDLNS = "http://schemas.xmlsoap.org/wsdl/";
    /**
     * binding对应的传输uri,soap1.1
     */
    public static String SOAPBINDING11 = "http://schemas.xmlsoap.org/wsdl/soap/";
    /**
     * binding对应的传输uri,soap1.2
     */
    public static String SOAPBINDING12 = "http://schemas.xmlsoap.org/wsdl/soap12/";
    /**
     * é»˜è®¤çš„xml schema命名空间
     */
    public static String DEFAULTSCHEMANS = XMLConstants.W3C_XML_SCHEMA_NS_URI;
    /**
     * definitions xpath
     */
    public static String DEFXPATHNS = "//*[namespace-uri()='" + DEFAULTWSDLNS + "' and local-name()='definitions']";
    /**
     * types xpath
     */
    public static String TYPESXPATHNS = DEFXPATHNS + "/*[namespace-uri()='" + DEFAULTWSDLNS
            + "' and local-name()='types']";
    /**
     * wsdl import xpath
     */
    public static String IMPORTXPATHNS = DEFXPATHNS + "/*[namespace-uri()='" + DEFAULTWSDLNS
            + "' and local-name()='import']";
    /**
     * schema xpath
     */
    public static String SCHEMAXPATHNS = "//*[namespace-uri()='" + DEFAULTSCHEMANS + "' and local-name()='schema']";
    /**
     * schema import xpath
     */
    public static String SCHEMAIMPORTPATHNS = SCHEMAXPATHNS + "/*[namespace-uri()='" + DEFAULTSCHEMANS
            + "' and local-name()='import']";
    /*-------------------------------------------------------不含命名空间------------------------------------------------------------*/
    /**
     * definitions xpath
     */
    public static String DEFXPATH = "//*[local-name()='definitions']";
    /**
     * types xpath
     */
    public static String TYPESXPATH = DEFXPATH + "/*[local-name()='types']";
    /**
     * wsdl import xpath
     */
    public static String IMPORTXPATH = DEFXPATH + "/*[local-name()='import']";
    /**
     * schema xpath
     */
    public static String SCHEMAXPATH = "//*[local-name()='schema']";
    /**
     * schema import xpath
     */
    public static String SCHEMAIMPORTPATH = SCHEMAXPATH + "/*[local-name()='import']";
    /*--------------------------------------------------------接收消息--------------------------------------------------------------*/
    /*-------------------------------------------------------包含命名空间------------------------------------------------------------*/
    /**
     * é»˜è®¤çš„soap1.1命名空间
     */
    public static String SOAP11 = "http://schemas.xmlsoap.org/soap/envelope/";
    /**
     * é»˜è®¤çš„soap1.2命名空间
     */
    public static String SOAP12 = "http://www.w3.org/2003/05/soap-envelope";
    /**
     * header xpath
     */
    public static String HEADER11NSXPATH = "//*[namespace-uri()='" + SOAP11
            + "' and local-name()='Envelope']/*[namespace-uri()='" + SOAP11 + "' and local-name()='Header']";
    /**
     * body xpath
     */
    public static String BODY11NSXPATH = "//*[namespace-uri()='" + SOAP11
            + "' and local-name()='Envelope']/*[namespace-uri()='" + SOAP11 + "' and local-name()='Body']";
    /**
     * fault xpath
     */
    public static String FAULT11NSXPATH = BODY11NSXPATH + "/*[namespace-uri()='" + SOAP11
            + "' and local-name()='Fault']";
    /**
     * faultcode xpath
     */
    public static String FAULTCODE11NSXPATH = FAULT11NSXPATH + "/*[namespace-uri()='" + SOAP11
            + "' and local-name()='faultcode']";
    /**
     * faultstring xpath
     */
    public static String FAULTSTRING11NSXPATH = FAULT11NSXPATH + "/*[namespace-uri()='" + SOAP11
            + "' and local-name()='faultstring']";
    /**
     * header xpath
     */
    public static String HEADER12NSXPATH = "//*[namespace-uri()='" + SOAP12
            + "' and local-name()='Envelope']/*[namespace-uri()='" + SOAP12 + "' and local-name()='Header']";
    /**
     * body xpath
     */
    public static String BODY12NSXPATH = "//*[namespace-uri()='" + SOAP12
            + "' and local-name()='Envelope']/*[namespace-uri()='" + SOAP12 + "' and local-name()='Body']";
    /**
     * fault xpath
     */
    public static String FAULT12NSXPATH = BODY12NSXPATH + "/*[namespace-uri()='" + SOAP12
            + "' and local-name()='Fault']";
    /**
     * faultcode xpath
     */
    public static String FAULTCODE12NSXPATH = FAULT12NSXPATH + "/*[namespace-uri()='" + SOAP12
            + "' and local-name()='Code']/*[namespace-uri()='" + SOAP12 + "' and local-name()='Value']";
    /**
     * faultreason xpath
     */
    public static String FAULTREASON12NSXPATH = FAULT12NSXPATH + "/*[namespace-uri()='" + SOAP12
            + "' and local-name()='Reason']/*[namespace-uri()='" + SOAP12 + "' and local-name()='Text']";
    /**
     * faultdetail xpath
     */
    public static String FAULTDETAIL12NSXPATH = FAULT12NSXPATH + "/*[namespace-uri()='" + SOAP12
            + "' and local-name()='Detail']";
    /*-------------------------------------------------------不含命名空间------------------------------------------------------------*/
    /**
     * header xpath
     */
    public static String HEADERXPATH = "//*[local-name()='Envelope']/*[local-name()='Header']";
    /**
     * body xpath
     */
    public static String BODYXPATH = "//*[local-name()='Envelope']/*[local-name()='Body']";
    /**
     * fault xpath
     */
    public static String FAULTXPATH = BODYXPATH + "/*[local-name()='Fault']";
    /**
     * faultcode xpath
     */
    public static String FAULTCODE11XPATH = FAULTXPATH + "/*[local-name()='faultcode']";
    /**
     * faultstring xpath
     */
    public static String FAULTSTRING11XPATH = FAULTXPATH + "/*[local-name()='faultstring']";
    /**
     * faultcode xpath
     */
    public static String FAULTCODE12XPATH = FAULTXPATH + "/*[local-name()='Code']/*[local-name()='Value']";
    /**
     * faultreason xpath
     */
    public static String FAULTREASON12XPATH = FAULTXPATH + "/*[local-name()='Reason']/*[local-name()='Text']";
    /**
     * faultdetail xpath
     */
    public static String FAULTDETAIL12XPATH = FAULTXPATH + "/*[local-name()='Detail']";
}
src/main/java/com/landtool/lanbase/common/utils/WAWsdlUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,398 @@
package com.landtool.lanbase.common.utils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.wsdl.Binding;
import javax.wsdl.Definition;
import javax.wsdl.Import;
import javax.wsdl.Operation;
import javax.wsdl.Part;
import javax.wsdl.Types;
import javax.wsdl.WSDLException;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.schema.Schema;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.wsdl.xml.WSDLWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import com.landtool.lanbase.modules.api.utils.DOMUtil;
import com.landtool.lanbase.modules.res.entity.WebService.ParameterInfo;
/**
 * ç¬¬ä¸€æ­¥ï¼Œä½¿ç”¨wsdl4j解析wsdl,wsdl文档结构推荐参考http://blog.csdn.net/wudouguerwxx/article/details/2036821
 *
 * @author wangleai
 */
public class WAWsdlUtil {
    private static Logger log = Logger.getLogger(WAWsdlUtil.class);
    private static WSDLFactory wsdlFactory;
    private static WSDLReader wsdlReader;
    private static DocumentBuilder documentBuilder;
    private static XPath xPath;
    /**
     * @return
     * @throws WSDLException
     */
    private static WSDLFactory getWsdlFactory() throws WSDLException {
        if (wsdlFactory == null) {
            wsdlFactory = WSDLFactory.newInstance();
        }
        return wsdlFactory;
    }
    /**
     * @return
     * @throws WSDLException
     */
    private static WSDLReader getWsdlReader() throws WSDLException {
        if (wsdlReader == null) {
            wsdlReader = getWsdlFactory().newWSDLReader();
            wsdlReader.setFeature("javax.wsdl.verbose", true);
            wsdlReader.setFeature("javax.wsdl.importDocuments", true);
        }
        return wsdlReader;
    }
    /**
     * @return
     * @throws ParserConfigurationException
     */
    public static DocumentBuilder getDBBuilder() throws ParserConfigurationException {
        if (documentBuilder == null) {
            // å¾—到DOM解析器的工厂实例
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            // ä»ŽDOM工厂中获得DOM解析器
            documentBuilder = dbFactory.newDocumentBuilder();
        }
        return documentBuilder;
    }
    /**
     * @param wsdlUrl
     * @return
     * @throws WSDLException
     */
    public static Document getDefinitionDocument(String wsdlUrl) throws WSDLException {
        // èŽ·å–wsdl定义
        Definition def = getWsdlReader().readWSDL(wsdlUrl);
        // è½¬æ–‡æ¡£æµ
        WSDLWriter writer = getWsdlFactory().newWSDLWriter();
        Document document = writer.getDocument(def);
        return document;
    }
    /**
     * å¾—到document的查找工具xpath,不支持命名空间
     *
     * @return
     */
    public static XPath getXPath() {
        if (xPath == null) {
            xPath = XPathFactory.newInstance().newXPath();
        }
        return xPath;
    }
    /**
     * å¾—到wsdl文档中方法名
     *
     * @param wsdlUrl       wsdl地址
     * @param operationList æ–¹æ³•集合
     * @throws WSDLException
     */
    public static void getOperationList(String wsdlUrl, List<String> operationList) throws WSDLException {
        // èŽ·å–wsdl定义
        Definition def = getWsdlReader().readWSDL(wsdlUrl);
        // éåކbindings
        Map bindings = def.getBindings();
        Iterator<Map.Entry> iterator = bindings.entrySet().iterator();
        while (iterator.hasNext()) {
            Binding binding = (Binding) iterator.next().getValue();
            if (binding != null) {
                List extEles = binding.getExtensibilityElements();
                if (extEles != null && extEles.size() > 0) {
                    ExtensibilityElement extensibilityElement = (ExtensibilityElement) extEles.get(0);
                    if (extensibilityElement != null) {
                        String namespaceUri = extensibilityElement.getElementType().getNamespaceURI();
                        // é»˜è®¤ä½¿ç”¨soap1.1的binding,与soapui调用一致
                        if (WAIXPathConstant.SOAPBINDING11.equals(namespaceUri)
                                || WAIXPathConstant.SOAPBINDING12.equals(namespaceUri)) {
                            List<Operation> operations = binding.getPortType().getOperations();
                            for (Operation operation : operations) {
                                operationList.add(operation.getName());
                            }
                            break;
                        }
                    }
                }
            }
        }
    }
    /**
     * æ ¹æ®æ“ä½œåç§°æŸ¥è¯¢å…·ä½“对象 æœ‰ç‚¹è›‹ç–¼ï¼Œwsdl4j不存在直接寻找operation的api
     *
     * @param wsdlUrl
     * @param operationName
     * @return
     * @throws WSDLException
     */
    public static Operation getOperationByName(String wsdlUrl, String operationName) throws WSDLException {
        Operation targetOp = null;
        // èŽ·å–wsdl定义
        Definition def = getWsdlReader().readWSDL(wsdlUrl);
        // éåކbindings
        Map bindings = def.getBindings();
        Iterator<Map.Entry> iterator = bindings.entrySet().iterator();
        while (iterator.hasNext()) {
            Binding binding = (Binding) iterator.next().getValue();
            if (binding != null) {
                List extEles = binding.getExtensibilityElements();
                if (extEles != null && extEles.size() > 0) {
                    ExtensibilityElement extensibilityElement = (ExtensibilityElement) extEles.get(0);
                    if (extensibilityElement != null) {
                        String namespaceUri = extensibilityElement.getElementType().getNamespaceURI();
                        // é»˜è®¤ä½¿ç”¨soap1.1的binding,与soapui调用一致
                        if (WAIXPathConstant.SOAPBINDING11.equals(namespaceUri)) {
                            List<Operation> operations = binding.getPortType().getOperations();
                            for (Operation operation : operations) {
                                if (operation.getName().equals(operationName)) {
                                    targetOp = operation;
                                    break;
                                }
                            }
                            break;
                        }
                        if (WAIXPathConstant.SOAPBINDING12.equals(namespaceUri)) {
                            List<Operation> operations = binding.getPortType().getOperations();
                            for (Operation operation : operations) {
                                if (operation.getName().equals(operationName)) {
                                    targetOp = operation;
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        return targetOp;
    }
    /**
     * èŽ·å–å¯¹åº”æ–¹æ³•çš„è¯¦ç»†å‚æ•°ååŠç±»åž‹
     *
     * @param wsdlUrl
     * @param operationName æ“ä½œå
     * @return
     * @throws WSDLException
     */
    public static List<ParameterInfo> getMethodParams(String wsdlUrl, String operationName) throws WSDLException {
        Operation operation = getOperationByName(wsdlUrl, operationName);
        List<ParameterInfo> parameterInfoList = null;
        if (operation == null) {
            log.error("can not find operation " + operationName + " , please check again");
            throw new RuntimeException("can not find operation " + operationName + " , please check again");
        } else {
            // è¾“å…¥
            Map inputParts = operation.getInput().getMessage().getParts();
            parameterInfoList = findParamsByOperation(wsdlUrl, inputParts);
        }
        return parameterInfoList;
    }
    /**
     * èŽ·å–å¯¹åº”æ–¹æ³•çš„è¿”å›žç±»åž‹
     *
     * @param wsdlUrl
     * @param operationName æ“ä½œå
     * @return
     * @throws WSDLException
     */
    public static List<ParameterInfo> getMethodReturn(String wsdlUrl, String operationName) throws WSDLException {
        // æˆ‘更希望返回值限定为json串,会方便很多
        Operation operation = getOperationByName(wsdlUrl, operationName);
        List<ParameterInfo> parameterInfoList = null;
        if (operation == null) {
            log.error("can not find operation " + operationName + " , please check again");
            throw new RuntimeException("can not find operation " + operationName + " , please check again");
        } else {
            // è¾“出
            Map outputParts = operation.getOutput().getMessage().getParts();
            parameterInfoList = findParamsByOperation(wsdlUrl, outputParts);
        }
        return parameterInfoList;
    }
    /**
     * èŽ·å–wsdl数据类型定义容器Types中XML Schema前缀,用于拼接形成完整标签 ç›®å‰ä¸éœ€è¦ä½¿ç”¨ï¼Œå› ä¸ºå¯¹XML Schema均忽略命名空间
     *
     * @param wsdlUrl
     * @return
     * @throws WSDLException
     */
    @Deprecated
    public static String getSchemaPrefix(String wsdlUrl) throws WSDLException {
        String prefix = "";
        // èŽ·å–wsdl定义
        Definition def = getWsdlReader().readWSDL(wsdlUrl);
        // èŽ·å–Types XML Schema文档定义
        Types types = def.getTypes();
        // èŽ·å–æ ‡ç­¾å‰ç¼€å®šä¹‰
        ExtensibilityElement extensibilityElement = (ExtensibilityElement) types.getExtensibilityElements().get(0);
        Schema schema = (Schema) extensibilityElement;
        prefix = schema.getElement().getPrefix();
        if (!StringUtils.isBlank(prefix)) {
            // å‰ç¼€éžç©ºæ—¶åŠ å…¥:
            prefix += ":";
        } else {
            prefix = "";
        }
        return prefix;
    }
    /**
     * æŸ¥æ‰¾æ‰€æœ‰çš„import结点
     *
     * @param document
     * @param xpath
     * @return
     * @throws Exception
     */
    public static List<Document> getImportDocumentList(Document document, XPath xpath) throws Exception {
        List<Document> importDocumentList = new ArrayList<Document>();
        // æŸ¥æ‰¾def中所有的import
        NodeList importNodeList = (NodeList) xpath.evaluate(WAIXPathConstant.IMPORTXPATH, document,
                XPathConstants.NODESET);
        if (importNodeList != null) {
            for (int i = 0; i < importNodeList.getLength(); i++) {
                Node importNode = importNodeList.item(i);
                String location = DOMUtil.getAttributeValue(importNode, "location");
                // æŠŠè¦è§£æžçš„xml文档读入DOM解析器
                if (!StringUtils.isBlank(location)) {
                    Document importDocument = getDefinitionDocument(location);
                    importDocumentList.add(importDocument);
                }
            }
        }
        // æŸ¥æ‰¾schema中所有的import
        NodeList importSchemaNodeList = (NodeList) xpath.evaluate(WAIXPathConstant.SCHEMAIMPORTPATH, document,
                XPathConstants.NODESET);
        if (importSchemaNodeList != null) {
            for (int i = 0; i < importSchemaNodeList.getLength(); i++) {
                Node importNode = importSchemaNodeList.item(i);
                String location = DOMUtil.getAttributeValue(importNode, "schemaLocation");
                // æŠŠè¦è§£æžçš„xml文档读入DOM解析器
                if (!StringUtils.isBlank(location)) {
                    Document importDocument = getDBBuilder().parse(location);
                    importDocumentList.add(importDocument);
                }
            }
        }
        return importDocumentList;
    }
    /**
     * éåކimport ç›®å‰ä¸ä½¿ç”¨
     *
     * @param definition
     * @param operationList
     * @throws WSDLException
     */
    private static void findImport(Definition definition, List<String> operationList) throws WSDLException {
        Map imports = definition.getImports();
        Iterator<Map.Entry> iterator = imports.entrySet().iterator();
        while (iterator.hasNext()) {
            Import anImport = (Import) iterator.next().getValue();
            log.info("import nameSpace:" + anImport.getNamespaceURI() + ",location:" + anImport.getLocationURI());
            // é€’å½’
            getOperationList(anImport.getLocationURI(), operationList);
        }
    }
    /**
     * éåކpart寻找对应方法参数
     *
     * @param wsdlUrl
     * @param parts
     * @return
     * @throws WSDLException
     */
    private static List<ParameterInfo> findParamsByOperation(String wsdlUrl, Map parts) throws WSDLException {
        Document document = getDefinitionDocument(wsdlUrl);
        // å‚æ•°list
        List<ParameterInfo> paramsList = new ArrayList<ParameterInfo>();
        String schemaXPath = WAIXPathConstant.SCHEMAXPATH;
        Iterator<Map.Entry> entryIterator = parts.entrySet().iterator();
        while (entryIterator.hasNext()) {
            Part part = (Part) entryIterator.next().getValue();
            // RPC样式,取type,此时请求并非soap协议,不使用
            if (part.getTypeName() != null) {
                String typeName = part.getTypeName().getLocalPart();
            }
            // æ–‡æ¡£æ ·å¼ï¼Œå–element
            if (part.getElementName() != null) {
                String typeName = part.getElementName().getLocalPart();
                try {
                    WADOMUtil.getInputParams(paramsList, document, typeName, schemaXPath, null, true);
                } catch (Exception e) {
                    log.error(e.getMessage());
                    e.printStackTrace();
                }
            }
        }
        return paramsList;
    }
    /**
     * æµ‹è¯•XPath是否存在结点,一般自用
     *
     * @param wsdlUrl
     * @param path
     * @throws ParserConfigurationException
     * @throws XPathExpressionException
     * @throws IOException
     * @throws SAXException
     * @throws WSDLException
     */
    @Deprecated
    public static void testXpath(String wsdlUrl, String path)
            throws ParserConfigurationException, XPathExpressionException, IOException, SAXException, WSDLException {
        Document document = getDefinitionDocument(wsdlUrl);
        XPath xpath = XPathFactory.newInstance().newXPath();
        Node node = (Node) xpath.evaluate(path, document, XPathConstants.NODE);
        if (node != null) {
            System.out.println("ok");
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/WEBServiceUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.landtool.lanbase.common.utils;
import java.util.ArrayList;
import java.util.List;
import javax.wsdl.WSDLException;
import com.landtool.lanbase.modules.res.entity.WebService.ParameterInfo;
public class WEBServiceUtils {
    public static void main(String[] args) throws WSDLException {
        String wsdluri = "http://127.0.0.1:8443/WebService1.asmx?wsdl";
        List<String> operations = new ArrayList<String>();
        WAWsdlUtil.getOperationList(wsdluri, operations);
        for (String operationName : operations) {
            System.out.println("-----------------operation----------------");
            System.out.println(operationName);
            List<ParameterInfo> parameterInfos = WAWsdlUtil.getMethodParams(wsdluri, operationName);
            printParams(parameterInfos, "");
        }
    }
    private static void printParams(List<ParameterInfo> parameterInfos, String parentName) {
        if (parameterInfos != null) {
            for (ParameterInfo parameterInfo : parameterInfos) {
                System.out.println("parentname : " + parentName + " ; name : " + parameterInfo.getName() + " ; type :" +
                        " " + parameterInfo.getType() + " ;" +
                        " childtype : " + parameterInfo.getChildType());
                printParams(parameterInfo.getChildren(), parameterInfo.getName());
            }
        }
    }
}
src/main/java/com/landtool/lanbase/common/utils/ppt/GraphData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.landtool.lanbase.common.utils.ppt;
import java.util.List;
/**
 * @author lanbase
 * @Description: TODO(图表系列数据)
 * @date 2017-11-30 11:07
 */
public class GraphData {
    // åœ†é¥¼å›¾
    public static final String GRAPH_PIE = "pie";
    // æŸ±çж图
    public static final String GRAPH_BAR = "bar";
    // çº¿æ€§å›¾
    public static final String GRAPH_LINE = "line";
    // é¢ç§¯å›¾
    public static final String GRAPH_AREA = "area";
    // é›·è¾¾å›¾
    public static final String GRAPH_RADAR = "radar";
    // å›¾å½¢æ ‡é¢˜
    private String title;
    // ç³»åˆ—值
    private List<SeriesData> serList;
    public GraphData(String title, List<SeriesData> serList) {
        this.title = title;
        this.serList = serList;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public List<SeriesData> getSerList() {
        return serList;
    }
    public void setSerList(List<SeriesData> serList) {
        this.serList = serList;
    }
}
class SeriesData {
    // ç³»åˆ—名称
    private String serName;
    // ç³»åˆ—值
    private double serVal;
    public SeriesData(String serName, double serVal) {
        this.serName = serName;
        this.serVal = serVal;
    }
    public String getSerName() {
        return serName;
    }
    public void setSerName(String serName) {
        this.serName = serName;
    }
    public double getSerVal() {
        return serVal;
    }
    public void setSerVal(double serVal) {
        this.serVal = serVal;
    }
}
src/main/java/com/landtool/lanbase/common/utils/ppt/PPTUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1073 @@
package com.landtool.lanbase.common.utils.ppt;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.sl.usermodel.AutoNumberingScheme;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFChart;
import org.apache.poi.xslf.usermodel.XSLFShape;
import org.apache.poi.xslf.usermodel.XSLFTextBox;
import org.apache.poi.xslf.usermodel.XSLFTextParagraph;
import org.apache.poi.xslf.usermodel.XSLFTextRun;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAreaChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAreaSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTRadarChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTRadarSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTUnsignedInt;
/**
 * @author lanbase
 * @Description: TODO(PPT公具类)
 * @date 2017-11-30 11:09
 */
public class PPTUtils {
    public static void main(String[] args) throws Exception {
        /*List<SeriesData> dataList = new ArrayList<SeriesData>();
        SeriesData seriesData = new SeriesData("优", 10);
        dataList.add(seriesData);
        seriesData = new SeriesData("中", 150);
        dataList.add(seriesData);
        seriesData = new SeriesData("及格", 80);
        dataList.add(seriesData);
        seriesData = new SeriesData("不及格", 20);
        dataList.add(seriesData);
        GraphData graphData = new GraphData("成绩情况", dataList);
        Map<Integer, GraphData> graphDatas=new HashMap<>();
        graphDatas.put(1, graphData);
        XMLSlideShow pptx = updatePPTGrapth("D:/t.pptx", graphDatas);
        // ä¿å­˜æ–‡ä»¶
        OutputStream out = new FileOutputStream("D:/test.pptx");
        pptx.write(out);
        out.close();
        pptx.close();*/
        XMLSlideShow pptx = updatePPTContent("D:/t.pptx");
        // ä¿å­˜æ–‡ä»¶
        OutputStream out = new FileOutputStream("D:/test.pptx");
        pptx.write(out);
        out.close();
        pptx.close();
        /*List<SeriesData> dataList = new ArrayList<SeriesData>();
        SeriesData seriesData = new SeriesData("优", 6.92);
        dataList.add(seriesData);
        seriesData = new SeriesData("中", 5.95);
        dataList.add(seriesData);
        seriesData = new SeriesData("及格", 7.0);
        dataList.add(seriesData);
        seriesData = new SeriesData("不及格", 6.1);
        dataList.add(seriesData);
        GraphData graphData = new GraphData("成绩情况", dataList);
        List<SeriesData> dataList1 = new ArrayList<SeriesData>();
        SeriesData seriesData1 = new SeriesData("优", 6.53);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("中", 5.72);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("及格", 7.56);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("不及格", 6.0);
        dataList1.add(seriesData1);
        GraphData graphData1 = new GraphData("级成绩情况", dataList1);
        List<GraphData> graphDataList = new ArrayList<>();
        graphDataList.add(graphData);
        graphDataList.add(graphData1);
        Map<Integer, List<GraphData>> graphDatas=new HashMap<>();
        graphDatas.put(0, graphDataList);
        XMLSlideShow pptx = updatePPTGrapthOfBarAndLine("D:/t.pptx", graphDatas);
        // ä¿å­˜æ–‡ä»¶
        OutputStream out = new FileOutputStream("D:/test.pptx");
        pptx.write(out);
        out.close();
        pptx.close();*/
        /*List<SeriesData> dataList = new ArrayList<SeriesData>();
        SeriesData seriesData = new SeriesData("优", 6.92);
        dataList.add(seriesData);
        seriesData = new SeriesData("中", 5.95);
        dataList.add(seriesData);
        seriesData = new SeriesData("及格", 7.0);
        dataList.add(seriesData);
        seriesData = new SeriesData("不及格", 6.1);
        dataList.add(seriesData);
        GraphData graphData = new GraphData("成绩情况", dataList);
        List<SeriesData> dataList1 = new ArrayList<SeriesData>();
        SeriesData seriesData1 = new SeriesData("优", 6.53);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("中", 5.72);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("及格", 7.56);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("不及格", 6.0);
        dataList1.add(seriesData1);
        GraphData graphData1 = new GraphData("级成绩情况", dataList1);
        List<GraphData> graphDataList = new ArrayList<>();
        graphDataList.add(graphData);
        graphDataList.add(graphData1);
        graphDataList.add(graphData);
        graphDataList.add(graphData1);
        graphDataList.add(graphData);
        Map<Integer, List<GraphData>> graphDatas=new HashMap<>();
        graphDatas.put(0, graphDataList);
        XMLSlideShow pptx = updatePPTGrapth("D:/t.pptx", graphDatas);
        // ä¿å­˜æ–‡ä»¶
        OutputStream out = new FileOutputStream("D:/test.pptx");
        pptx.write(out);
        out.close();
        pptx.close();*/
        /*List<SeriesData> dataList = new ArrayList<SeriesData>();
        SeriesData seriesData = new SeriesData("优", 6.92);
        dataList.add(seriesData);
        seriesData = new SeriesData("中", 5.95);
        dataList.add(seriesData);
        seriesData = new SeriesData("及格", 7.0);
        dataList.add(seriesData);
        seriesData = new SeriesData("不及格", 6.1);
        dataList.add(seriesData);
        GraphData graphData = new GraphData("成绩情况", dataList);
        List<SeriesData> dataList1 = new ArrayList<SeriesData>();
        SeriesData seriesData1 = new SeriesData("优", 6.53);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("中", 5.72);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("及格", 7.56);
        dataList1.add(seriesData1);
        seriesData1 = new SeriesData("不及格", 6.0);
        dataList1.add(seriesData1);
        GraphData graphData1 = new GraphData("级成绩情况", dataList1);
        List<GraphData> graphDataList = new ArrayList<>();
        graphDataList.add(graphData);
        graphDataList.add(graphData1);
        graphDataList.add(graphData);
        List<GraphData> graphDataList1 = new ArrayList<>();
        graphDataList1.add(graphData1);
        graphDataList1.add(graphData);
        Map<Integer, List<GraphData>> graphDatas=new HashMap<>();
        graphDatas.put(0, graphDataList);
        graphDatas.put(1, graphDataList1);
        Map<Integer, Map<Integer, List<GraphData>>> gds=new HashMap<>();
        gds.put(0, graphDatas);
        XMLSlideShow pptx = updatePPTGrapthOfBarAndLine("D:/t.pptx", gds);
        // ä¿å­˜æ–‡ä»¶
        OutputStream out = new FileOutputStream("D:/test.pptx");
        pptx.write(out);
        out.close();
        pptx.close();*/
    }
    /**
     * æ›´æ–°ppt的内容
     * @param templateFilePath æ¨¡æ¿æ–‡ä»¶çš„路径
     * @return
     * @throws Exception
     */
    public static XMLSlideShow updatePPTContent(String templateFilePath) throws Exception {
        // æ‰“开模板ppt
        XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(templateFilePath));
        if (pptx.getSlides() != null && pptx.getSlides().size() > 0) {
            // éåŽ†æ¯ä¸€é¡µ
            for (int i = 0;i < pptx.getSlides().size();i++) {
                for (XSLFShape shape : pptx.getSlides().get(i).getShapes()) {
                    //System.out.println(i+": "+shape);
                    /*if(shape instanceof XSLFTable){
                        XSLFTable xslfTable = (XSLFTable) shape;
                        //System.out.println(xslfTable.getShapeName());
                        if("表格 2".equals(xslfTable.getShapeName())){
                            Object[][] datas = {{"陈小姐" , "15817048601",  "女", "23"}, {"陈小姐" , "15817048603",  "女", "24"}, {"陈先生", "15817048602", "男", "28"}};
                            for(int j = 0; j < datas.length; j++){
                                XSLFTableRow tableRow = xslfTable.addRow();
                                for(int k = 0; k < datas[j].length; k++){
                                    XSLFTableCell tableCell = tableRow.addCell();//创建表格单元格
                                    XSLFTextParagraph p = tableCell.addNewTextParagraph();
                                    XSLFTextRun tr = p.addNewTextRun();
                                    tr.setText(String.valueOf(datas[j][k]));
                                    tr.setFontSize(12D);
                                    tr.setFontFamily("宋体");
                                }
                            }
                            // åˆå¹¶å•元格
                            //xslfTable.mergeCells(1, 2, 0, 0);
                        }
                        *//*for(XSLFTableCell cell : xslfTable.getRows().get(1).getCells()){
                        }*//*
                    }*/
                    if (shape instanceof XSLFTextBox) {
                        XSLFTextBox textBox= (XSLFTextBox) shape;
                        //System.out.println(textBox.getText());
                        if (textBox.getText().contains("{title}")) {
                            textBox.clearText();
                            //textBox.setFillColor(Color.LIGHT_GRAY);
                            XSLFTextParagraph paragraph=textBox.addNewTextParagraph();
                            XSLFTextRun run=paragraph.addNewTextRun();
                            run.setText("大街道的名字");
                            run.setBold(true);// åŠ ç²—
                            run.setFontSize(14D);
                            run.setFontFamily("宋体");
                        } else if (textBox.getText().contains("{name}")) {
                            textBox.setText(textBox.getText().replace("{name}", "何先生"));
                            for (XSLFTextParagraph paragraph : textBox.getTextParagraphs()) {
                                for (XSLFTextRun run : paragraph.getTextRuns()) {
                                    run.setFontSize(14D);
                                    run.setFontFamily("宋体");
                                }
                            }
                        } else if (textBox.getText().contains("{date}")) {
                            textBox.setText(textBox.getText().replace("{date}", "2017.12.01"));
                            for (XSLFTextParagraph paragraph : textBox.getTextParagraphs()) {
                                for (XSLFTextRun run : paragraph.getTextRuns()) {
                                    run.setFontSize(12D);
                                    run.setFontFamily("宋体");
                                }
                            }
                        } else if (textBox.getText().contains("{test}")) {
                            /*String str="华尔街是纽约市曼哈顿区南部从百老汇路延伸到东河的一条大街道的名字。在岗实践:做好资源配置,协调项目平稳进行;定期与项目涉及人员沟通,了解员工工作进度和障碍,确保项目高效进行;定期回顾项目推动情况,保证项目高效落地,找到未来提升方向。";
                            str+="\r\n“华尔街”一词现已超越这条街道本身,成为附近区域的代称,亦可指对整个美国经济具有影响力的金融市场和金融机构。";
                            str+="\r\n每次啊。";
                            textBox.setText(textBox.getText().replace("{test}", str));*/
                            //System.out.println(textBox.getTextParagraphs().size());
                            /*for (XSLFTextParagraph paragraph : textBox.getTextParagraphs()) {
                                //System.out.println("SpaceBefore:"+paragraph.getSpaceBefore());
                                //System.out.println("SpaceAfter:"+paragraph.getSpaceAfter());
                                //System.out.println("LineSpacing"+paragraph.getLineSpacing());
                                //paragraph.setIndentLevel(1);
                                //paragraph.setBullet(true);
                                //System.out.println(paragraph.getTextRuns().size());
                                System.out.println(paragraph.getIndent());
                                for (XSLFTextRun run : paragraph.getTextRuns()) {
                                    //run.setFontSize(14.0);
                                    //run.setFontFamily("宋体");
                                    //System.out.println("CharacterSpacing:"+run.getCharacterSpacing());
                                }
                            }*/
                            textBox.clearText();
                            XSLFTextParagraph paragraph=textBox.addNewTextParagraph();
                            //paragraph.setBullet(true);
                            paragraph.setBulletAutoNumber(AutoNumberingScheme.arabicPeriod, 1);
                            paragraph.setIndent(-18.0);
                            paragraph.setLeftMargin(18.0);
                            paragraph.setLineSpacing(150.0);//行距
                            //System.out.println(paragraph.getBulletStyle().getAutoNumberingScheme());
                            XSLFTextRun run=paragraph.addNewTextRun();
                            run.setText("华尔街是纽约市曼哈顿区南部从百老汇路延伸到东河的一条大街道的名字。在岗实践:做好资源配置,协调项目平稳进行;定期与项目涉及人员沟通,了解员工工作进度和障碍,确保项目高效进行;定期回顾项目推动情况,保证项目高效落地,找到未来提升方向。");
                            run.setFontSize(12D);
                            run.setFontFamily("宋体");
                            paragraph=textBox.addNewTextParagraph();
                            //paragraph.setBullet(true);
                            paragraph.setBulletAutoNumber(AutoNumberingScheme.arabicPeriod, 1);
                            paragraph.setIndent(-18.0);
                            paragraph.setLeftMargin(18.0);
                            paragraph.setLineSpacing(150.0);//行距
                            run=paragraph.addNewTextRun();
                            run.setText("“华尔街”一词现已超越这条街道本身,成为附近区域的代称,亦可指对整个美国经济具有影响力的金融市场和金融机构。");
                            run.setFontSize(12D);
                            run.setFontFamily("宋体");
                        }
                    }
                    /*if (shape instanceof XSLFTextShape) {
                        XSLFTextShape txShape = (XSLFTextShape) shape;
                        System.out.println("XSLFTextShape: "+txShape.getText());
                        if (txShape.getText().contains("{name}")) {
                            txShape.setText(txShape.getText().replace("{name}", "何先生"));
                        } else if (txShape.getText().contains("{date}")) {
                            //txShape.setText(txShape.getText().replace("{date}", "2017.12.01"));
                            for (XSLFTextParagraph paragraph : txShape.getTextParagraphs()) {
                                for (XSLFTextRun run : paragraph.getTextRuns()) {
                                    System.out.println(run.getRawText());
                                }
                            }
                        } else if (txShape.getText().contains("{test}")) {
                            //String str="华尔街是纽约市曼哈顿区南部从百老汇路延伸到东河的一条大街道的名字。在岗实践:做好资源配置,协调项目平稳进行;定期与项目涉及人员沟通,了解员工工作进 åº¦å’Œéšœç¢ï¼Œç¡®ä¿é¡¹ç›®é«˜æ•ˆè¿›è¡Œï¼›å®šæœŸå›žé¡¾é¡¹ç›®æŽ¨åŠ¨æƒ…å†µï¼Œä¿è¯é¡¹ç›®é«˜æ•ˆè½åœ°ï¼Œæ‰¾åˆ°æœªæ¥æå‡æ–¹å‘ã€‚";
                            //String str1="“华尔街”一词现已超越这条街道本身,成为附近区域的代称,亦可指对整个美国经济具有影响力的金融市场和金融机构。";
                            //String str2="每次啊。";
                            //txShape.setText(txShape.getText().replace("{test}", str2));
                            //txShape.appendText(str, false);
                            //txShape.appendText(str1, false);
                            //txShape.setText(txShape.getText().replace("{test}", ""));
                            txShape.clearText();
                            XSLFTextParagraph paragraph=txShape.addNewTextParagraph();
                            XSLFTextRun run=paragraph.addNewTextRun();
                            run.setText("华尔街是纽约市曼哈顿区南部从百老汇路延伸到东河的一条大街道的名字。在岗实践:做好资源配置,协调项目平稳进行;定期与项目涉及人员沟通,了解员工工作进度和障碍,确保项目高效进行;定期回顾项目推动情况,保证项目高效落地,找到未来提升方向。");
                            run.setFontSize(12D);
                            run.setFontFamily("宋体");
                            run.setFontColor(Color.BLUE);
                            paragraph=txShape.addNewTextParagraph();
                            run=paragraph.addNewTextRun();
                            run.setText("“华尔街”一词现已超越这条街道本身,成为附近区域的代称,亦可指对整个美国经济具有影响力的金融市场和金融机构。");
                            run.setFontSize(12D);
                            run.setFontFamily("宋体");
                            run.setFontColor(Color.RED);
                            //txShape.setAnchor(new java.awt.Rectangle(50, 150, 400, 400));
                            txShape.resizeToFitText();
                        } else if (txShape.getText().contains("{test1}")) {
                            txShape.setText(txShape.getText().replace("{test1}", "评价标准"));
                        }
                    }*/
                    /*if (shape instanceof XSLFGroupShape) {
                        XSLFGroupShape grShape = (XSLFGroupShape) shape;
                        System.out.println("XSLFGroupShape: "+grShape.getShapes());
                        for(XSLFShape s : grShape.getShapes()){
                            if (s instanceof XSLFTextShape) {
                                XSLFTextShape txShape = (XSLFTextShape) s;
                                System.out.println("XSLFGroupShape XSLFTextShape: "+txShape.getText());
                            }
                            if (s instanceof XSLFAutoShape) {
                                XSLFAutoShape atShape = (XSLFAutoShape) s;
                                System.out.println("XSLFGroupShape XSLFAutoShape: "+atShape.getText());
                            }
                        }
                    }*/
                    /*if (shape instanceof XSLFAutoShape) {
                        XSLFAutoShape atShape = (XSLFAutoShape) shape;
                        System.out.println("XSLFAutoShape: "+atShape.getText());
                    }*/
                }
            }
        }
        return pptx;
    }
    /**
     * æ›´æ–°ppt的图表
     * @param templateFilePath æ¨¡æ¿æ–‡ä»¶çš„路径
     * @param graphDatas å›¾è¡¨æ•°æ®map,map的key为ppt的页码下标
     * @return
     * @throws Exception
     */
    public static XMLSlideShow updatePPTGrapth(String templateFilePath, Map<Integer, List<GraphData>> graphDatas) throws Exception {
        // æ‰“开模板ppt
        XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(templateFilePath));
        if (pptx.getSlides() != null && pptx.getSlides().size() > 0) {
            // éåŽ†æ¯ä¸€é¡µ
            for (int i = 0;i < pptx.getSlides().size();i++) {
                for (POIXMLDocumentPart part : pptx.getSlides().get(i).getRelations()) {
                    if (part instanceof XSLFChart) {
                        if (graphDatas != null && graphDatas.get(i) != null) {
                            updateGraph((XSLFChart) part, graphDatas.get(i));
                        }
                    }
                }
            }
        }
        return pptx;
    }
    /**
     * æ›´æ–°ppt的柱状图和线性图的组合图表
     * @param templateFilePath
     * @param graphDatas
     * @return
     * @throws Exception
     */
    public static XMLSlideShow updatePPTGrapthOfBarAndLine(String templateFilePath, Map<Integer, Map<Integer, List<GraphData>>> graphDatas) throws Exception {
        // æ‰“开模板ppt
        XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(templateFilePath));
        if (pptx.getSlides() != null && pptx.getSlides().size() > 0) {
            // éåŽ†æ¯ä¸€é¡µ
            for (int i = 0;i < pptx.getSlides().size();i++) {
                for (POIXMLDocumentPart part : pptx.getSlides().get(i).getRelations()) {
                    if (part instanceof XSLFChart) {
                        if (graphDatas != null && graphDatas.get(i) != null) {
                            updateBarAndLineGraph((XSLFChart) part, graphDatas.get(i));
                        }
                    }
                }
            }
        }
        return pptx;
    }
    /**
     * æ›´æ–°æŸ±çŠ¶å›¾å’Œçº¿æ€§å›¾çš„ç»„åˆå›¾è¡¨æ•°æ®
     * @param chart
     * @param graphDatas æŸ±çŠ¶å›¾å’Œçº¿æ€§å›¾çš„graphDataList的map map的下标0为柱状图的graphDataList,1为线性图的
     * @return
     */
    private static boolean updateBarAndLineGraph(XSLFChart chart, Map<Integer, List<GraphData>> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        if (graphDatas.size() > 3) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            Row row = null;
            for (Integer i : graphDatas.keySet()) {
                if (graphDatas.get(i).isEmpty()) {
                    return false;
                }
                if (0 == i) {
                    // æŸ±çж图
                    CTBarChart tempChart = plotArea.getBarChartArray(0);
                    CTBarSer ser = null;
                    CTSerTx tx = null;
                    for (int j = 0; j < graphDatas.get(i).size(); j++) {
                        if (graphDatas.get(i).get(j) == null) {
                            return false;
                        }
                        // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                        if (tempChart.getSerArray().length <= j) {
                            // æ–°å¢ž
                            ser = tempChart.addNewSer();
                            ser.addNewIdx().setVal(j);
                            ser.addNewOrder().setVal(j);
                            ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                            ser.addNewCat().addNewStrRef().addNewStrCache().addNewPtCount();
                            ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                        } else {
                            ser = tempChart.getSerArray(j);
                        }
                        tx = ser.getTx();
                        tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).get(j).getTitle());
                        row = sheet.getRow(0);
                        if (row == null) {
                            row = sheet.createRow(0);
                        }
                        row.createCell(j+1).setCellValue(graphDatas.get(i).get(j).getTitle());
                        String titleRef = new CellReference(sheet.getSheetName(), 0, j+1, true, true).formatAsString();
                        tx.getStrRef().setF(titleRef);
                        // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                        CTAxDataSource cat = ser.getCat();
                        // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                        CTNumDataSource val = ser.getVal();
                        updateGraphContent(sheet, cat, val, graphDatas.get(i).get(j), j+1, false);
                    }
                } else if (1==i) {
                    // çº¿æ€§å›¾
                    CTLineChart tempChart = null;
                    if (plotArea.getLineChartArray().length > 0) {
                        tempChart = plotArea.getLineChartArray(0);
                    } else {
                        tempChart = plotArea.addNewLineChart();
                        /*tempChart.addNewGrouping().setVal(STGrouping.Enum.forString("standard"));
                        tempChart.addNewVaryColors().setVal(false);
                        CTDLbls ctdLbls = tempChart.addNewDLbls();
                        ctdLbls.addNewShowLegendKey().setVal(false);
                        ctdLbls.addNewShowVal().setVal(false);
                        ctdLbls.addNewShowCatName().setVal(false);
                        ctdLbls.addNewShowSerName().setVal(false);
                        ctdLbls.addNewShowPercent().setVal(false);
                        ctdLbls.addNewShowBubbleSize().setVal(false);
                        tempChart.addNewMarker().setVal(true);
                        tempChart.addNewSmooth().setVal(false);*/
                        CTUnsignedInt[] ctUnsignedInts = plotArea.getBarChartArray(0).getAxIdArray();
                        if (ctUnsignedInts != null) {
                            for (CTUnsignedInt ctUnsignedInt : ctUnsignedInts) {
                                if (ctUnsignedInt != null) {
                                    tempChart.addNewAxId().setVal(ctUnsignedInt.getVal());
                                }
                            }
                        }
                    }
                    CTLineSer ser = null;
                    CTSerTx tx = null;
                    for (int j = 0; j < graphDatas.get(i).size(); j++) {
                        if (graphDatas.get(i).get(j) == null) {
                            return false;
                        }
                        // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                        if (tempChart.getSerArray().length <= j) {
                            // æ–°å¢ž
                            ser = tempChart.addNewSer();
                            ser.addNewIdx().setVal(graphDatas.get(0).size()+j);
                            ser.addNewOrder().setVal(graphDatas.get(0).size()+j);
                            ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                            ser.addNewCat().addNewStrRef().addNewStrCache().addNewPtCount();
                            ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                        } else {
                            ser = tempChart.getSerArray(j);
                        }
                        tx = ser.getTx();
                        tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).get(j).getTitle());
                        row = sheet.getRow(0);
                        if (row == null) {
                            row = sheet.createRow(0);
                        }
                        row.createCell(graphDatas.get(0).size()+j+1).setCellValue(graphDatas.get(i).get(j).getTitle());
                        String titleRef = new CellReference(sheet.getSheetName(), 0, graphDatas.get(0).size()+j+1, true, true).formatAsString();
                        tx.getStrRef().setF(titleRef);
                        // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                        CTAxDataSource cat = ser.getCat();
                        // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                        CTNumDataSource val = ser.getVal();
                        updateGraphContent(sheet, cat, val, graphDatas.get(i).get(j), graphDatas.get(0).size()+j+1, false);
                    }
                }
            }
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    private static boolean updateGraph(XSLFChart chart, List<GraphData> graphDatas) {
        String type = getGraphType(chart);
        if (GraphData.GRAPH_PIE.equalsIgnoreCase(type)) {
            return updatePieGraph(chart, graphDatas);
        } else if (GraphData.GRAPH_BAR.equalsIgnoreCase(type)) {
            return updateBarGraph(chart, graphDatas);
        } else if (GraphData.GRAPH_LINE.equalsIgnoreCase(type)) {
            return updateLineGraph(chart, graphDatas);
        } else if (GraphData.GRAPH_AREA.equalsIgnoreCase(type)) {
            return updateAreaGraph(chart, graphDatas);
        } else if (GraphData.GRAPH_RADAR.equalsIgnoreCase(type)) {
            return updateRadarGraph(chart, graphDatas);
        } else {
            return false;
        }
    }
    /**
     * èŽ·å–å›¾è¡¨ç±»åž‹
     *
     * @param chart
     * @return
     */
    private static String getGraphType(XSLFChart chart)
    {
        String graphTye = "noSupport";
        CTPlotArea plot = chart.getCTChart().getPlotArea();
        if (null != plot && plot.getBarChartList().size() > 0) {
            graphTye = GraphData.GRAPH_BAR;
        } else if (null != plot && plot.getPieChartList().size() > 0) {
            graphTye = GraphData.GRAPH_PIE;
        } else if (null != plot && plot.getLineChartList().size() > 0) {
            graphTye = GraphData.GRAPH_LINE;
        } else if (null != plot && plot.getAreaChartList().size() > 0) {
            graphTye = GraphData.GRAPH_AREA;
        } else if (null != plot && plot.getRadarChartList().size() > 0) {
            graphTye = GraphData.GRAPH_RADAR;
        }
        return graphTye;
    }
    /**
     * æ›´æ–°åœ†é¥¼å›¾æ•°æ®ï¼ˆé¥¼å›¾åªæœ‰ä¸€ä¸ªç³»åˆ—)
     * @param chart
     * @param graphDatas
     * @return
     */
    private static boolean updatePieGraph(XSLFChart chart, List<GraphData> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            CTPieChart tempChart = plotArea.getPieChartArray(0);
            // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
            CTPieSer ser = tempChart.getSerArray(0);
            CTSerTx tx = ser.getTx();
            tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(0).getTitle());
            sheet.createRow(0).createCell(1).setCellValue(graphDatas.get(0).getTitle());
            String titleRef = new CellReference(sheet.getSheetName(), 0, 1, true, true).formatAsString();
            tx.getStrRef().setF(titleRef);
            // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
            CTAxDataSource cat = ser.getCat();
            // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
            CTNumDataSource val = ser.getVal();
            updateGraphContent(sheet, cat, val, graphDatas.get(0), 1, false);
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    /**
     * æ›´æ–°æŸ±çŠ¶å›¾æ•°æ®
     * @param chart
     * @param graphDatas
     * @return
     */
    private static boolean updateBarGraph(XSLFChart chart, List<GraphData> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
            CTBarChart tempChart = plotArea.getBarChartArray(0);
            CTBarSer ser = null;
            CTSerTx tx = null;
            Row row = null;
            for (int i = 0; i < graphDatas.size(); i++) {
                // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                if (tempChart.getSerArray().length <= i) {
                    // æ–°å¢ž
                    ser = tempChart.addNewSer();
                    ser.addNewIdx().setVal(i);
                    ser.addNewOrder().setVal(i);
                    ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                    ser.addNewCat().addNewStrRef().addNewStrCache().addNewPtCount();
                    ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                } else {
                    ser = tempChart.getSerArray(i);
                }
                tx = ser.getTx();
                tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).getTitle());
                row = sheet.getRow(0);
                if (row == null) {
                    row = sheet.createRow(0);
                }
                row.createCell(i+1).setCellValue(graphDatas.get(i).getTitle());
                String titleRef = new CellReference(sheet.getSheetName(), 0, i+1, true, true).formatAsString();
                tx.getStrRef().setF(titleRef);
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                CTAxDataSource cat = ser.getCat();
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                CTNumDataSource val = ser.getVal();
                updateGraphContent(sheet, cat, val, graphDatas.get(i), i+1, false);
            }
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    /**
     * æ›´æ–°çº¿æ€§å›¾æ•°æ®
     * @param chart
     * @param graphDatas
     * @return
     */
    private static boolean updateLineGraph(XSLFChart chart, List<GraphData> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
            CTLineChart tempChart = plotArea.getLineChartArray(0);
            CTLineSer ser = null;
            CTSerTx tx = null;
            Row row = null;
            for (int i = 0; i < graphDatas.size(); i++) {
                // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                if (tempChart.getSerArray().length <= i) {
                    // æ–°å¢ž
                    ser = tempChart.addNewSer();
                    ser.addNewIdx().setVal(i);
                    ser.addNewOrder().setVal(i);
                    ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                    ser.addNewCat().addNewStrRef().addNewStrCache().addNewPtCount();
                    ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                } else {
                    ser = tempChart.getSerArray(i);
                }
                tx = ser.getTx();
                tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).getTitle());
                row = sheet.getRow(0);
                if (row == null) {
                    row = sheet.createRow(0);
                }
                row.createCell(i+1).setCellValue(graphDatas.get(i).getTitle());
                String titleRef = new CellReference(sheet.getSheetName(), 0, i+1, true, true).formatAsString();
                tx.getStrRef().setF(titleRef);
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                CTAxDataSource cat = ser.getCat();
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                CTNumDataSource val = ser.getVal();
                updateGraphContent(sheet, cat, val, graphDatas.get(i), i+1, false);
            }
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    /**
     * æ›´æ–°é¢ç§¯å›¾æ•°æ®
     * @param chart
     * @param graphDatas
     * @return
     */
    private static boolean updateAreaGraph(XSLFChart chart, List<GraphData> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
            CTAreaChart tempChart = plotArea.getAreaChartArray(0);
            CTAreaSer ser = null;
            CTSerTx tx = null;
            Row row = null;
            for (int i = 0; i < graphDatas.size(); i++) {
                // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                if (tempChart.getSerArray().length <= i) {
                    // æ–°å¢ž
                    ser = tempChart.addNewSer();
                    ser.addNewIdx().setVal(i);
                    ser.addNewOrder().setVal(i);
                    ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                    ser.addNewCat().addNewNumRef().addNewNumCache().addNewPtCount();
                    ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                } else {
                    ser = tempChart.getSerArray(i);
                }
                tx = ser.getTx();
                tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).getTitle());
                row = sheet.getRow(0);
                if (row == null) {
                    row = sheet.createRow(0);
                }
                row.createCell(i+1).setCellValue(graphDatas.get(i).getTitle());
                String titleRef = new CellReference(sheet.getSheetName(), 0, i+1, true, true).formatAsString();
                tx.getStrRef().setF(titleRef);
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                CTAxDataSource cat = ser.getCat();
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                CTNumDataSource val = ser.getVal();
                updateGraphContent(sheet, cat, val, graphDatas.get(i), i+1, true);
            }
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try
                    {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    /**
     * æ›´æ–°é›·è¾¾å›¾æ•°æ®
     * @param chart
     * @param graphDatas
     * @return
     */
    private static boolean updateRadarGraph(XSLFChart chart, List<GraphData> graphDatas) {
        boolean result = true;
        if (graphDatas.isEmpty()) {
            return false;
        }
        // æŠŠå›¾è¡¨ç»‘定到Excel workbook中
        try {
            Workbook wb = new XSSFWorkbook();
            Sheet sheet = wb.createSheet();
            CTChart ctChart = chart.getCTChart();
            CTPlotArea plotArea = ctChart.getPlotArea();
            // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
            CTRadarChart tempChart = plotArea.getRadarChartArray(0);
            CTRadarSer ser = null;
            CTSerTx tx = null;
            Row row = null;
            for (int i = 0; i < graphDatas.size(); i++) {
                // èŽ·å–å›¾è¡¨çš„ç³»åˆ—
                if (tempChart.getSerArray().length <= i) {
                    // æ–°å¢ž
                    ser = tempChart.addNewSer();
                    ser.addNewIdx().setVal(i);
                    ser.addNewOrder().setVal(i);
                    ser.addNewTx().addNewStrRef().addNewStrCache().addNewPt().setIdx(0);
                    ser.addNewCat().addNewNumRef().addNewNumCache().addNewPtCount();
                    ser.addNewVal().addNewNumRef().addNewNumCache().addNewPtCount();
                } else {
                    ser = tempChart.getSerArray(i);
                }
                tx = ser.getTx();
                tx.getStrRef().getStrCache().getPtArray(0).setV(graphDatas.get(i).getTitle());
                row = sheet.getRow(0);
                if (row == null) {
                    row = sheet.createRow(0);
                }
                row.createCell(i+1).setCellValue(graphDatas.get(i).getTitle());
                String titleRef = new CellReference(sheet.getSheetName(), 0, i+1, true, true).formatAsString();
                tx.getStrRef().setF(titleRef);
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„åç§°
                CTAxDataSource cat = ser.getCat();
                // èŽ·å–å›¾è¡¨ç³»åˆ—çš„å€¼
                CTNumDataSource val = ser.getVal();
                updateGraphContent(sheet, cat, val, graphDatas.get(i), i+1, true);
            }
            // æ›´æ–°åµŒå…¥çš„workbook
            POIXMLDocumentPart xlsPart = chart.getRelations().get(0);
            OutputStream xlsOut = xlsPart.getPackagePart().getOutputStream();
            try {
                wb.write(xlsOut);
                xlsOut.close();
            } catch (IOException e) {
                result = false;
            } finally {
                if (wb != null) {
                    try
                    {
                        wb.close();
                    } catch (IOException e) {
                        result = false;
                    }
                }
            }
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
    /**
     * æ›´æ–°å›¾è¡¨å†…容
     * @param sheet
     * @param cat
     * @param val
     * @param graphData
     * @param rowNum sheet的列的下标
     * @param catNumRef cat是否numRef
     */
    private static void updateGraphContent(Sheet sheet, CTAxDataSource cat, CTNumDataSource val, GraphData graphData, int rowNum, boolean catNumRef) {
        int serSize = graphData.getSerList().size();
        CTStrData catStrData = null;
        CTNumData catNumData = null;
        CTNumData valNumData = val.getNumRef().getNumCache();
        valNumData.setPtArray((CTNumVal[]) null);
        if (catNumRef) {
            catNumData = cat.getNumRef().getNumCache();
            catNumData.setPtArray((CTNumVal[]) null);
        } else {
            catStrData = cat.getStrRef().getStrCache();
            catStrData.setPtArray((CTStrVal[]) null);
        }
        Row row = null;
        Cell cell0 = null;
        for (int i = 0; i < serSize; i++) {
            CTNumVal valNumVal = valNumData.addNewPt();
            valNumVal.setIdx(i);
            valNumVal.setV(graphData.getSerList().get(i).getSerVal() + "");
            if (catNumRef) {
                CTNumVal catNumVal = catNumData.addNewPt();
                catNumVal.setIdx(i);
                catNumVal.setV(graphData.getSerList().get(i).getSerVal() + "");
            } else {
                CTStrVal catStrVal = catStrData.addNewPt();
                catStrVal.setIdx(i);
                catStrVal.setV(graphData.getSerList().get(i).getSerName());
            }
            row = sheet.getRow(i+1);
            if(row == null){
                row = sheet.createRow(i+1);
            }
            cell0 = row.getCell(0);
            if(cell0 == null){
                cell0 = row.createCell(0);
            }
            cell0.setCellValue(graphData.getSerList().get(i).getSerName());
            row.createCell(rowNum).setCellValue(graphData.getSerList().get(i).getSerVal());
        }
        valNumData.getPtCount().setVal(serSize);
        if (catNumRef) {
            catNumData.getPtCount().setVal(serSize);
        } else {
            catStrData.getPtCount().setVal(serSize);
        }
        String numDataRange = new CellRangeAddress(1, serSize, rowNum, rowNum).formatAsString(sheet.getSheetName(), true);
        val.getNumRef().setF(numDataRange);
        String axisDataRange = new CellRangeAddress(1, serSize, 0, 0).formatAsString(sheet.getSheetName(), true);
        if (catNumRef) {
            cat.getNumRef().setF(axisDataRange);
        } else {
            cat.getStrRef().setF(axisDataRange);
        }
    }
}
src/main/java/com/landtool/lanbase/common/validator/ValidatorUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package com.landtool.lanbase.common.validator;
import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import com.landtool.lanbase.common.exception.LanbaseException;
/**
 * å‚考文档:http://docs.jboss.org/hibernate/validator/5.4/reference/en-US/html_single/
 * @author lanbase
 * @Description: TODO(hibernate-validator校验工具类)
 * @date 2017-6-23 15:07
 */
public class ValidatorUtils {
    private static Validator validator;
    static {
        validator = Validation.buildDefaultValidatorFactory().getValidator();
    }
    /**
     * æ ¡éªŒå¯¹è±¡
     * @param object        å¾…校验对象
     * @param groups        å¾…校验的组
     * @throws LanbaseException  æ ¡éªŒä¸é€šè¿‡
     */
    public static void validateEntity(Object object, Class<?>... groups)
            throws LanbaseException {
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);
        if (!constraintViolations.isEmpty()) {
            StringBuilder msg = new StringBuilder();
            for(ConstraintViolation<Object> constraint:  constraintViolations){
                msg.append(constraint.getMessage()).append("<br>");
            }
            throw new LanbaseException(msg.toString());
        }
    }
}
src/main/java/com/landtool/lanbase/common/validator/group/AddGroup.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.landtool.lanbase.common.validator.group;
/**
 * @author lanbase
 * @Description: TODO(新增数据 Group)
 * @date 2017-6-23 15:07
 */
public interface AddGroup {
}
src/main/java/com/landtool/lanbase/common/validator/group/Group.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.landtool.lanbase.common.validator.group;
import javax.validation.GroupSequence;
/**
 * @author lanbase
 * @Description: TODO(定义校验顺序,如果AddGroup组失败,则UpdateGroup组不会再校验)
 * @date 2017-6-23 15:07
 */
@GroupSequence({AddGroup.class, UpdateGroup.class})
public interface Group {
}
src/main/java/com/landtool/lanbase/common/validator/group/UpdateGroup.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package com.landtool.lanbase.common.validator.group;
/**
 * @author lanbase
 * @Description: TODO(更新数据 Group)
 * @date 2017-6-23 15:07
 */
public interface UpdateGroup {
}
src/main/java/com/landtool/lanbase/common/xss/HTMLFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,699 @@
package com.landtool.lanbase.common.xss;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
/**
 *
 * HTML filtering utility for protecting against XSS (Cross Site Scripting).
 *
 * This code is licensed LGPLv3
 *
 * This code is a Java port of the original work in PHP by Cal Hendersen.
 * http://code.iamcal.com/php/lib_filter/
 *
 * The trickiest part of the translation was handling the differences in regex handling
 * between PHP and Java.  These resources were helpful in the process:
 *
 * http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html
 * http://us2.php.net/manual/en/reference.pcre.pattern.modifiers.php
 * http://www.regular-expressions.info/modifiers.html
 *
 * A note on naming conventions: instance variables are prefixed with a "v"; global
 * constants are in all caps.
 *
 * Sample use:
 * String input = ...
 * String clean = new HTMLFilter().filter( input );
 *
 * The class is not thread safe. Create a new instance if in doubt.
 *
 * If you find bugs or have suggestions on improvement (especially regarding
 * performance), please contact us.  The latest version of this
 * source, and our contact details, can be found at http://xss-html-filter.sf.net
 *
 * @author Joseph O'Connell
 * @author Cal Hendersen
 * @author Michael Semb Wever
 */
public final class HTMLFilter {
    /** regex flag union representing /si modifiers in php **/
    private static final int REGEX_FLAGS_SI = Pattern.CASE_INSENSITIVE | Pattern.DOTALL;
    private static final Pattern P_COMMENTS = Pattern.compile("<!--(.*?)-->", Pattern.DOTALL);
    private static final Pattern P_COMMENT = Pattern.compile("^!--(.*)--$", REGEX_FLAGS_SI);
    private static final Pattern P_TAGS = Pattern.compile("<(.*?)>", Pattern.DOTALL);
    private static final Pattern P_END_TAG = Pattern.compile("^/([a-z0-9]+)", REGEX_FLAGS_SI);
    private static final Pattern P_START_TAG = Pattern.compile("^([a-z0-9]+)(.*?)(/?)$", REGEX_FLAGS_SI);
    private static final Pattern P_QUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)=([\"'])(.*?)\\2", REGEX_FLAGS_SI);
    private static final Pattern P_UNQUOTED_ATTRIBUTES = Pattern.compile("([a-z0-9]+)(=)([^\"\\s']+)", REGEX_FLAGS_SI);
    private static final Pattern P_PROTOCOL = Pattern.compile("^([^:]+):", REGEX_FLAGS_SI);
    private static final Pattern P_ENTITY = Pattern.compile("&#(\\d+);?");
    private static final Pattern P_ENTITY_UNICODE = Pattern.compile("&#x([0-9a-f]+);?");
    private static final Pattern P_ENCODE = Pattern.compile("%([0-9a-f]{2});?");
    private static final Pattern P_VALID_ENTITIES = Pattern.compile("&([^&;]*)(?=(;|&|$))");
    private static final Pattern P_VALID_QUOTES = Pattern.compile("(>|^)([^<]+?)(<|$)", Pattern.DOTALL);
    private static final Pattern P_END_ARROW = Pattern.compile("^>");
    private static final Pattern P_BODY_TO_END = Pattern.compile("<([^>]*?)(?=<|$)");
    private static final Pattern P_XML_CONTENT = Pattern.compile("(^|>)([^<]*?)(?=>)");
    private static final Pattern P_STRAY_LEFT_ARROW = Pattern.compile("<([^>]*?)(?=<|$)");
    private static final Pattern P_STRAY_RIGHT_ARROW = Pattern.compile("(^|>)([^<]*?)(?=>)");
    private static final Pattern P_AMP = Pattern.compile("&");
    private static final Pattern P_QUOTE = Pattern.compile("<");
    private static final Pattern P_LEFT_ARROW = Pattern.compile("<");
    private static final Pattern P_RIGHT_ARROW = Pattern.compile(">");
    private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>");
    // @xxx could grow large... maybe use sesat's ReferenceMap
    private static final ConcurrentMap<String,Pattern> P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<String, Pattern>();
    private static final ConcurrentMap<String,Pattern> P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<String, Pattern>();
    /** set of allowed html elements, along with allowed attributes for each element **/
    private final Map<String, List<String>> vAllowed;
    /** counts of open tags for each (allowable) html element **/
    private final Map<String, Integer> vTagCounts = new HashMap<String, Integer>();
    /** html elements which must always be self-closing (e.g. "<img />") **/
    private final String[] vSelfClosingTags;
    /** html elements which must always have separate opening and closing tags (e.g. "<b></b>") **/
    private final String[] vNeedClosingTags;
    /** set of disallowed html elements **/
    private final String[] vDisallowed;
    /** attributes which should be checked for valid protocols **/
    private final String[] vProtocolAtts;
    /** allowed protocols **/
    private final String[] vAllowedProtocols;
    /** tags which should be removed if they contain no content (e.g. "<b></b>" or "<b />") **/
    private final String[] vRemoveBlanks;
    /** entities allowed within html markup **/
    private final String[] vAllowedEntities;
    /** flag determining whether comments are allowed in input String. */
    private final boolean stripComment;
    private final boolean encodeQuotes;
    private boolean vDebug = false;
    /**
     * flag determining whether to try to make tags when presented with "unbalanced"
     * angle brackets (e.g. "<b text </b>" becomes "<b> text </b>").  If set to false,
     * unbalanced angle brackets will be html escaped.
     */
    private final boolean alwaysMakeTags;
    /**
     * ç”¨æˆ·åˆ¤æ–­ç”¨æˆ·è¾“入的尖括号是否可以替换为空,还是需要返回空格
     * å¦‚输入 <aaa> åˆ™éœ€è¦æ›¿æ¢ä¸ºç©ºæ ¼  aaa<aa>则可以替换为空
     */
    private ArrayList<Boolean> nullOrSpace = new ArrayList<Boolean>();
    /** Default constructor.
     *
     */
    public HTMLFilter() {
        vAllowed = new HashMap<>();
        final ArrayList<String> a_atts = new ArrayList<String>();
        a_atts.add("href");
        a_atts.add("target");
        vAllowed.put("a", a_atts);
        final ArrayList<String> img_atts = new ArrayList<String>();
        img_atts.add("src");
        img_atts.add("width");
        img_atts.add("height");
        img_atts.add("alt");
        vAllowed.put("img", img_atts);
        final ArrayList<String> no_atts = new ArrayList<String>();
        vAllowed.put("b", no_atts);
        vAllowed.put("strong", no_atts);
        vAllowed.put("i", no_atts);
        vAllowed.put("em", no_atts);
        vSelfClosingTags = new String[]{"img"};
        vNeedClosingTags = new String[]{"a", "b", "strong", "i", "em"};
        vDisallowed = new String[]{};
        vAllowedProtocols = new String[]{"http", "mailto", "https"}; // no ftp.
        vProtocolAtts = new String[]{"src", "href"};
        vRemoveBlanks = new String[]{"a", "b", "strong", "i", "em"};
        vAllowedEntities = new String[]{"amp", "gt", "lt", "quot"};
        stripComment = true;
        encodeQuotes = true;
        alwaysMakeTags = true;
    }
    /** Set debug flag to true. Otherwise use default settings. See the default constructor.
     *
     * @param debug turn debug on with a true argument
     */
    public HTMLFilter(final boolean debug) {
        this();
        vDebug = debug;
    }
    /** Map-parameter configurable constructor.
     *
     * @param conf map containing configuration. keys match field names.
     */
    public HTMLFilter(final Map<String,Object> conf) {
        assert conf.containsKey("vAllowed") : "configuration requires vAllowed";
        assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags";
        assert conf.containsKey("vNeedClosingTags") : "configuration requires vNeedClosingTags";
        assert conf.containsKey("vDisallowed") : "configuration requires vDisallowed";
        assert conf.containsKey("vAllowedProtocols") : "configuration requires vAllowedProtocols";
        assert conf.containsKey("vProtocolAtts") : "configuration requires vProtocolAtts";
        assert conf.containsKey("vRemoveBlanks") : "configuration requires vRemoveBlanks";
        assert conf.containsKey("vAllowedEntities") : "configuration requires vAllowedEntities";
        vAllowed = Collections.unmodifiableMap((HashMap<String, List<String>>) conf.get("vAllowed"));
        vSelfClosingTags = (String[]) conf.get("vSelfClosingTags");
        vNeedClosingTags = (String[]) conf.get("vNeedClosingTags");
        vDisallowed = (String[]) conf.get("vDisallowed");
        vAllowedProtocols = (String[]) conf.get("vAllowedProtocols");
        vProtocolAtts = (String[]) conf.get("vProtocolAtts");
        vRemoveBlanks = (String[]) conf.get("vRemoveBlanks");
        vAllowedEntities = (String[]) conf.get("vAllowedEntities");
        stripComment =  conf.containsKey("stripComment") ? (Boolean) conf.get("stripComment") : true;
        encodeQuotes = conf.containsKey("encodeQuotes") ? (Boolean) conf.get("encodeQuotes") : true;
        alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true;
    }
    private void reset() {
        vTagCounts.clear();
    }
    private void debug(final String msg) {
        if (vDebug) {
            Logger.getAnonymousLogger().info(msg);
        }
    }
    //---------------------------------------------------------------
    // my versions of some PHP library functions
    public static String chr(final int decimal) {
        return String.valueOf((char) decimal);
    }
    public static String htmlSpecialChars(final String s) {
        String result = s;
        result = regexReplace(P_AMP, "&amp;", result);
        result = regexReplace(P_QUOTE, "&quot;", result);
        result = regexReplace(P_LEFT_ARROW, "&lt;", result);
        result = regexReplace(P_RIGHT_ARROW, "&gt;", result);
        return result;
    }
    //---------------------------------------------------------------
    /**
     * given a user submitted input String, filter out any invalid or restricted
     * html.
     *
     * @param input text (i.e. submitted by a user) than may contain html
     * @return "clean" version of input, with only valid, whitelisted html elements allowed
     */
    public String filter(final String input) {
        reset();
        String s = input;
        debug("************************************************");
        debug("              INPUT: " + input);
        s = escapeComments(s);
        debug("     escapeComments: " + s);
        s = balanceHTML(s);
        debug("        balanceHTML: " + s);
        s = checkTags(s);
        debug("          checkTags: " + s);
        s = processRemoveBlanks(s);
        debug("processRemoveBlanks: " + s);
        s = validateEntities(s);
        debug("    validateEntites: " + s);
        debug("************************************************\n\n");
        return s;
    }
    public boolean isAlwaysMakeTags(){
        return alwaysMakeTags;
    }
    public boolean isStripComments(){
        return stripComment;
    }
    private String escapeComments(final String s) {
        final Matcher m = P_COMMENTS.matcher(s);
        final StringBuffer buf = new StringBuffer();
        if (m.find()) {
            final String match = m.group(1); //(.*?)
            m.appendReplacement(buf, Matcher.quoteReplacement("<!--" + htmlSpecialChars(match) + "-->"));
        }
        m.appendTail(buf);
        return buf.toString();
    }
    private String balanceHTML(String s) {
        nullOrSpace = new ArrayList<Boolean>();
        if (alwaysMakeTags) {
            //
            // try and form html
            //
            //判断是否是json格式的字符串,如果是则json化补全尖括号,不是则走原有的方法
            //解决输入单个尖括号会报错的问题 alert ykm 2019/01/30
            try {
                boolean isArray = false;
                isArray = validateJsonArray(s);
                if (isArray) {
                    JSONArray ss = JSON.parseArray(s);
                    for(int t =0; t < ss.size();t++) {
                        Map map = blanceHtml(ss.getString(t));
                        ss.remove(t);
                        ss.add(t,map);
                    }
                    s = JSON.toJSONString(ss, SerializerFeature.WriteMapNullValue);
                }
                else {
                    Map mapTypes = JSON.parseObject(s);
                    for (Object obj : mapTypes.keySet()) {
//                System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
                        String str = mapTypes.get(obj) == null ? null : mapTypes.get(obj).toString();
                        boolean flag = false;
                        if (str != null && !str.trim().equals("")) {
                            flag = validateJson(str);
                        }
                        if (!flag && str != null && !str.trim().equals("")) {
                            //只输入 > ä¼šè¢«æ›¿æ¢ä¸ºç©ºå­—符串
//                        str = regexReplace(P_END_ARROW, "", str);
                            str = regexReplace(P_BODY_TO_END, "<$1>", str);
                            str = regexReplace(P_XML_CONTENT, "$1<$2", str);
                            //判断是否可以替换为空
                            Matcher m = P_TAGS.matcher(str);
                            String tt = str;
                            while (m.find()) {
                                String space = "<" + m.group(1) + ">";
                                tt = tt.replaceFirst(space, "");
                                if (tt.length() > 0) {
                                    nullOrSpace.add(true);
                                } else {
                                    nullOrSpace.add(false);
                                }
                            }
                            mapTypes.replace(obj, str);
                        } else if (flag) {
                            Map map = blanceHtml(str);
                            mapTypes.replace(obj, map);
                        }
                    }
                    s = JSON.toJSONString(mapTypes, SerializerFeature.WriteMapNullValue);
                }
            }
            catch (Exception e) {
//                s = regexReplace(P_END_ARROW, "", s);
                s = regexReplace(P_BODY_TO_END, "<$1>", s);
                s = regexReplace(P_XML_CONTENT, "$1<$2", s);
                //判断是否可以替换为空
                Matcher m = P_TAGS.matcher(s);
                String tt = s;
                while (m.find()) {
                    String space = "<" + m.group(1) + ">";
                    tt = tt.replaceFirst(space, "");
                    if (tt.length() > 0) {
                        nullOrSpace.add(true);
                    } else {
                        nullOrSpace.add(false);
                    }
                }
            }
        } else {
            //
            // escape stray brackets
            //
            s = regexReplace(P_STRAY_LEFT_ARROW, "&lt;$1", s);
            s = regexReplace(P_STRAY_RIGHT_ARROW, "$1$2&gt;<", s);
            //
            // the last regexp causes '<>' entities to appear
            // (we need to do a lookahead assertion so that the last bracket can
            // be used in the next pass of the regexp)
            //
            s = regexReplace(P_BOTH_ARROWS, "", s);
        }
        return s;
    }
    private String checkTags(String s) {
        //过滤'% ! * addbydsh
//        try {
//            s = s.replace("'","").replace("%","").replace("!","").replace("*","");
//        }catch (Exception ex){
//
//        }
        Matcher m = P_TAGS.matcher(s);
        final StringBuffer buf = new StringBuffer();
        int count = 0;
        while (m.find()) {
            String replaceStr = m.group(1);
            replaceStr = processTag(replaceStr);
            if(nullOrSpace.size() >  0 && nullOrSpace.size() > count  && !nullOrSpace.get(count)) {
                replaceStr =" ";
            }
            m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr));
            count++;
        }
        m.appendTail(buf);
        s = buf.toString();
        // these get tallied in processTag
        // (remember to reset before subsequent calls to filter method)
        for (String key : vTagCounts.keySet()) {
            for (int ii = 0; ii < vTagCounts.get(key); ii++) {
                s += "</" + key + ">";
            }
        }
        return s;
    }
    private String processRemoveBlanks(final String s) {
        String result = s;
        for (String tag : vRemoveBlanks) {
            if(!P_REMOVE_PAIR_BLANKS.containsKey(tag)){
                P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?></" + tag + ">"));
            }
            result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result);
            if(!P_REMOVE_SELF_BLANKS.containsKey(tag)){
                P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>"));
            }
            result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result);
        }
        return result;
    }
    private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s) {
        Matcher m = regex_pattern.matcher(s);
        return m.replaceAll(replacement);
    }
    private String processTag(final String s) {
        // ending tags
        Matcher m = P_END_TAG.matcher(s);
        if (m.find()) {
            final String name = m.group(1).toLowerCase();
            if (allowed(name)) {
                if (!inArray(name, vSelfClosingTags)) {
                    if (vTagCounts.containsKey(name)) {
                        vTagCounts.put(name, vTagCounts.get(name) - 1);
                        return "</" + name + ">";
                    }
                }
            }
        }
        // starting tags
        m = P_START_TAG.matcher(s);
        if (m.find()) {
            final String name = m.group(1).toLowerCase();
            final String body = m.group(2);
            String ending = m.group(3);
            //debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" );
            if (allowed(name)) {
                String params = "";
                final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body);
                final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body);
                final List<String> paramNames = new ArrayList<String>();
                final List<String> paramValues = new ArrayList<String>();
                while (m2.find()) {
                    paramNames.add(m2.group(1)); //([a-z0-9]+)
                    paramValues.add(m2.group(3)); //(.*?)
                }
                while (m3.find()) {
                    paramNames.add(m3.group(1)); //([a-z0-9]+)
                    paramValues.add(m3.group(3)); //([^\"\\s']+)
                }
                String paramName, paramValue;
                for (int ii = 0; ii < paramNames.size(); ii++) {
                    paramName = paramNames.get(ii).toLowerCase();
                    paramValue = paramValues.get(ii);
//          debug( "paramName='" + paramName + "'" );
//          debug( "paramValue='" + paramValue + "'" );
//          debug( "allowed? " + vAllowed.get( name ).contains( paramName ) );
                    if (allowedAttribute(name, paramName)) {
                        if (inArray(paramName, vProtocolAtts)) {
                            paramValue = processParamProtocol(paramValue);
                        }
                        params += " " + paramName + "=\"" + paramValue + "\"";
                    }
                }
                if (inArray(name, vSelfClosingTags)) {
                    ending = " /";
                }
                if (inArray(name, vNeedClosingTags)) {
                    ending = "";
                }
                if (ending == null || ending.length() < 1) {
                    if (vTagCounts.containsKey(name)) {
                        vTagCounts.put(name, vTagCounts.get(name) + 1);
                    } else {
                        vTagCounts.put(name, 1);
                    }
                } else {
                    ending = " /";
                }
                return "<" + name + params + ending + ">";
            } else {
                return "";
            }
        }
        // comments
        m = P_COMMENT.matcher(s);
        if (!stripComment && m.find()) {
            return  "<" + m.group() + ">";
        }
        return "";
    }
    private String processParamProtocol(String s) {
        s = decodeEntities(s);
        final Matcher m = P_PROTOCOL.matcher(s);
        if (m.find()) {
            final String protocol = m.group(1);
            if (!inArray(protocol, vAllowedProtocols)) {
                // bad protocol, turn into local anchor link instead
                s = "#" + s.substring(protocol.length() + 1, s.length());
                if (s.startsWith("#//")) {
                    s = "#" + s.substring(3, s.length());
                }
            }
        }
        return s;
    }
    private String decodeEntities(String s) {
        StringBuffer buf = new StringBuffer();
        Matcher m = P_ENTITY.matcher(s);
        while (m.find()) {
            final String match = m.group(1);
            final int decimal = Integer.decode(match).intValue();
            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
        }
        m.appendTail(buf);
        s = buf.toString();
        buf = new StringBuffer();
        m = P_ENTITY_UNICODE.matcher(s);
        while (m.find()) {
            final String match = m.group(1);
            final int decimal = Integer.valueOf(match, 16).intValue();
            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
        }
        m.appendTail(buf);
        s = buf.toString();
        buf = new StringBuffer();
        m = P_ENCODE.matcher(s);
        while (m.find()) {
            final String match = m.group(1);
            final int decimal = Integer.valueOf(match, 16).intValue();
            m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
        }
        m.appendTail(buf);
        s = buf.toString();
        s = validateEntities(s);
        return s;
    }
    private String validateEntities(final String s) {
        StringBuffer buf = new StringBuffer();
        // validate entities throughout the string
        Matcher m = P_VALID_ENTITIES.matcher(s);
        while (m.find()) {
            final String one = m.group(1); //([^&;]*)
            final String two = m.group(2); //(?=(;|&|$))
            m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two)));
        }
        m.appendTail(buf);
        return encodeQuotes(buf.toString());
    }
    private String encodeQuotes(final String s){
        if(encodeQuotes){
            StringBuffer buf = new StringBuffer();
            Matcher m = P_VALID_QUOTES.matcher(s);
            while (m.find()) {
                final String one = m.group(1); //(>|^)
                final String two = m.group(2); //([^<]+?)
                final String three = m.group(3); //(<|$)
                m.appendReplacement(buf, Matcher.quoteReplacement(one + regexReplace(P_QUOTE, "&quot;", two) + three));
            }
            m.appendTail(buf);
            return buf.toString();
        }else{
            return s;
        }
    }
    private String checkEntity(final String preamble, final String term) {
        return ";".equals(term) && isValidEntity(preamble)
                ? '&' + preamble
                : "&amp;" + preamble;
    }
    private boolean isValidEntity(final String entity) {
        return inArray(entity, vAllowedEntities);
    }
    private static boolean inArray(final String s, final String[] array) {
        for (String item : array) {
            if (item != null && item.equals(s)) {
                return true;
            }
        }
        return false;
    }
    private boolean allowed(final String name) {
        return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed);
    }
    private boolean allowedAttribute(final String name, final String paramName) {
        return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName));
    }
    /**
     * åˆ¤æ–­æ˜¯å¦æ˜¯json格式字符串
     * @param s
     * @return
     */
    private boolean validateJson(String s) {
        try {
            JSONObject json = JSON.parseObject(s);
            return true;
        }
        catch (Exception e) {
            return false;
        }
    }
    private boolean validateJsonArray(String s) {
        try {
            JSONArray json = JSON.parseArray(s);
            return true;
        }
        catch (Exception e) {
            return false;
        }
    }
    /**
     * å¤„理二级json,如单位管理信息
     * @param s
     * @return
     */
    private Map blanceHtml(String s) {
        Map mapTypes = JSON.parseObject(s);
        for (Object obj : mapTypes.keySet()) {
//                System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
            String str = mapTypes.get(obj) == null ? null : mapTypes.get(obj).toString();
            boolean flag = false;
            if (str != null && !str.trim().equals("")) {
                flag = validateJson(str);
            }
            if(flag) {
                blanceHtml(str);
            }
            if (str != null && !str.trim().equals("")) {
                //只输入 > ä¼šè¢«æ›¿æ¢ä¸ºç©ºå­—符串
//                        str = regexReplace(P_END_ARROW, "", str);
                str = regexReplace(P_BODY_TO_END, "<$1>", str);
                str = regexReplace(P_XML_CONTENT, "$1<$2", str);
                //判断是否可以替换为空
                Matcher m = P_TAGS.matcher(str);
                String tt = str;
                while (m.find()) {
                    String space = "<" + m.group(1) + ">";
                    tt = tt.replaceFirst(space, "");
                    if (tt.length() > 0) {
                        nullOrSpace.add(true);
                    } else {
                        nullOrSpace.add(false);
                    }
                }
//                if(str.indexOf("<") > -1 && str.indexOf(">") > -1) {
//                    String space = str.substring(str.indexOf("<") , str.indexOf(">") + 1);
//                    space = str.replace(space, "");
//                    if (space.length() > 0) {
//                        nullOrSpace.add(true);
//                    } else {
//                        nullOrSpace.add(false);
//                    }
//                }
                mapTypes.replace(obj, str);
            }
        }
        return mapTypes;
    }
}
src/main/java/com/landtool/lanbase/common/xss/SQLFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.landtool.lanbase.common.xss;
import org.apache.commons.lang.StringUtils;
import com.landtool.lanbase.common.exception.LanbaseException;
/**
 * @author lanbase
 * @Description: TODO(SQL过滤)
 * @date 2017-6-23 15:07
 */
public class SQLFilter {
    /**
     * SQL注入过滤
     * @param str  å¾…验证的字符串
     */
    public static String sqlInject(String str){
        if(StringUtils.isBlank(str)){
            return null;
        }
        //去掉'|"|;|\字符
        str = StringUtils.replace(str, "'", "");
        str = StringUtils.replace(str, "\"", "");
        str = StringUtils.replace(str, ";", "");
        str = StringUtils.replace(str, "\\", "");
        //转换成小写
        str = str.toLowerCase();
        //非法字符
        String[] keywords = {"master", "truncate", "insert", "select", "delete", "update", "declare", "alert", "drop"};
        //判断是否包含非法字符
        for(String keyword : keywords){
            if(str.indexOf(keyword) != -1){
                throw new LanbaseException("包含非法字符");
            }
        }
        return str;
    }
}
src/main/java/com/landtool/lanbase/common/xss/XssFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package com.landtool.lanbase.common.xss;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * @author lanbase
 * @Description: TODO(XSS过滤)
 * @date 2017-6-23 15:07
 */
public class XssFilter implements Filter {
    private Logger logger = LoggerFactory.getLogger(getClass());
    // æŽ’除的url
    private String exclude;
    public XssFilter(String exclude) {
        this.exclude = exclude;
    }
    @Override
    public void init(FilterConfig config) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        String uri=httpRequest.getRequestURI();
        logger.debug("doFilter----uri:" + uri);
        if(uri.indexOf(".") == -1 && !uri.contains(exclude)){
            XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request);
            chain.doFilter(xssRequest, response);
        }else{
            chain.doFilter(request, response);
        }
    }
    @Override
    public void destroy() {
    }
}
src/main/java/com/landtool/lanbase/common/xss/XssHttpServletRequestWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
package com.landtool.lanbase.common.xss;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
/**
 * @author lanbase
 * @Description: TODO(XSS过滤处理)
 * @date 2017-6-23 15:07
 */
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
    //没被包装过的HttpServletRequest(特殊场景,需要自己过滤)
    HttpServletRequest orgRequest;
    //html过滤
    private final static HTMLFilter htmlFilter = new HTMLFilter();
    public XssHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        orgRequest = request;
    }
    @Override
    public ServletInputStream getInputStream() throws IOException {
        //非json类型,直接返回
        if(!MediaType.APPLICATION_JSON_VALUE.equalsIgnoreCase(super.getHeader(HttpHeaders.CONTENT_TYPE))){
            return super.getInputStream();
        }
        //为空,直接返回
        String json = IOUtils.toString(super.getInputStream(), "utf-8");
        if (StringUtils.isBlank(json)) {
            return super.getInputStream();
        }
        //xss过滤
        json = xssEncode(json);
        final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8"));
        return new ServletInputStream() {
            @Override
            public boolean isFinished() {
                return true;
            }
            @Override
            public boolean isReady() {
                return true;
            }
            @Override
            public void setReadListener(ReadListener readListener) {
            }
            @Override
            public int read() throws IOException {
                return bis.read();
            }
        };
    }
    @Override
    public String getParameter(String name) {
        String value = super.getParameter(xssEncode(name));
        if (StringUtils.isNotBlank(value)) {
            value = xssEncode(value);
        }
        return value;
    }
    @Override
    public String[] getParameterValues(String name) {
        String[] parameters = super.getParameterValues(name);
        if (parameters == null || parameters.length == 0) {
            return null;
        }
        for (int i = 0; i < parameters.length; i++) {
            parameters[i] = xssEncode(parameters[i]);
        }
        return parameters;
    }
    @Override
    public Map<String,String[]> getParameterMap() {
        Map<String,String[]> map = new LinkedHashMap<>();
        Map<String,String[]> parameters = super.getParameterMap();
        for (String key : parameters.keySet()) {
            String[] values = parameters.get(key);
            for (int i = 0; i < values.length; i++) {
                values[i] = xssEncode(values[i]);
            }
            map.put(key, values);
        }
        return map;
    }
    @Override
    public String getHeader(String name) {
        String value = super.getHeader(xssEncode(name));
        if (StringUtils.isNotBlank(value)) {
            value = xssEncode(value);
        }
        return value;
    }
    private String xssEncode(String input) {
        return htmlFilter.filter(input);
    }
    /**
     * èŽ·å–æœ€åŽŸå§‹çš„request
     */
    public HttpServletRequest getOrgRequest() {
        return orgRequest;
    }
    /**
     * èŽ·å–æœ€åŽŸå§‹çš„request
     */
    public static HttpServletRequest getOrgRequest(HttpServletRequest request) {
        if (request instanceof XssHttpServletRequestWrapper) {
            return ((XssHttpServletRequestWrapper) request).getOrgRequest();
        }
        return request;
    }
}
src/main/java/com/landtool/lanbase/config/CORSConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.landtool.lanbase.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 *
 * @author TanBin
 *
 */
@Configuration
public class CORSConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/**")
            .allowedMethods("*")
            .allowedOrigins("*")
            .allowCredentials(true)
            .allowedHeaders("*");
    }
}
src/main/java/com/landtool/lanbase/config/CasConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,228 @@
//package com.landtool.lanbase.config;
//
//import javax.net.ssl.HostnameVerifier;
//import javax.net.ssl.HttpsURLConnection;
//import javax.net.ssl.SSLSession;
//
//import org.jasig.cas.client.session.SingleSignOutFilter;
//import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
//import org.jasig.cas.client.util.AssertionThreadLocalFilter;
//import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
//import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.boot.web.servlet.FilterRegistrationBean;
//import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.security.web.authentication.logout.LogoutFilter;
//import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
//
//import com.landtool.lanbase.common.shiro.CasAuthenticationFilter;
//
//@Configuration
//public class CasConfig {
//
//    @Autowired
//    CasConfigProperties config;
//
//    // æ˜¯å¦å¼€å¯CAS过滤 true开启 false关闭
//    @Value("${spring.cas.casEnabled: #{false}}")
//    private boolean casEnabled;
//    // private static boolean casEnabled = true;
//
//    public CasConfig() {
//    }
//
//    @Bean
//    public CasConfigProperties getCasConfigProperties() {
//        return new CasConfigProperties();
//    }
//
//    /**
//     * ç”¨äºŽå®žçŽ°å•ç‚¹ç™»å‡ºåŠŸèƒ½
//     */
//    @Bean
//    public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> singleSignOutHttpSessionListener() {
//        ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> listener = new ServletListenerRegistrationBean<>();
//        listener.setEnabled(casEnabled);
//        listener.setListener(new SingleSignOutHttpSessionListener());
//        listener.setOrder(1);
//        return listener;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨ç”¨äºŽå®žçŽ°å•ç‚¹ç™»å‡ºåŠŸèƒ½ï¼Œå•ç‚¹é€€å‡ºé…ç½®ï¼Œä¸€å®šè¦æ”¾åœ¨å…¶ä»–filter之前
//     */
//    @Bean
//    public FilterRegistrationBean logOutFilter() {
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        LogoutFilter logoutFilter = new LogoutFilter(
//                config.getCasServerUrlPrefix() + "/logout?service=" + config.getServerName(),
//                new SecurityContextLogoutHandler());
//        filterRegistration.setFilter(logoutFilter);
//        filterRegistration.setEnabled(casEnabled);
//        if (config.getSignOutFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getSignOutFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/logout");
//        }
//        filterRegistration.addInitParameter("casServerUrlPrefix", config.getCasServerUrlPrefix());
//        filterRegistration.addInitParameter("serverName", config.getServerName());
//        filterRegistration.setOrder(2);
//        return filterRegistration;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨ç”¨äºŽå®žçŽ°å•ç‚¹ç™»å‡ºåŠŸèƒ½ï¼Œå•ç‚¹é€€å‡ºé…ç½®ï¼Œä¸€å®šè¦æ”¾åœ¨å…¶ä»–filter之前
//     */
//    @Bean
//    public FilterRegistrationBean singleSignOutFilter() {
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        filterRegistration.setFilter(new SingleSignOutFilter());
//        filterRegistration.setEnabled(casEnabled);
//        if (config.getSignOutFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getSignOutFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/*");
//        }
//        filterRegistration.addInitParameter("casServerUrlPrefix", config.getCasServerUrlPrefix());
//        filterRegistration.addInitParameter("serverName", config.getServerName());
//        filterRegistration.setOrder(3);
//        return filterRegistration;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨è´Ÿè´£ç”¨æˆ·çš„认证工作
//     */
//    @Bean
//    public FilterRegistrationBean authenticationFilter() {
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        filterRegistration.setFilter(new CasAuthenticationFilter());
//        filterRegistration.setEnabled(casEnabled);
//        if (config.getAuthFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getAuthFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/*");
//        }
//        // casServerLoginUrl:cas服务的登陆url
//        filterRegistration.addInitParameter("casServerLoginUrl", config.getCasServerLoginUrl());
//        // æœ¬é¡¹ç›®ç™»å½•ip+port
//        filterRegistration.addInitParameter("serverName", config.getServerName());
//        filterRegistration.addInitParameter("useSession", config.isUseSession() ? "true" : "false");
//        filterRegistration.addInitParameter("redirectAfterValidation",
//                config.isRedirectAfterValidation() ? "true" : "false");
//        filterRegistration.setOrder(4);
//        return filterRegistration;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨è´Ÿè´£å¯¹Ticket的校验工作
//     */
//    @Bean
//    public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter() {
//
//        try {
//            trustAllHttpsCertificates();
//            HttpsURLConnection.setDefaultHostnameVerifier(hv);
//        } catch (Exception e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        Cas20ProxyReceivingTicketValidationFilter cas20ProxyReceivingTicketValidationFilter = new Cas20ProxyReceivingTicketValidationFilter();
//        // cas20ProxyReceivingTicketValidationFilter.setTicketValidator(cas20ServiceTicketValidator());
//        cas20ProxyReceivingTicketValidationFilter.setServerName(config.getServerName());
//        filterRegistration.setFilter(cas20ProxyReceivingTicketValidationFilter);
//        filterRegistration.setEnabled(casEnabled);
//        if (config.getValidateFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getValidateFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/*");
//        }
//        filterRegistration.addInitParameter("casServerUrlPrefix", config.getCasServerUrlPrefix());
//        filterRegistration.addInitParameter("serverName", config.getServerName());
//        filterRegistration.setOrder(5);
//        return filterRegistration;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨å¯¹HttpServletRequest请求包装,
//     * å¯é€šè¿‡HttpServletRequest的getRemoteUser()方法获得登录用户的登录名
//     *
//     */
//    @Bean
//    public FilterRegistrationBean httpServletRequestWrapperFilter() {
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        filterRegistration.setFilter(new HttpServletRequestWrapperFilter());
//        filterRegistration.setEnabled(true);
//        if (config.getRequestWrapperFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getRequestWrapperFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/*");
//        }
//        filterRegistration.setOrder(6);
//        return filterRegistration;
//    }
//
//    /**
//     * è¯¥è¿‡æ»¤å™¨ä½¿å¾—可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
//     * æ¯”如AssertionHolder.getAssertion().getPrincipal().getName()。
//     * è¿™ä¸ªç±»æŠŠAssertion信息放在ThreadLocal变量中,这样应用程序不在web层也能够获取到当前登录信息
//     */
//    @Bean
//    public FilterRegistrationBean assertionThreadLocalFilter() {
//        FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
//        filterRegistration.setFilter(new AssertionThreadLocalFilter());
//        filterRegistration.setEnabled(true);
//        if (config.getAssertionFilters().size() > 0) {
//            filterRegistration.setUrlPatterns(config.getAssertionFilters());
//        } else {
//            filterRegistration.addUrlPatterns("/*");
//        }
//        filterRegistration.setOrder(7);
//        return filterRegistration;
//    }
//
//    HostnameVerifier hv = new HostnameVerifier() {
//        public boolean verify(String urlHostName, SSLSession session) {
//            System.out.println("Warning: URL Host: " + urlHostName + " vs. " + session.getPeerHost());
//            return true;
//        }
//    };
//
//    private static void trustAllHttpsCertificates() throws Exception {
//        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
//        javax.net.ssl.TrustManager tm = new miTM();
//        trustAllCerts[0] = tm;
//        javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
//        sc.init(null, trustAllCerts, null);
//        javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
//    }
//
//    static class miTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
//        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
//            return null;
//        }
//
//        public boolean isServerTrusted(java.security.cert.X509Certificate[] certs) {
//            return true;
//        }
//
//        public boolean isClientTrusted(java.security.cert.X509Certificate[] certs) {
//            return true;
//        }
//
//        public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
//                throws java.security.cert.CertificateException {
//            return;
//        }
//
//        public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
//                throws java.security.cert.CertificateException {
//            return;
//        }
//    }
//
//}
src/main/java/com/landtool/lanbase/config/CasConfigProperties.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
//package com.landtool.lanbase.config;
//
//import java.util.Arrays;
//import java.util.List;
//
//import org.springframework.boot.context.properties.ConfigurationProperties;
//
//@ConfigurationProperties(prefix = "spring.cas")
//public class CasConfigProperties {
//
//  static final String separator = ",";
//
//  private String validateFilters;
//  private String signOutFilters;
//  private String authFilters;
//  private String assertionFilters;
//  private String requestWrapperFilters;
//
//  private String casServerUrlPrefix;
//  private String casServerLoginUrl;
//  private String serverName;
//  private boolean useSession = true;
//  private boolean redirectAfterValidation = true;
//
//  public List<String> getValidateFilters() {
//    return Arrays.asList(validateFilters.split(separator));
//  }
//  public void setValidateFilters(String validateFilters) {
//    this.validateFilters = validateFilters;
//  }
//  public List<String> getSignOutFilters() {
//    return Arrays.asList(signOutFilters.split(separator));
//  }
//  public void setSignOutFilters(String signOutFilters) {
//    this.signOutFilters = signOutFilters;
//  }
//  public List<String> getAuthFilters() {
//    return Arrays.asList(authFilters.split(separator));
//  }
//  public void setAuthFilters(String authFilters) {
//    this.authFilters = authFilters;
//  }
//  public List<String> getAssertionFilters() {
//    return Arrays.asList(assertionFilters.split(separator));
//  }
//  public void setAssertionFilters(String assertionFilters) {
//    this.assertionFilters = assertionFilters;
//  }
//  public List<String> getRequestWrapperFilters() {
//    return Arrays.asList(requestWrapperFilters.split(separator));
//  }
//  public void setRequestWrapperFilters(String requestWrapperFilters) {
//    this.requestWrapperFilters = requestWrapperFilters;
//  }
//  public String getCasServerUrlPrefix() {
//    return casServerUrlPrefix;
//  }
//  public void setCasServerUrlPrefix(String casServerUrlPrefix) {
//    this.casServerUrlPrefix = casServerUrlPrefix;
//  }
//  public String getCasServerLoginUrl() {
//    return casServerLoginUrl;
//  }
//  public void setCasServerLoginUrl(String casServerLoginUrl) {
//    this.casServerLoginUrl = casServerLoginUrl;
//  }
//  public String getServerName() {
//    return serverName;
//  }
//  public void setServerName(String serverName) {
//    this.serverName = serverName;
//  }
//  public boolean isRedirectAfterValidation() {
//    return redirectAfterValidation;
//  }
//  public void setRedirectAfterValidation(boolean redirectAfterValidation) {
//    this.redirectAfterValidation = redirectAfterValidation;
//  }
//  public boolean isUseSession() {
//    return useSession;
//  }
//  public void setUseSession(boolean useSession) {
//    this.useSession = useSession;
//  }
//
//}
src/main/java/com/landtool/lanbase/config/Corsconfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
//package com.landtool.lanbase.config;
//
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.cors.CorsConfiguration;
//import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
//import org.springframework.web.filter.CorsFilter;
//
//@Configuration
//public class Corsconfig {
//
//
//    private CorsConfiguration buildConfig(){
//        CorsConfiguration cors=new CorsConfiguration();
//        cors.addAllowedHeader("*");
//        cors.addAllowedMethod("*");
//        cors.addAllowedOrigin("*");
//        return cors;
//    }
//
//    @Bean
//    public CorsFilter corsFilter(){
//      UrlBasedCorsConfigurationSource source=new UrlBasedCorsConfigurationSource();
//      source.registerCorsConfiguration("/**", buildConfig());
//      return new CorsFilter(source);
//    }
//}
src/main/java/com/landtool/lanbase/config/DynamicDataSourceConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.landtool.lanbase.config;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.landtool.lanbase.common.datasource.DataSourceNames;
import com.landtool.lanbase.common.datasource.DynamicDataSource;
/**
 * @author lanbase
 * @Description: TODO(配置多数据源)
 * @date 2017-6-23 15:07
 */
@Configuration
public class DynamicDataSourceConfig {
    @Bean
    @ConfigurationProperties("spring.datasource.druid.first")
    public DataSource firstDataSource(){
        return DruidDataSourceBuilder.create().build();
    }
    @Bean
    @Primary
    public DynamicDataSource dataSource(DataSource firstDataSource) {
        Map<String, DataSource> targetDataSources = new HashMap<>();
        targetDataSources.put(DataSourceNames.FIRST, firstDataSource);
        return new DynamicDataSource(firstDataSource, targetDataSources);
    }
}
src/main/java/com/landtool/lanbase/config/KaptchaConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.landtool.lanbase.config;
import java.util.Properties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
/**
 * @author lanbase
 * @Description: TODO(生成验证码配置)
 * @date 2017-6-23 15:07
 */
@Configuration
public class KaptchaConfig {
    @Bean
    public DefaultKaptcha producer() {
        Properties properties = new Properties();
        properties.put("kaptcha.border", "no");
        properties.put("kaptcha.textproducer.font.color", "black");
        properties.put("kaptcha.textproducer.char.space", "5");
        properties.put("kaptcha.textproducer.char.length", "4");
        Config config = new Config(properties);
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
}
src/main/java/com/landtool/lanbase/config/LoginConfigProperties.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package com.landtool.lanbase.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "sys")
public class LoginConfigProperties {
   private long appId;
   private String appFullName;
public long getAppId() {
    return appId;
}
public void setAppId(long appId) {
    this.appId = appId;
}
public String getAppFullName() {
    return appFullName;
}
public void setAppFullName(String appFullName) {
    this.appFullName = appFullName;
}
}
src/main/java/com/landtool/lanbase/config/RedisConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.landtool.lanbase.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
 * @author lanbase
 * @Description: TODO(Redis配置)
 * @date 2017-6-23 15:07
 */
@Configuration
public class RedisConfig {
    @Autowired
    private RedisConnectionFactory factory;
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new StringRedisSerializer());
        redisTemplate.setConnectionFactory(factory);
        return redisTemplate;
    }
    @Bean
    public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForHash();
    }
    @Bean
    public ValueOperations<String, String> valueOperations(RedisTemplate<String, String> redisTemplate) {
        return redisTemplate.opsForValue();
    }
    @Bean
    public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForList();
    }
    @Bean
    public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForSet();
    }
    @Bean
    public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
        return redisTemplate.opsForZSet();
    }
}
src/main/java/com/landtool/lanbase/config/ShiroConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.landtool.lanbase.config;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.landtool.lanbase.common.shiro.ShiroAuthenticatingFilter;
import com.landtool.lanbase.common.shiro.ShiroRealm;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import javax.servlet.Filter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
 * @author lanbase
 * @Description: TODO(Shiro配置)
 * @date 2017-6-23 15:07
 */
@Configuration
public class ShiroConfig {
    @Value("${sys.loginUrl}") private String loginUrl;// http://127.0.0.1:8082/login
    @Value("${sys.casHost}") private String casHost;// https://cas.nmsmp.com/cas/
    @Bean("sessionManager")
    public SessionManager sessionManager(){
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
        sessionManager.setSessionValidationSchedulerEnabled(true);
        sessionManager.setSessionIdUrlRewritingEnabled(true);
        sessionManager.setSessionIdCookieEnabled(true);
        sessionManager.setGlobalSessionTimeout(1800000L);
        return sessionManager;
    }
    @Bean("securityManager")
    public SecurityManager securityManager(ShiroRealm shiroRealm, SessionManager sessionManager) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(shiroRealm);
        securityManager.setSessionManager(sessionManager);
        return securityManager;
    }
    @Bean("shiroFilter")
    public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
        shiroFilter.setSecurityManager(securityManager);
        //过滤
        Map<String, Filter> filters = new HashMap<>();
        filters.put("shiro", new ShiroAuthenticatingFilter(loginUrl,casHost));
        shiroFilter.setFilters(filters);
        Map<String, String> filterMap = new LinkedHashMap<>();
        //filterMap.put("/geoplat/**", "anon");
        //api
        filterMap.put("/api/**", "anon");
        //swagger
        filterMap.put("/swagger-resources/**", "anon");
        filterMap.put("/v2/**", "anon");
        filterMap.put("/webjars/**", "anon");
        //index
        //filterMap.put("/", "anon");
        filterMap.put("/index", "anon");
        filterMap.put("/sys/error", "anon");
        //login
        filterMap.put("/login", "anon");
        filterMap.put("/logout", "anon");
        filterMap.put("/captcha.jpg", "anon");
        //static
        filterMap.put("/**/*.css", "anon");
        filterMap.put("/**/*.js", "anon");
        filterMap.put("/**/*.html", "anon");
        filterMap.put("/fonts/**", "anon");
        filterMap.put("/image/**", "anon");
        filterMap.put("/plugins/**", "anon");
        filterMap.put("/favicon.ico", "anon");
        //other
        filterMap.put("/**/druid/**", "anon");
        filterMap.put("/ZiYuanIcon/**", "anon");
        filterMap.put("/uploadPath/**", "anon");//上传文件映射的地址
        //shiro
        //filterMap.put("/**", "authc");
        filterMap.put("/**", "shiro");
        //String url = "https://www.lt.com:8443/cas/login?service=http://127.0.0.1:8082/login";
        //String url = loginUrl;
        //shiroFilter.setLoginUrl(url);
     // ç™»å½•成功后要跳转的链接
        shiroFilter.setSuccessUrl("/index");
        shiroFilter.setFilterChainDefinitionMap(filterMap);
        return shiroFilter;
    }
    @Bean("lifecycleBeanPostProcessor")
    public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
        return new LifecycleBeanPostProcessor();
    }
    @Bean
    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
        DefaultAdvisorAutoProxyCreator proxyCreator = new DefaultAdvisorAutoProxyCreator();
        proxyCreator.setProxyTargetClass(true);
        return proxyCreator;
    }
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
        advisor.setSecurityManager(securityManager);
        return advisor;
    }
}
src/main/java/com/landtool/lanbase/config/Swagger2Config.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.landtool.lanbase.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * @author lanbase
 * @Description: TODO(Swagger2配置)
 * @date 2017-10-31 16:17
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {
    //basePackage
    @Value("${sys.swagger.basePackage}")
    private String basePackage;
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("后台管理API文档")
//                .description("更多资讯请点击 http://www.landtool.com")
//                .termsOfServiceUrl("http://www.landtool.com")
                .version("1.0")
                .build();
    }
}
src/main/java/com/landtool/lanbase/config/SysTemPropertyConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,264 @@
package com.landtool.lanbase.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * Created by Administrator on 2018/3/6.
 */
@Component
@ConfigurationProperties(prefix = "sys")
public class SysTemPropertyConfig {
    private String uploadPath;
    private long appId;                 //系统ID
    private String appFullName;         //系统名称
    private String apiServer;
    private String tokenWebRoot;        //token获取服务地址
    private String apptokenWebRoot;     //apptoken获取服务地址
    private String pubzyWebRoot;        //公共资源库地址
    private String loginUrl;            //cas登录url
    private String casHost;             //cas登录域名
    private String gisPortal;           //地图URL
    private String esbHost;             //Esb替换
    private String esbWebServiceHost;   //Esb替换
    private String esbUrl;
    private String srHost;                //泰瑞服务代理host
    private String srUrl;               //泰瑞服务代理url
    private String terraTokenWebRoot;
    private String obtainExtentMapUrl;  //框选地图底图URL
    private String uploadRootPath;
    private String uploadTemplatesPath; //模板上传路径
    private String videoUrl;
    private String ipHost;
    private String gisHost;
    private String proxyUrl;
    private String templateParamsURL;//出图模板参数自动获取服务地址
    private String ncFileConfigURL;//nc文件配置获取服务地址
    private String readNcFileURL;//解析nc文件生成json服务地址
    private String ncStorageUrl;//nc入库服务地址
    private String uploadRestemplateURL;//出图模板上传服务地址
    private String deleteRestemplateURL;//出图模板删除服务地址
    private int  sessionTimeOut=1800;// session è¶…æ—¶æ—¶é—´  å•位秒
    public String getTerraTokenWebRoot() {
        return terraTokenWebRoot;
    }
    public void setTerraTokenWebRoot(String terraTokenWebRoot) {
        this.terraTokenWebRoot = terraTokenWebRoot;
    }
    public String getSrHost() {
        return srHost;
    }
    public void setSrHost(String srHost) {
        this.srHost = srHost;
    }
    public String getSrUrl() {
        return srUrl;
    }
    public void setSrUrl(String srUrl) {
        this.srUrl = srUrl;
    }
    public int getSessionTimeOut() {
        return sessionTimeOut;
    }
    public void setSessionTimeOut(int sessionTimeOut) {
        this.sessionTimeOut = sessionTimeOut;
    }
    public String getPubzyWebRoot() {
        return pubzyWebRoot;
    }
    public void setPubzyWebRoot(String pubzyWebRoot) {
        this.pubzyWebRoot = pubzyWebRoot;
    }
    public String getTokenWebRoot() {
        return tokenWebRoot;
    }
    public void setTokenWebRoot(String tokenWebRoot) {
        this.tokenWebRoot = tokenWebRoot;
    }
    public long getAppId() {
        return appId;
    }
    public void setAppId(long appId) {
        this.appId = appId;
    }
    public String getAppFullName() {
        return appFullName;
    }
    public void setAppFullName(String appFullName) {
        this.appFullName = appFullName;
    }
    public String getApiServer() {
        return apiServer;
    }
    public void setApiServer(String apiServer) {
        this.apiServer = apiServer;
    }
    public String getUploadPath() {
        return uploadPath;
    }
    public void setUploadPath(String uploadPath) {
        this.uploadPath = uploadPath;
    }
    public String getLoginUrl() {
        return loginUrl;
    }
    public void setLoginUrl(String loginUrl) {
        this.loginUrl = loginUrl;
    }
    public String getCasHost() {
        return casHost;
    }
    public void setCasHost(String casHost) {
        this.casHost = casHost;
    }
    public String getGisPortal() {
        return gisPortal;
    }
    public void setGisPortal(String gisPortal) {
        this.gisPortal = gisPortal;
    }
    public String getEsbHost() {
        return esbHost;
    }
    public void setEsbHost(String esbHost) {
        this.esbHost = esbHost;
    }
    public String getEsbUrl() {
        return esbUrl;
    }
    public void setEsbUrl(String esbUrl) {
        this.esbUrl = esbUrl;
    }
    public String getObtainExtentMapUrl() {
        return obtainExtentMapUrl;
    }
    public void setObtainExtentMapUrl(String obtainExtentMapUrl) {
        this.obtainExtentMapUrl = obtainExtentMapUrl;
    }
    public String getUploadTemplatesPath() {
        return uploadTemplatesPath;
    }
    public void setUploadTemplatesPath(String uploadTemplatesPath) {
        this.uploadTemplatesPath = uploadTemplatesPath;
    }
    public String getUploadRootPath(){return uploadRootPath;}
    public void setUploadRootPath(String uploadRootPath){this.uploadRootPath=uploadRootPath;}
    public String getEsbWebServiceHost(){return  esbWebServiceHost;}
    public void setEsbWebServiceHost(String esbWebServiceHost){this.esbWebServiceHost=esbWebServiceHost;}
    public String getVideoUrl(){return videoUrl;}
    public void setVideoUrl(String videoUrl){this.videoUrl=videoUrl;}
    public String getIpHost(){return ipHost;}
    public void setIpHost(String ipHost){this.ipHost = ipHost;}
    public String getGisHost(){return gisHost;}
    public void setGisHost(String gisHost){this.gisHost = gisHost;}
    public String getApptokenWebRoot() {
        return apptokenWebRoot;
    }
    public void setApptokenWebRoot(String apptokenWebRoot) {
        this.apptokenWebRoot = apptokenWebRoot;
    }
    public String getTemplateParamsURL() {
        return templateParamsURL;
    }
    public void setTemplateParamsURL(String templateParamsURL) {
        this.templateParamsURL = templateParamsURL;
    }
    public String getNcFileConfigURL() {
        return ncFileConfigURL;
    }
    public void setNcFileConfigURL(String ncFileConfigURL) {
        this.ncFileConfigURL = ncFileConfigURL;
    }
    public String getReadNcFileURL() {
        return readNcFileURL;
    }
    public void setReadNcFileURL(String readNcFileURL) {
        this.readNcFileURL = readNcFileURL;
    }
    public String getNcStorageUrl() {
        return ncStorageUrl;
    }
    public void setNcStorageUrl(String ncStorageUrl) {
        this.ncStorageUrl = ncStorageUrl;
    }
    public String getUploadRestemplateURL() {
        return uploadRestemplateURL;
    }
    public void setUploadRestemplateURL(String uploadRestemplateURL) {
        this.uploadRestemplateURL = uploadRestemplateURL;
    }
    public String getDeleteRestemplateURL() {
        return deleteRestemplateURL;
    }
    public void setDeleteRestemplateURL(String deleteRestemplateURL) {
        this.deleteRestemplateURL = deleteRestemplateURL;
    }
    public String getProxyUrl() {
        return proxyUrl;
    }
    public void setProxyUrl(String proxyUrl) {
        this.proxyUrl = proxyUrl;
    }
}
src/main/java/com/landtool/lanbase/config/WebConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.landtool.lanbase.config;
import javax.servlet.DispatcherType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import com.landtool.lanbase.common.xss.XssFilter;
import com.landtool.lanbase.modules.api.intercept.ApiInterceptor;
/**
 * @author lanbase
 * @Description: TODO(web配置)
 * @date 2017-6-23 15:07
 */
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    @Autowired
    private ApiInterceptor apiInterceptor;
    @Value("${sys.swagger.open:#{false}}")
    private boolean swaggerOpen;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //映射上传文件的地址
        registry.addResourceHandler("/uploadPath/**").addResourceLocations("file:" + sysConfig.getUploadPath());
        //registry.addResourceHandler("/wenjianjia/**").addResourceLocations("file:"+env.getProperty("wenjianjia"));
        //registry.addResourceHandler("/wenjian/**").addResourceLocations("file:" + sysConfig.getUploadPath());
        //映射swagger
        if (swaggerOpen) {
            registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
        super.addResourceHandlers(registry);
    }
    @Bean
    public FilterRegistrationBean shiroFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new DelegatingFilterProxy("shiroFilter"));
        //该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理
        registration.addInitParameter("targetFilterLifecycle", "true");
        registration.setEnabled(true);
        registration.setOrder(Integer.MAX_VALUE - 1);
        registration.addUrlPatterns("/*");
        return registration;
    }
    //配置xssFilter
    @Bean
    public FilterRegistrationBean xssFilterRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setDispatcherTypes(DispatcherType.REQUEST);
        registration.setFilter(new XssFilter("/sys/"));
        registration.addUrlPatterns("/*");
        registration.setName("xssFilter");
        registration.setOrder(Integer.MAX_VALUE);
        return registration;
    }
    //添加api interceptor
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(apiInterceptor).addPathPatterns("/api/**");
    }
}
src/main/java/com/landtool/lanbase/modules/api/annotation/Login.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package com.landtool.lanbase.modules.api.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 * @author lanbase
 * @Description: TODO(api登录效验)
 * @date 2017-9-27 14:52
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Login {
}
src/main/java/com/landtool/lanbase/modules/api/controller/ActionRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package com.landtool.lanbase.modules.api.controller;
import java.sql.Timestamp;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.modules.res.entity.Res_ActionRecord;
import com.landtool.lanbase.modules.res.service.ResActionRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
 * @author åˆ˜å°æ³¢
 * @Description: èµ„源(浏览、调用、收藏)等操作查询写入接口
 * @date 2018-01-30
 */
@Controller
@RequestMapping("/api/actionrecord/")
@Api(value = "", tags = { "资源操作相关接口" })
public class ActionRecordController {
    @Autowired
    private ResActionRecordService resActionRecordService;
    /**
     * èµ„源调用日志记录,记录用户ESB服务调用情况
     * @param record
     * @Description: æ—¥å¿—数据写入 {@link ResActionRecordService}
     * @Author: xiaoxuan.xie
     * @Date: 13:30 2018/3/28
     * @return: Model
     * @see Res_ActionRecord
     */
    @ResponseBody
    @PostMapping(path = "/adduseinfo")
    @ApiOperation(value = "资源调用日志记录", notes = "")
    public String adduseinfo(
            @ApiParam(name="resourceid",value="资源Id",required=true) @RequestParam(name="resourceid") Integer resourceid,
            @ApiParam(name="appid",value="应用Id") @RequestParam(name="appid", required = false) Integer appid,
            @ApiParam(name="userid",value="用户Id",required=true) @RequestParam(name="userid") Long userid,
            @ApiParam(name="ip",value="ip") @RequestParam(name="ip",required = false) String ip) {
        Res_ActionRecord record = new Res_ActionRecord();
        record.setResourceid(resourceid);
        record.setUserid(userid);
        if(appid != null) record.setAppid(appid);
        if(ip != null) record.setIp(ip);
        Timestamp audittime = new Timestamp(new Date().getTime());// èŽ·å–å½“å‰æ—¶é—´
        boolean success = false;// æ“ä½œçŠ¶æ€
        String msg = "";// æ“ä½œè¿”回消息
        record.setActiontime(audittime);
        record.setActiontype("调用");
        int row = resActionRecordService.insertSelective(record);
        success = row >= 1;
        msg = success ? "日志写入成功!" : "日志写入失败";
        return "{success:" + success + ", msg:'" + msg + "'}";
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/ApplyRecommendApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package com.landtool.lanbase.modules.api.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.common.utils.Result;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResApplyRecommendService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Controller
@RequestMapping("/api/applyrecommend")
@Api(value = "", tags = { "应用程序资源申请相关接口" })
public class ApplyRecommendApiController {
    @Autowired
    private ResApplyRecommendService resApplyRecommendService;
    /**
    * @Description:
    * @author ykm
     * @param sysid
    * @return Result
    * @date 2019/03/26 9:21
    */
    @ResponseBody
    @GetMapping("/getResourceApplyList")
    @ApiOperation(value = "应用程序ID获取申请资源列表", notes = "")
    public Result GetResourceApplyList(@ApiParam(name = "sysid" , value = "系统ID", required = true) @RequestParam(name="sysid") Integer sysid) {
        Map<String, Object> params = new HashMap<>();
        params.put("sysid", sysid);
        List<Res_MainInfo> list = resApplyRecommendService.getResourceList(params);
        return Result.ok().put("result", list);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/CatalogController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,184 @@
package com.landtool.lanbase.modules.api.controller;
import java.text.SimpleDateFormat;
import java.util.List;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.modules.res.entity.Res_Catalog;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResCatalogService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
 * @author åˆ˜å°æ³¢
 * @Description: èµ„源目录相关查询接口
 * @date 2018-01-30
 */
@Controller
@RequestMapping("/api/catalog/")
@Api(value = "", tags = { "资源目录查询接口" })
public class CatalogController {
    @Autowired
    private ResCatalogService resCatalogService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    /**
     * @param parentCatalogId
     * @Description: é€’归获取获取目录树信息,父节点为0时查询整个目录树 {@link ResCatalogService}
     * @Author: xiaoxuan.xie
     * @Date: 17:30 2018/3/15
     * @return: String
     * @see Res_Catalog
     */
    @ResponseBody
    @GetMapping(path = "getTree/{parentCatalogId}")
    @ApiOperation(value = "递归获取获取目录树信息", notes = "")
    public String getTreeByParentID(
            @ApiParam(name = "parentCatalogId", value = "目录父节点Id", required = true) @PathVariable(name = "parentCatalogId") int parentCatalogId) {
        String resCatalogTreeJson = getTreeChildrenNodeList(parentCatalogId);// é€’归获取目录子节点列表
        return "[" + resCatalogTreeJson + "]";
    }
    /**
     * @param parentCatalogId
     * @Description: é€’归获取目录子节点列表 {@link ResCatalogService}
     * @Author: xiaoxuan.xie
     * @Date: 17:30 2018/3/15
     * @return: String
     */
    private String getTreeChildrenNodeList(int parentCatalogId) {
        String resCatalogTreeJson = "";// å®šä¹‰ç›®å½•æ ‘Json字符串存储对象
        List<Res_Catalog> res_catalogList = resCatalogService.selectResCatalogToParentid(parentCatalogId);// æ ¹æ®ç›®å½•父Id获取子目录列表
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// å®žä¾‹åŒ–时间格式转换器
        // å¾ªçŽ¯æž„é€ ç›®å½•æ ‘ç»“æž„Json
        for (Res_Catalog resCatalog : res_catalogList) {
            if (resCatalogTreeJson != "")
                resCatalogTreeJson += ",";
            resCatalogTreeJson += "{'catlogid':" + resCatalog.getCatlogid();
            resCatalogTreeJson += ",'catlogcode':'" + resCatalog.getCatlogcode() + "'";
            resCatalogTreeJson += ",'parentid':" + resCatalog.getParentid();
            resCatalogTreeJson += ",'title':'" + resCatalog.getTitle() + "'";
            resCatalogTreeJson += ",'pingyinfiirst':'" + resCatalog.getPingyinfiirst() + "'";
            resCatalogTreeJson += ",'description':'" + resCatalog.getDescription() + "'";
            resCatalogTreeJson += ",'imgurl':'" + resCatalog.getImgurl() + "'";
            resCatalogTreeJson += ",'orderid':" + resCatalog.getOrderid();
            resCatalogTreeJson += ",'createuser':'" + resCatalog.getCreateuser() + "'";
            resCatalogTreeJson += ",'createdate':'" + sdf.format(resCatalog.getCreatedate()) + "'";
            resCatalogTreeJson += ",'remark':'" + resCatalog.getRemark() + "'";
            resCatalogTreeJson += ",'childnodes':[";
            String resCatalogChildNode = getTreeChildrenNodeList(resCatalog.getCatlogid());// é€’归获取目录子节点列表
            if (resCatalogChildNode != "") {
                resCatalogTreeJson += resCatalogChildNode;
            }
            resCatalogTreeJson += "]}";
        }
        return resCatalogTreeJson;
    }
    /**
     * @param parentCatalogId
     * @Description: èŽ·å–å­ç›®å½•ä¿¡æ¯åˆ—è¡¨{@link ResCatalogService}
     * @Author: xiaoxuan.xie
     * @Date: 17:30 2018/3/15
     * @return: List<Res_Catalog>
     * @see Res_Catalog
     */
    @ResponseBody
    @GetMapping(path = "getList/{parentCatalogId}")
    @ApiOperation(value = "获取子目录信息列表", notes = "")
    public List<Res_Catalog> getListByParentID(
            @ApiParam(name = "parentCatalogId", value = "目录父节点Id", required = true) @PathVariable(name = "parentCatalogId") int parentCatalogId) {
        return resCatalogService.selectResCatalogToParentid(parentCatalogId);
    }
    /**
     * @param catalogId
     * @Description: æŸ¥è¯¢ç›®å½•信息{@link ResCatalogService}
     * @Author: xiaoxuan.xie
     * @Date: 09:30 2018/3/16
     * @return: Res_Catalog
     * @see Res_Catalog
     */
    @ResponseBody
    @GetMapping(path = "info/{catalogId}")
    @ApiOperation(value = "获取目录信息详细信息", notes = "")
    public Res_Catalog getById(
            @ApiParam(name = "catalogId", value = "目录Id", required = true) @PathVariable(name = "catalogId") int catalogId) {
        return resCatalogService.getResCatalogInfoById(catalogId);
    }
    //region å¹³å°é—¨æˆ·æ¨¡å—面板Iframe配置目录树
    /**
     * å¦‚果放开前端面板的配置权限,后期需要完善权限
     * @Description: èŽ·å–ä¸šåŠ¡é›†æˆ-页面集成-Iframe区块目录树
     */
    @ResponseBody
    @GetMapping(path = "YWJCTree/{id}")
    @ApiOperation(value = "获取业务集成-页面集成-Iframe区块目录树", notes = "")
    public String getYWJCTreeData(
            @ApiParam(name = "id", value = "id", required = true) @PathVariable(name = "id") String id,
            HttpServletRequest request) {
        StringBuilder resCatalogJson = new StringBuilder();
        String leixiId = "YWJC";
        Res_MainInfo resMainInfoTWO = new Res_MainInfo();
        resMainInfoTWO.setResourceclass(leixiId);
        resMainInfoTWO.setCParentid(Integer.parseInt(id));
        resMainInfoTWO.setCatlogid(Integer.parseInt(id));
        List<Res_Catalog> resCatalogList = resCatalogService.getYWJCMuLuTree(Integer.parseInt(id));// èŽ·å–å­ç›®å½•åˆ—è¡¨
        // å¾ªçŽ¯æž„é€ å­ç›®å½•èŠ‚ç‚¹
        for (Res_Catalog resCatalog : resCatalogList) {
            if (!"".equals(resCatalogJson.toString())) {
                resCatalogJson.append(',');
            }
            resCatalogJson.append("{id: " + resCatalog.getCatlogid() + ",name:'" + resCatalog.getTitle() + "', isParent: true}");
        }
        // èŽ·å–èµ„æºç±»åž‹åˆ—è¡¨
        List<Res_MainInfo> resMainInfo = resMainInfoService.getYWJCTreeData(resMainInfoTWO); // èŽ·å–ç›®å½•ä¸‹ä¸šåŠ¡é›†æˆ--页面集成--Iframe区块资源列表
        // å¾ªçŽ¯æž„é€ èµ„æºèŠ‚ç‚¹
        for (Res_MainInfo resMainInfo1 : resMainInfo) {
            Res_ExtIntegrate res_extIntegrate = resExtIntegrateService.selectByPrimaryKey(resMainInfo1.getResourceid());// èŽ·å–ä¸šåŠ¡é›†æˆæ‹“å±•ä¿¡æ¯
            if (!"".equals(resCatalogJson.toString())) {
                resCatalogJson.append(',');
            }
            String title = resMainInfo1.getTitle();
            //if (resMainInfo1.getTitle().length() > 16) {
            //    title = resMainInfo1.getTitle().substring(0, 16) + "..";
            //}
            //建议分辨率
            if(res_extIntegrate.getResolution() != null && !res_extIntegrate.getResolution().isEmpty()) {
                title += "(" + res_extIntegrate.getResolution() + ")";
            }
            String serverUrl = res_extIntegrate.getServerurl();
            if (serverUrl == null)
                serverUrl = "";
            resCatalogJson.append("{id: 'ZiYuan_" + resMainInfo1.getResourceid() + "',name:'" + title + "', title: '"
                    + resMainInfo1.getTitle() + "',isParent:false, ServerUrl: '" + serverUrl + "'}");
        }
        return "[" + resCatalogJson.toString() + "]";
    }
    //endregion
}
src/main/java/com/landtool/lanbase/modules/api/controller/DocController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.landtool.lanbase.modules.api.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import springfox.documentation.annotations.ApiIgnore;
/**
 * @author TanBin
 * @Description: TODO()
 * @date 2018-1-26 14:16
 */
@Controller
@RequestMapping("/api")
@ApiIgnore()
public class DocController {
    /**
     * API文档访问入口
     * @return
     */
    @RequestMapping("/doc")
    public String apiDoc(){
        return  "redirect:/swagger-ui.html";
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/JitmonitorApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,375 @@
package com.landtool.lanbase.modules.api.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.redis.OrgUserDefUnitRedis;
import com.landtool.lanbase.modules.org.redis.OrgUserRedis;
import com.landtool.lanbase.modules.org.redis.SysSystemInfoRedis;
import com.landtool.lanbase.modules.org.service.OrgUnitService;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_ActionRecord;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.ZiYuanTongJi.GroupByMuLu;
import com.landtool.lanbase.modules.res.entity.ZiYuanTongJi.GroupByZiYuanLeiXing;
import com.landtool.lanbase.modules.res.service.*;
import com.landtool.lanbase.modules.sys.controller.AbstractController;
import com.landtool.lanbase.modules.sys.service.SysFieldvalueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.GlobalMemory;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Controller
@RequestMapping("/api/monitor/jitmonitor")
public class JitmonitorApiController extends AbstractController {
    @Autowired
    private SysTemPropertyConfig sysConfig;
    @Autowired
    private OrgUserRedis orgUserRedis;
    @Autowired
    SysSystemInfoRedis  sysSystemInfoRedis;
    @Autowired
    private OrgUserDefUnitRedis orgUserDefUnitRedis;
    @Autowired
    private JitMonitorService jitMonitorService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResProblemFeedbackService resProblemFeedbackService;
    @Autowired
    private ResCatalogService resCatalogService;
    @Autowired
    private SysFieldvalueService FieldUtils;
    @Autowired
    private OrgUnitService orgUnitService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private ResApplyRecommendService resApplyRecommendService;
    @Autowired
    private ResActionRecordService resActionRecordService;
    @Autowired
    public ZiYuanMuLuService ziYuanMuLuService;
    public static String strMuLu = "";
     /**
     * èµ„源中心
     * @param model
     * @return
     */
    @RequestMapping("index")
    @ResponseBody
    public String newZiYuanZhongXinIndex(Model model) {
       Map<String,Object> map=new HashMap<String, Object>();
        LinkedHashMap<String, String> ResourceTypeList = FieldUtils.getFieldListByKey("ResourceType");// èŽ·å–èµ„æºç±»åž‹åˆ—è¡¨
        // èµ„源类型饼状统计图
        List<GroupByZiYuanLeiXing> resourceclassList = resMainInfoService.selectResMainInfoGroupByLeiXing();
        Integer resourcecount=resMainInfoService.getAllTotal();
        String AllSeries = "";
        // å¤šäºŽ4个类型的话数据显示前7个资源数量最多的类型,后面的都以其它统计
        if (resourceclassList.size() > 4) {
            int counter = 0;
            for (int i = 4; i < resourceclassList.size(); i++) {
                counter += resourceclassList.get(i).getCount();
            }
            for (int i = 0; i < 4; i++) {
                GroupByZiYuanLeiXing item = resourceclassList.get(i);
                String leixing = ResourceTypeList.get(item.getResourceclass());
                AllSeries += (AllSeries == "" ? "" : ",") + "{ value: " + item.getCount() + ", name: '" + leixing + "'}";
            }
            AllSeries += (AllSeries == "" ? "" : ",") + "{ value: " + counter + ", name: '" + "其它" + "'}";
        }
        // å°‘于等于4个类型就全部显示
        else {
            for (int i = 0; i < resourceclassList.size(); i++) {
                GroupByZiYuanLeiXing item = resourceclassList.get(i);
                String leixing = ResourceTypeList.get(item.getResourceclass());
                AllSeries += (AllSeries == "" ? "" : ",") + "{ value: " + item.getCount() + ", name: '" + leixing + "'}";
            }
        }
        map.put("resourceclassSeries", "[" + AllSeries + "]");
        // èµ„源目录统计图
        List<GroupByMuLu> catlogidList = resMainInfoService.selectResMainInfoGroupByMuLu();
        String MuLuLegends = "";
        String MuLuSeries = "";
        for (int i = 0; i < catlogidList.size(); i++) {
            GroupByMuLu item = catlogidList.get(i);
            //            if (item.getCatlogCode().equals("0"))
            //                continue;
            strMuLu = "";
            //            String legend = GetBianMu(item.getCatlogCode() == null ? 0 : Integer.parseInt(item.getCatlogCode()));
            MuLuLegends += (MuLuLegends == "" ? "" : ",") + "'" + item.getTitle() + "'";
            MuLuSeries += (MuLuSeries == "" ? "" : ",") + item.getCount();
        }
        map.put("MuLuLegends", "[" + MuLuLegends + "]");
        map.put("MuLuSeries", "[" + MuLuSeries + "]");
        // èµ„源审核状态统计图
        map.put("shenhezhuangtaiSeries", "[" + ziYuanMuLuService.getZYTJ_ShenHeZhuangTai() + "]");
        //共享协议统计图
        map.put("sharprotocolSeries", "[" + ziYuanMuLuService.getGongXiangXieYiChart() + "]");
        map.put("resourcecount",resourcecount);
        return JSONObject.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
    }
    /**
     * èµ„源推荐
     */
    private int getMainInfoRecommendCount() {
        Long userid = getUserId();
        Long unitId = orgUserService.getDefaultUnit(userid).getUnitid();
        int count = 0;
        //获取关键字
        List<String> keyWords = resActionRecordService.selectKeyWordsByUserid(Integer.parseInt(userid.toString()));
        if (keyWords != null && keyWords.size() > 0) {
            Map<String, Object> paramMap = new HashMap<String, Object>();
            paramMap.put("userid", userid);
            paramMap.put("isDiTuFuwu", null);
            List<Res_MainInfo> resourceList = resActionRecordService.selectMainInfoRecommends(paramMap);
            count = resourceList != null && resourceList.size() > 0 ? count = resourceList.size() : 0;
        }
        return count;
    }
    @RequestMapping("/queryResActionRecordByZyId")
    @ResponseBody
    public String selectResActionRecordByResourceId(Integer resourceid,Integer page,Integer limit){
        Map<String,Object> param=new HashMap<>();
        param.put("page", page);
        param.put("limit", limit);
        param.put("resourceid", resourceid);
        List<Res_ActionRecord> list=jitMonitorService.selectResActionRecordByResourceId(param);
        for(Res_ActionRecord map: list){
            map.setUsername(orgUserService.getChinesename(map.getUserid()));
        }
        JSONObject json=new JSONObject();
        json.put("total", list.size());
        json.put("data", list);
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
    }
    @RequestMapping("warning")
    @ResponseBody
    public String warnlogshow() {
        List<Map> list=resProblemFeedbackService.getlatestalarm();
        JSONObject json=new JSONObject();
        json.put("total", list.size());
        json.put("data", list);
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
    }
    @RequestMapping("serverstatus")
    @ResponseBody
    public String serverstatus() throws InterruptedException {
        JSONObject json=new JSONObject();
        json.put("cpuinfo", printlnCpuInfo());
        json.put("meminfo", MemInfo());
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
    }
    @RequestMapping("getGisResNumByResStatus")
    @ResponseBody
    public String getGisResNumByResStatus() throws InterruptedException {
        JSONObject json=new JSONObject();
        Map<String,Object> map=new HashMap<>();
        map.put("actionType", "调用");
      List<Map>     activeResources=jitMonitorService.getActiveResource(map);
        json.put("resStatus", jitMonitorService.getGisResNumByResStatus());
        json.put("activeResource", activeResources);
        json.put("activeResourceNum", activeResources.size());
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
    }
    /**
     * ç»Ÿè®¡è°ƒç”¨æœåŠ¡æ¬¡æ•°æœ€å¤šçš„å‰10个用户
     * @return
     * @throws InterruptedException
     */
    @RequestMapping("getTop10UserAndUnit")
    @ResponseBody
    public String calTop10UserForInvokingResource(String actionType) throws InterruptedException {
        //获取用户
         Map<String,Object> map=new HashMap<>();
        map.put("actionType", actionType);
        return JSONObject.toJSONStringWithDateFormat(jitMonitorService.calTop10UserForInvokingResource(map), "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
    }
    /**
     * ç»Ÿè®¡è°ƒç”¨æœåŠ¡æ¬¡æ•°æœ€å¤šçš„å‰10个单位
     * @return
     * @throws InterruptedException
     */
    @RequestMapping("getTop10Sys")
    @ResponseBody
    public String calTop10SysForInvokingResource(String actionType) throws InterruptedException {
         Map<String,Object> map=new HashMap<>();
        map.put("actionType", actionType);
        return JSONObject.toJSONStringWithDateFormat(jitMonitorService.calTop10SysForInvokingResource(map), "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ—¥å¿—统计 res_action_
     */
    @RequestMapping("/assignLogChart")
    public String assignLogChart() {
        return null;
    }
    /**
     * æŸ¥è¯¢çƒ­é—¨èµ„源前10
     * @params actionType æ“ä½œç±»åž‹
     * @return
     * @throws InterruptedException
     */
    @RequestMapping("getHotZyByActionType")
    @ResponseBody
    public String getTop10ResourceByActionType(String actionType) throws InterruptedException {
        Map<String,Object> map=new HashMap<>();
        map.put("actionType", actionType);
        //List<Map<String,Object>>  list=jitMonitorService.getHotZy();
        return JSONObject.toJSONStringWithDateFormat(jitMonitorService.getTop10ResourceByActionType(map), "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
    }
    @RequestMapping("getResourceAssignTimesCount")
    @ResponseBody
    public String getResourceAssignTimesCount(Integer resourceid) throws InterruptedException {
        Map<String, Object> map=new HashMap<>();
        map.put("actionType", "调用");
        map.put("resourceid", resourceid);
        List<Map>  list=jitMonitorService.getResourceAssignTimesCount(map);
        JSONObject json=new JSONObject();
        json.put("data", list);
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
    }
    @RequestMapping("queryResourceLog")
    @ResponseBody
    public String queryResourceLog(Integer resourceid) throws InterruptedException {
        Map<String, Object> map=new HashMap<>();
        map.put("actionType", "调用");
        map.put("resourceid", resourceid);
        List<Map>  list=jitMonitorService.queryResourceLog(map);
        JSONObject json=new JSONObject();
        json.put("data", list);
        return JSONObject.toJSONStringWithDateFormat(json, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
    }
    private JSONObject printlnCpuInfo() throws InterruptedException {
        //map.put("----------------cpu信息----------------");
        SystemInfo systemInfo = new SystemInfo();
        CentralProcessor processor = systemInfo.getHardware().getProcessor();
        long[] prevTicks = processor.getSystemCpuLoadTicks();
        // ç¡çœ 1s
        TimeUnit.SECONDS.sleep(1);
        long[] ticks = processor.getSystemCpuLoadTicks();
        long nice = ticks[CentralProcessor.TickType.NICE.getIndex()] - prevTicks[CentralProcessor.TickType.NICE.getIndex()];
        long irq = ticks[CentralProcessor.TickType.IRQ.getIndex()] - prevTicks[CentralProcessor.TickType.IRQ.getIndex()];
        long softirq = ticks[CentralProcessor.TickType.SOFTIRQ.getIndex()] - prevTicks[CentralProcessor.TickType.SOFTIRQ.getIndex()];
        long steal = ticks[CentralProcessor.TickType.STEAL.getIndex()] - prevTicks[CentralProcessor.TickType.STEAL.getIndex()];
        long cSys = ticks[CentralProcessor.TickType.SYSTEM.getIndex()] - prevTicks[CentralProcessor.TickType.SYSTEM.getIndex()];
        long user = ticks[CentralProcessor.TickType.USER.getIndex()] - prevTicks[CentralProcessor.TickType.USER.getIndex()];
        long iowait = ticks[CentralProcessor.TickType.IOWAIT.getIndex()] - prevTicks[CentralProcessor.TickType.IOWAIT.getIndex()];
        long idle = ticks[CentralProcessor.TickType.IDLE.getIndex()] - prevTicks[CentralProcessor.TickType.IDLE.getIndex()];
        long totalCpu = user + nice + cSys + idle + iowait + irq + softirq + steal;
        JSONObject map=new JSONObject();
        map.put("cpu核数", processor.getLogicalProcessorCount());
        map.put("cpu系统使用率", new DecimalFormat("#.##%").format(cSys * 1.0 / totalCpu));
        map.put("cpu用户使用率", new DecimalFormat("#.##%").format(user * 1.0 / totalCpu));
        map.put("cpu当前等待率", new DecimalFormat("#.##%").format(iowait * 1.0 / totalCpu));
        map.put("cpu当前使用率", new DecimalFormat("#.##%").format(1.0-(idle * 1.0 / totalCpu)));
        return map;
    }
    public JSONObject MemInfo(){
        JSONObject map=new JSONObject();
        SystemInfo systemInfo = new SystemInfo();
        GlobalMemory memory = systemInfo.getHardware().getMemory();
        //总内存
        long totalByte = memory.getTotal();
        //剩余
        long acaliableByte = memory.getAvailable();
        map.put("总内存", formatByte(totalByte));
        map.put("使用", formatByte(totalByte-acaliableByte));
        map.put("剩余内存 ", formatByte(acaliableByte));
        map.put("使用率", new DecimalFormat("#.##%").format((totalByte-acaliableByte)*1.0/totalByte));
        return map;
    }
    public static String formatByte(long byteNumber){
        //换算单位
        double FORMAT = 1024.0;
        double kbNumber = byteNumber/FORMAT;
        if(kbNumber<FORMAT){
            return new DecimalFormat("#.##KB").format(kbNumber);
        }
        double mbNumber = kbNumber/FORMAT;
        if(mbNumber<FORMAT){
            return new DecimalFormat("#.##MB").format(mbNumber);
        }
        double gbNumber = mbNumber/FORMAT;
        if(gbNumber<FORMAT){
            return new DecimalFormat("#.##GB").format(gbNumber);
        }
        double tbNumber = gbNumber/FORMAT;
        return new DecimalFormat("#.##TB").format(tbNumber);
    }
    @RequestMapping("warningIdList")
    @ResponseBody
    public String warningIdList() {
        List<Map> getlatestalarm = resProblemFeedbackService.getlatestalarm();
        List<Object> resourceids = resProblemFeedbackService.getlatestalarm().stream().map(map -> map.get("RESOURCEID")).collect(Collectors.toList());
        JSONObject json=new JSONObject();
        json.put("data", resourceids);
        return JSONObject.toJSONString(json);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/ManagerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package com.landtool.lanbase.modules.api.controller;
import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSONObject;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.terra.GisService;
import com.landtool.lanbase.modules.terra.GisServiceListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.*;
import java.util.function.Consumer;
@RestController
@RequestMapping("/manage")
@CrossOrigin
public class ManagerController {
    @Autowired
    ResExtMapUrlService ResExtMapUrlService;
    // http://www.nmsmp.com:8082/res/ziYuanInsert
     @RequestMapping(value="/batchRegister",method = RequestMethod.GET)
     public @ResponseBody void batchRegister(HttpServletRequest request,HttpServletResponse httpresponse) throws IOException, URISyntaxException
     {
     }
     @RequestMapping(value="/test",method = RequestMethod.POST)
    public @ResponseBody String batchimportUser(@RequestParam(value="file") MultipartFile uploadfile,String tgc,String jsession) throws Exception {
          if(uploadfile.isEmpty()){
              return "file is empty";
          }
          String filename=uploadfile.getOriginalFilename();
          String suffixname=filename.substring(filename.lastIndexOf("."));
          filename=UUID.randomUUID()+suffixname;
          File file =new File("D:/upload/"+filename);
          uploadfile.transferTo(file);
         EasyExcel.read(file, GisService.class,new GisServiceListener(tgc,jsession)).doReadAll();
        return "操作成功" ;
    }
    @RequestMapping(value="/ok",method = RequestMethod.GET)
    public @ResponseBody String ok(HttpServletResponse httpresponse,String tgc,String jsession) throws Exception {
        Cookie cookie=new Cookie("TGC", tgc);
        cookie.setPath("/cas/");
        cookie.setMaxAge(86400);
        httpresponse.addCookie(cookie);
        Cookie cookie1=new Cookie("JSESSIONID", jsession);
        cookie.setMaxAge(86400);
        httpresponse.addCookie(cookie1);
        return "操作成功" ;
    }
    @RequestMapping(value="/batchProxyUpdate",method = RequestMethod.GET)
    public @ResponseBody String updateResource(HttpServletResponse httpresponse,String resids) throws Exception {
        //获取数据库数据
        List<Integer> list=new ArrayList<>();
        List<Map> urls=new ArrayList<>();
        String[] resarray=resids.split(",");
        for (String str : resarray) {
            list.add(Integer.valueOf(str));
        }
        if(!list.isEmpty()){
        urls=ResExtMapUrlService.selectBatchUrl(list);
        urls.forEach(new Consumer<Map>() {
            @Override
            public void accept(Map t) {
                   layersProxy( t);
            }
        });
        }
        return "操作成功" ;
    }
    public void layersProxy(Map t){
          Map<String,Object>  map=new HashMap<>();
           map.put("zyid", Integer.valueOf(t.get("RESOURCEID").toString()));
           map.put("serverUrl", t.get("SERVERURL"));
           map.put("contextPath", "");
           map.put("urlid",t.get("URLID") );
           map.put("isPublic", 1);
           map.put("suffix", 0);
           map.put("fromsys", "HYJGPT");
           map.put("servername", t.get("TITLE"));
           JSONObject json=  getProxyUrl(map);
           Res_ExtMapUrl res=new Res_ExtMapUrl();
           res.setUrlid(Integer.valueOf(t.get("URLID").toString()));
           res.setEsbid( json.getInteger("id"));
           res.setResourceid(Integer.valueOf(t.get("RESOURCEID").toString()));
           res.setServerurl(json.getString("proxyurl"));
           ResExtMapUrlService.updateByPrimaryKey(res);
    }
    public JSONObject getProxyUrl(Map<String,Object> map){
            JSONObject json=new JSONObject();
            try {
                String  res=com.landtool.lanbase.common.utils.HttpUtils.get("http://71.3.21.232:8066"+"/serverRegister/addArcGisServer",map);
                 json=JSONObject.parseObject(res);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return json;
        }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/GuanLianFenXiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
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 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.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.res.entity.Res_BusinessRef;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResBusinessRefService;
import com.landtool.lanbase.modules.res.service.ResExtBusinessLayerService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Controller
@RequestMapping("api")
@Api(value = "", tags = {"气泡关联分析"})
/**
 * æ°”泡——关联分析
 */ public class GuanLianFenXiController {
    @Autowired
    private ResBusinessRefService resBusinessRefService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResExtBusinessLayerService resExtBusinessLayerService;
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    /**
     * èŽ·å–ç›¸å…³å…³è”å›¾å±‚åˆ—è¡¨
     * @param resBusinessRef
     * @return
     */
    @GetMapping("map/getResBusinessRefList")
    @ResponseBody
    @ApiOperation(value = "获取相关关联图层列表", notes = "")
    public String getResBusinessRefList(Res_BusinessRef resBusinessRef, PageBean pageBean) {
        pageBean.setLimit(10);
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数
        List<Res_BusinessRef> list = resBusinessRefService.getResBusinesssRefList(resBusinessRef);
        int countNums = (int) ((Page) list).getTotal();//获取记录总数
        PageBean<Res_BusinessRef> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(list);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Integer i = 0; i < list.size(); i++) {
            Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(list.get(i).getRefresourceid());
            Res_BusinessRef resBusinessRef1 = resBusinessRefService.selectByPrimaryKey(list.get(i).getResourceid());
            Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(list.get(i).getRefresourceid());
            Map<String, Object> map = new HashMap<>();
            map.put("title", resMainInfo.getTitle());
            map.put("resourceid", resMainInfo.getResourceid());
            map.put("resourceclass", resMainInfo.getResourceclass());
            map.put("createuserid", resMainInfo.getCreateuserid());
            if (resBusinessRef1 != null) {
                map.put("inputparam", resBusinessRef1.getInputparam());
                map.put("outputparam", resBusinessRef1.getOutputparam());
                map.put("reftype", resBusinessRef1.getReftype());
            } else {
                map.put("inputparam", "");
                map.put("outputparam", "");
                map.put("reftype", "");
            }
            if (resExtIntegrate != null) {
                map.put("serverurl", resExtIntegrate.getServerurl());
                map.put("showmodel", resExtIntegrate.getShowmodel());
            } else {
                map.put("serverurl", "");
                map.put("showmodel", "");
            }
            map.put("datasources", resMainInfo.getDatasources());
            maps.add(map);
        }
        Map<String, Object> result = new HashMap<>();
        result.put("Count", countNums);
        result.put("Page", pageBean.getPage());
        result.put("ShuJu", maps);
        return JSON.toJSONString(result, SerializerFeature.WriteMapNullValue);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/LayerDiyInfo - ¸±±¾.java.bak
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,166 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.landtool.lanbase.modules.res.entity.Res_DiyLayerInfo;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.util.List;
import java.util.Date;
@Controller
@RequestMapping("/api/layerdiy")
@Api(value = "", tags = {"自定义图层操作信息"})
public class LayerDiyInfo {
    @Autowired
    private ResDiyLayerInfoService resDiyLayerInfoService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    /**
     * æ–°å¢ž/修改自定义图层信息
     */
    @PostMapping(path = "/add")
    @ApiOperation(value = "自定义图层信息 æ–°å¢ž/修改", notes = "")
    @ResponseBody
    public String addDiyLayerInfo(
            @ApiParam(name = "userid", value = "用户Id", required = true) @RequestParam(name = "userid") int userid,
            @ApiParam(name = "resourceid", value = "信息资源Id", required = true) @RequestParam(name = "resourceid") int resourceid,
            @ApiParam(name = "title", value = "标题", required = true) @RequestParam(name = "title") String title,
            @ApiParam(name = "typename", value = "信息类型", required = true) @RequestParam(name = "typename") String typename,
            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content,
            @ApiParam(name = "isshare", value = "共享", required = true) @RequestParam(name = "isshare") Integer isshare) {
        // æ˜¯å¦å­˜åœ¨è®°å½•,存在则修改
        Res_DiyLayerInfo info = resDiyLayerInfoService.queryObjectByUseridAndResid(userid, resourceid, title);
        if (info == null) {// æ–°å¢ž
            info = new Res_DiyLayerInfo();
            info.setResourceid(resourceid);
            info.setContent(content);
            info.setTitle(title);
            info.setTypename(typename);
            info.setDiyuserid(userid);
            Timestamp audittime = new Timestamp(new Date().getTime());
            info.setDiytime(audittime);
            info.setIsshare(isshare);
            resDiyLayerInfoService.insert(info);
            return "添加成功";
        } else {// ä¿®æ”¹
            info.setTitle(title);
            info.setTypename(typename);
            info.setContent(content);
            Timestamp audittime = new Timestamp(new Date().getTime());
            info.setDiytime(audittime);
            info.setIsshare(isshare);
            resDiyLayerInfoService.updateByPrimaryKeySelective(info);
            return "修改成功";
        }
    }
    /**
     * ç¼–辑自定义图层信息风格内容
     */
    @PostMapping(path = "/update")
    @ApiOperation(value = "编辑自定义图层信息风格内容", notes = "")
    @ResponseBody
    public String updateDiyLayerInfo(
            @ApiParam(name = "diyid", value = "Id", required = true) @RequestParam(name = "diyid") int diyid,
            @ApiParam(name = "title", value = "标题") String title,
            @ApiParam(name = "typename", value = "信息类型") String typename,
            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content) {
        Res_DiyLayerInfo info = new Res_DiyLayerInfo();
        if (content.length() != 0) {
            info.setContent(content);
        }
        if (title != null && title.length() != 0) {
            info.setTitle(title);
        }
        if (typename != null && typename.length() != 0) {
            info.setTypename(typename);
        }
        info.setDiyid(diyid);
        //info.setDiyuserid(1); // å…ˆå†™æ­»id,后续改成读取当前登录人id
        resDiyLayerInfoService.updateContentApi(info);
        return "编辑成功";
    }
    /**
     * æŸ¥è¯¢è‡ªå®šä¹‰å›¾å±‚信息列表
     */
//    @ResponseBody
//    @GetMapping(path = "/info")
//    @ApiOperation(value = "自定义图层信息列表", notes = "")
//    public List<Res_DiyLayerInfo> queryListByUserId(@ApiParam(name = "resourceid", value = "信息资源Id") Integer resourceid,
//                                                    @ApiParam(name = "title", value = "标题") String title,
//                                                    @ApiParam(name = "typename", value = "信息类型") String typename,
//                                                    @ApiParam(name = "diyid", value = "diyid") Integer diyid) {
//        Res_DiyLayerInfo record = new Res_DiyLayerInfo();
//        record.setResourceid(resourceid);
//        record.setTitle(title);
//        record.setTypename(typename);
//        record.setDiyid(diyid);
//        return resDiyLayerInfoService.queryApiList(record);
//    }
    /**
     * åˆ é™¤è‡ªå®šä¹‰å›¾å±‚信息
     */
    @PostMapping(path = "/del")
    @ApiOperation(value = "删除自定义图层信息", notes = "")
    @ResponseBody
    public String deleteDiyLayerInfo(
            @ApiParam(name = "diyid", value = "diyid", required = true) @RequestParam(name = "diyid") Integer diyid) {
        resDiyLayerInfoService.deleteDiyLayerInfo(diyid);
        return "删除成功";
    }
    /**
     * æ£€æŸ¥ç”¨æˆ·æ˜¯å¦ä¸ºèµ„源发布人(地图自定义信息保存--共享选项是否显示判断)
     * @param userid
     * @param resourceid
     * @return
     */
    @ResponseBody
    @GetMapping(path = "/checkUserShare/{userid}/{resourceid}")
    @ApiOperation(value = "检查用户是否为资源发布人", notes = "")
    public String checkUserShare(
            @ApiParam(name = "userid", value = "用户ID", required = true) @RequestParam(name = "userid") Long userid,
            @ApiParam(name = "resourceid", value = "资源ID", required = true) @RequestParam(name = "resourceid") Long resourceid) {
        Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid.intValue());//获取资源信息
        if(resMainInfo.getCreateuserid() == resourceid) {
            return "true";
        } else {
            return "false";
        }
    }
    /**
     * æ ¹æ®ID获取自定义风格内容
     * @param diyid
     * @return
     */
    @ResponseBody
    @GetMapping(path = "layerdiycontent/{diyid}")
    @ApiOperation(value = "根据ID获取自定义风格内容", notes = "")
    public String GetLayerDiyContent(@ApiParam(name = "diyid", value = "diyid", required = true) @PathVariable(name = "diyid") Integer diyid,
                                   HttpServletRequest request) {
        String Json = "";
        Res_DiyLayerInfo resDiyLayerInfo = resDiyLayerInfoService.getById(diyid);// èŽ·å–è‡ªå®šä¹‰é£Žæ ¼ä¿¡æ¯
        if (resDiyLayerInfo != null && resDiyLayerInfo.getContent() != null) {
            JSONObject jsStr = JSONObject.parseObject(resDiyLayerInfo.getContent());
            Json = jsStr.get("text").toString();
        }
        return Json;
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/LayerDiyInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,170 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.sql.Timestamp;
import java.util.Date;
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.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import com.landtool.lanbase.modules.res.entity.Res_DiyLayerInfo;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Controller
@RequestMapping("/api/layerdiy")
@Api(value = "", tags = {"自定义图层操作信息"})
public class LayerDiyInfo {
    @Autowired
    private ResDiyLayerInfoService resDiyLayerInfoService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    /**
     * æ–°å¢ž/修改自定义图层信息
     */
    @PostMapping(path = "/add")
    @ApiOperation(value = "自定义图层信息 æ–°å¢ž/修改", notes = "")
    @ResponseBody
    public String addDiyLayerInfo(
            @ApiParam(name = "userid", value = "用户Id", required = true) @RequestParam(name = "userid") int userid,
            @ApiParam(name = "resourceid", value = "信息资源Id", required = true) @RequestParam(name = "resourceid") int resourceid,
            @ApiParam(name = "title", value = "标题", required = true) @RequestParam(name = "title") String title,
            @ApiParam(name = "typename", value = "信息类型", required = true) @RequestParam(name = "typename") String typename,
            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content,
            @ApiParam(name = "isshare", value = "共享", required = true) @RequestParam(name = "isshare") Integer isshare) {
        // æ˜¯å¦å­˜åœ¨è®°å½•,存在则修改
        Res_DiyLayerInfo info = resDiyLayerInfoService.queryObjectByUseridAndResid(userid, resourceid, title);
        if (info == null) {// æ–°å¢ž
            info = new Res_DiyLayerInfo();
            info.setResourceid(resourceid);
            info.setContent(content);
            info.setTitle(title);
            info.setTypename(typename);
            info.setDiyuserid(userid);
            Timestamp audittime = new Timestamp(new Date().getTime());
            info.setDiytime(audittime);
            info.setIsshare(isshare);
            resDiyLayerInfoService.insert(info);
            return "添加成功";
        } else {// ä¿®æ”¹
            info.setTitle(title);
            info.setTypename(typename);
            info.setContent(content);
            Timestamp audittime = new Timestamp(new Date().getTime());
            info.setDiytime(audittime);
            info.setIsshare(isshare);
            resDiyLayerInfoService.updateByPrimaryKeySelective(info);
            return "修改成功";
        }
    }
    /**
     * ç¼–辑自定义图层信息风格内容
     */
    @PostMapping(path = "/update")
    @ApiOperation(value = "编辑自定义图层信息风格内容", notes = "")
    @ResponseBody
    public String updateDiyLayerInfo(
            @ApiParam(name = "diyid", value = "Id", required = true) @RequestParam(name = "diyid") int diyid,
            @ApiParam(name = "title", value = "标题") String title,
            @ApiParam(name = "typename", value = "信息类型") String typename,
            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content) {
        Res_DiyLayerInfo info = new Res_DiyLayerInfo();
        if (content.length() != 0) {
            info.setContent(content);
        }
        if (title != null && title.length() != 0) {
            info.setTitle(title);
        }
        if (typename != null && typename.length() != 0) {
            info.setTypename(typename);
        }
        info.setDiyid(diyid);
        //info.setDiyuserid(1); // å…ˆå†™æ­»id,后续改成读取当前登录人id
        resDiyLayerInfoService.updateContentApi(info);
        return "编辑成功";
    }
    /**
     * æŸ¥è¯¢è‡ªå®šä¹‰å›¾å±‚信息列表
     */
//    @ResponseBody
//    @GetMapping(path = "/info")
//    @ApiOperation(value = "自定义图层信息列表", notes = "")
//    public List<Res_DiyLayerInfo> queryListByUserId(@ApiParam(name = "resourceid", value = "信息资源Id") Integer resourceid,
//                                                    @ApiParam(name = "title", value = "标题") String title,
//                                                    @ApiParam(name = "typename", value = "信息类型") String typename,
//                                                    @ApiParam(name = "diyid", value = "diyid") Integer diyid) {
//        Res_DiyLayerInfo record = new Res_DiyLayerInfo();
//        record.setResourceid(resourceid);
//        record.setTitle(title);
//        record.setTypename(typename);
//        record.setDiyid(diyid);
//        return resDiyLayerInfoService.queryApiList(record);
//    }
    /**
     * åˆ é™¤è‡ªå®šä¹‰å›¾å±‚信息
     */
    @PostMapping(path = "/del")
    @ApiOperation(value = "删除自定义图层信息", notes = "")
    @ResponseBody
    public String deleteDiyLayerInfo(
            @ApiParam(name = "diyid", value = "diyid", required = true) @RequestParam(name = "diyid") Integer diyid) {
        resDiyLayerInfoService.deleteDiyLayerInfo(diyid);
        return "删除成功";
    }
    /**
     * æ£€æŸ¥ç”¨æˆ·æ˜¯å¦ä¸ºèµ„源发布人(地图自定义信息保存--共享选项是否显示判断)
     * @param userid
     * @param resourceid
     * @return
     */
    @ResponseBody
    @GetMapping(path = "/checkUserShare")
    @ApiOperation(value = "检查用户是否为资源发布人", notes = "")
    public String checkUserShare(
            @ApiParam(name = "userid", value = "用户ID", required = true) @RequestParam(name = "userid") Long userid,
            @ApiParam(name = "resourceid", value = "资源ID", required = true) @RequestParam(name = "resourceid") Long resourceid) {
        Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid.intValue());//获取资源信息
        if(resMainInfo.getCreateuserid() == resourceid) {
            return "true";
        } else {
            return "false";
        }
    }
    /**
     * æ ¹æ®ID获取自定义风格内容
     * @param diyid
     * @return
     */
    @ResponseBody
    @GetMapping(path = "layerdiycontent/{diyid}")
    @ApiOperation(value = "根据ID获取自定义风格内容", notes = "")
    public String GetLayerDiyContent(@ApiParam(name = "diyid", value = "diyid", required = true) @PathVariable(name = "diyid") Integer diyid,
                                   HttpServletRequest request) {
        String Json = "";
        Res_DiyLayerInfo resDiyLayerInfo = resDiyLayerInfoService.getById(diyid);// èŽ·å–è‡ªå®šä¹‰é£Žæ ¼ä¿¡æ¯
        if (resDiyLayerInfo != null && resDiyLayerInfo.getContent() != null) {
            JSONObject jsStr = JSONObject.parseObject(resDiyLayerInfo.getContent());
            Json = jsStr.get("text").toString();
        }
        return Json;
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapCommonController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,938 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import com.landtool.lanbase.common.utils.HttpUtils;
import com.qiniu.util.Json;
import org.apache.commons.lang3.StringUtils;
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.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.landtool.lanbase.common.map.EsbToken;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_BookMarks;
import com.landtool.lanbase.modules.res.entity.Res_BusinessRef;
import com.landtool.lanbase.modules.res.entity.Res_DiyLayerInfo;
import com.landtool.lanbase.modules.res.entity.Res_ExtBaseMap;
import com.landtool.lanbase.modules.res.entity.Res_ExtBusinessLayer;
import com.landtool.lanbase.modules.res.entity.Res_ExtFileSource;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_ExtSpaceServer;
import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.Res_QueryAround;
import com.landtool.lanbase.modules.res.entity.Res_SpacesParam;
import com.landtool.lanbase.modules.res.entity.Res_SymbolLibrary;
import com.landtool.lanbase.modules.res.entity.Res_User_LayerExtent;
import com.landtool.lanbase.modules.res.entity.UserDefined.UserDef_BaseMap;
import com.landtool.lanbase.modules.res.entity.UserDefined.UserDef_SpaceServer;
import com.landtool.lanbase.modules.res.entity.ViewModels.LayerObject;
import com.landtool.lanbase.modules.res.service.ResBookMarksService;
import com.landtool.lanbase.modules.res.service.ResBusinessRefService;
import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
import com.landtool.lanbase.modules.res.service.ResExtBaseMapService;
import com.landtool.lanbase.modules.res.service.ResExtBusinessLayerService;
import com.landtool.lanbase.modules.res.service.ResExtFileSourceService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResExtSpaceServerService;
import com.landtool.lanbase.modules.res.service.ResExtThemeMapService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.res.service.ResQueryAroundService;
import com.landtool.lanbase.modules.res.service.ResSpacesParamService;
import com.landtool.lanbase.modules.res.service.ResSymbolLibraryService;
import com.landtool.lanbase.modules.res.service.ResUserLayerExtentService;
import com.landtool.lanbase.modules.res.service.ZhuanTiZhiTuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
 * @author åˆ˜å°æ³¢
 * @Description: å‰ç«¯åœ°å›¾å±•示通用接口,获取底图、获取资源协议或自定义风格信息
 * @date 2018-05-26
 */
@Controller
@RequestMapping("/api/mapcommon/")
@Api(value = "", tags = {"前端地图展示通用接口"})
public class MapCommonController {
    @Autowired
    private ResExtBaseMapService resExtBaseMapService;
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private ZhuanTiZhiTuService zhuanTiZhiTuService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    @Autowired
    private ResDiyLayerInfoService resDiyLayerInfoService;
    @Autowired
    private ResBusinessRefService resBusinessRefService;
    @Autowired
    private ResQueryAroundService resQueryAroundService;
    @Autowired
    private ResExtThemeMapService resExtThemeMapService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    @Autowired
    private ResBookMarksService resBookMarksService;
    @Autowired
    private ResExtBusinessLayerService resExtBusinessLayerService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResSymbolLibraryService resSymbolLibraryService;
    @Autowired
    private ResExtFileSourceService resExtFileSourceService;
    @Autowired
    private ResExtSpaceServerService resExtSpaceServerService;
    @Autowired
    private ResSpacesParamService resSpacesParamService;
    @Autowired
    private ResUserLayerExtentService resUserLayerExtentService;
    /**
     * ä¸“题制图 - åº•图切换 -- èŽ·å–åŸºç¡€åº•å›¾åˆ—è¡¨
     */
    @ResponseBody
    @GetMapping("/basemaplist")
    @ApiOperation(value = "查询已审核的基础底图信息列表", notes = "")
    public List<Map<String, Object>> getBaseMapList(Long userid, String type, Boolean supportDynamic, HttpServletRequest request) {
        List<UserDef_BaseMap> list = zhuanTiZhiTuService.getBaseMapList(type, supportDynamic);
        StringBuilder str = new StringBuilder();
        str.append("[");
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < list.size(); i++) {
            //查询是否是专题地图,是专题地图则获取相关子图层ID
            String subzyids = "";
            boolean isPubzy = false;
            if (list.get(i).getSharprotocol().equals("完全公开")) {
                isPubzy = true;
            }
            Map<String, Object> map = new HashMap<>();
            map.put("resourceId", list.get(i).getResourceid());
            map.put("title", list.get(i).getTitle());
            map.put("imgurl", list.get(i).getImgurl());
            map.put("serverUrl", EsbToken.getEsbUrl(list.get(i).getServerurl(), userid.intValue(), request.getRemoteAddr(), list.get(i).getResourceid(), list.get(i).getEspproxy(), sysConfig, subzyids, isPubzy, list.get(i).getToken(), false));
            if (list.get(i).getRefmarkinfid() != null) { //判断关联标注图资源ID是否为空
                Res_ExtBaseMap resExtBaseMap = resExtBaseMapService.selectByPrimaryKey(list.get(i).getRefmarkinfid());
                if (resExtBaseMap != null) {
                    Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(list.get(i).getRefmarkinfid());
                    Map<String, Object> refmap = new HashMap<>();
                    refmap.put("resourceId", resExtBaseMap.getResourceid());
                    refmap.put("title", resMainInfo.getTitle());
                    refmap.put("publishsoft", resExtBaseMap.getPublishsoft());
                    Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resExtBaseMap.getResourceid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                    if (resExtMapUrl != null) {
                        refmap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), userid.intValue(), request.getRemoteAddr(), resExtBaseMap.getResourceid(), resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, list.get(i).getToken(), false));
                    } else {
                        refmap.put("serverUrl", null);
                    }
                    map.put("AnnoLayer", refmap);
                } else {
                    map.put("AnnoLayer", null);
                }
            } else {
                map.put("AnnoLayer", null);
            }
            maps.add(map);
        }
        str.append("]");
        return maps;
    }
    /**
     * åœ°å›¾å¯¹æ¯” -- èŽ·å–åŸºç¡€åº•å›¾åˆ—è¡¨
     */
    @ResponseBody
    @GetMapping("/incisionMap/basemaplist")
    @ApiOperation(value = "获取地图对比基础底图列表", notes = "")
    public String getIncisionMapBaseList(Long userid, HttpServletRequest request) {
        String[] typeList = new String[]{"矢量", "低精", "高精", "其它"};
        StringBuilder sb = new StringBuilder();
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < typeList.length; i++) {
            List<UserDef_BaseMap> list = zhuanTiZhiTuService.getBaseMapList(typeList[i], false);
            Map<String, Object> map = new HashMap<>();
            map.put("name", typeList[i]);
            map.put("nocheck", true);
            if (i > 0) sb.append(",");
            sb.append("{name: '" + typeList[i] + "', nocheck: true,children:[");
            List<Map<String, Object>> child = new LinkedList<>();
            for (int j = 0; j < list.size(); j++) {
                Map<String, Object> newmap = new HashMap<>();
                newmap.put("name", list.get(j).getTitle());
                newmap.put("id", list.get(j).getResourceid());
                newmap.put("checked", false);
                child.add(newmap);
            }
            map.put("children", child);
            maps.add(map);
        }
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * @Description: èŽ·å–èµ„æºæœåŠ¡åœ°å€ä¿¡æ¯
     * @Author: xiaoxuan.xie
     * @Date: 09:30 2018/3/31
     * @return: String
     * @see Res_MainInfo
     */
    @ResponseBody
    @GetMapping(path = {"layerinfo/{resourceid}/{userid}", "layerinfo/{resourceid}/{userid}/{diyid}"})
    @ApiOperation(value = "获取资源服务地址信息", notes = "")
    public String GetLayerObject(@ApiParam(name = "resourceid", value = "资源Id", required = true) @PathVariable(name = "resourceid") int resourceid, @ApiParam(name = "userid", value = "用户Id", required = true) @PathVariable(name = "userid") Integer userid, @ApiParam(name = "diyid", value = "自定义风格Id") @PathVariable(name = "diyid", required = false) Integer diyid, HttpServletRequest request) throws Exception {
        Map<String, Object> maps = new HashMap<>();
        String Json = "";
        OrgUser orgUser = orgUserService.queryObject(Long.parseLong(userid.toString()));
        if (resourceid > 0) {
            Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid);// èŽ·å–èµ„æºä¸»è¡¨ä¿¡æ¯
            if (resMainInfo != null) {
                String resourceType = resMainInfo.getResourceclass();// èŽ·å–èµ„æºç±»åž‹
                if (resourceType == null) resourceType = "";
                LayerObject layer = null;
                switch (resourceType) {
                    case "KJ_YWTC":
                    case "KJ_JCDT":
                        String username = request.getRemoteUser();
                        Boolean GuanLian = false;//业务关联
                        Boolean ZhouBian = false;//周边查询
                        if (resourceType.equals("KJ_YWTC")) {
                            Res_BusinessRef res_businessRef = new Res_BusinessRef();
                            res_businessRef.setResourceid(resourceid);
                            List<Res_BusinessRef> resBusinessRefList = resBusinessRefService.selectResBusinesssRef(res_businessRef);//获取业务图层关联分析信息
                            if (resBusinessRefList.size() > 0) GuanLian = true;
                            List<Res_QueryAround> resQueryAroundList = resQueryAroundService.getZhouBianList(resourceid);//获取资源周边查询列表
                            if (resQueryAroundList.size() > 0) ZhouBian = true;
                        }
                        // èŽ·å–ç”¨æˆ·å®šä¹‰JSON
                        Res_DiyLayerInfo resDiyLayerInfo;
                        if (diyid != null && diyid > 0) {
                            resDiyLayerInfo = resDiyLayerInfoService.getById(diyid);//获取自定义风格信息
                        } else {
                            resDiyLayerInfo = resDiyLayerInfoService.queryUserObject(userid, resourceid, null);
                        }
                        if (resDiyLayerInfo != null) {
                            maps.put("diyId", resDiyLayerInfo.getDiyid());
                            maps.put("resourceId", resourceid);
                            maps.put("title", resMainInfo.getTitle());
                            maps.put("desurl", resMainInfo.getDesurl());
                            maps.put("content", JSON.parseObject(resDiyLayerInfo.getContent()));
                            maps.put("resourceclass", resourceType);
                            maps.put("GuanLian", GuanLian);
                            maps.put("ZhouBian", ZhouBian);
                        } else {
                            // èŽ·å–ç®¡ç†å‘˜å®šä¹‰JSON
                            resDiyLayerInfo = resDiyLayerInfoService.queryUserObject(userid, resourceid, 1);
                            if (resDiyLayerInfo != null) {
                                maps.put("diyId", resDiyLayerInfo.getDiyid());
                                maps.put("resourceId", resourceid);
                                maps.put("title", resMainInfo.getTitle());
                                maps.put("desurl", resMainInfo.getDesurl());
                                maps.put("content", JSON.parseObject(resDiyLayerInfo.getContent()));
                                maps.put("resourceclass", resourceType);
                                maps.put("GuanLian", GuanLian);
                                maps.put("ZhouBian", ZhouBian);
                            } else {
                                // èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resourceid);
                                //查询是否是专题地图,是专题地图则获取相关子图层ID
                                //Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                String subzyids = "";
                                boolean isPubzy = false;
                                Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
                                if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                                    isPubzy = true;
                                }
                                if (resExtMapUrl != null) {
                                    maps.put("resourceId", resourceid);
                                    maps.put("title", resMainInfo.getTitle());
                                    maps.put("desurl", resMainInfo.getDesurl());
                                    maps.put("typeandurl", resExtMapUrl.getTypeandurl());
                                    maps.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));
                                    maps.put("resourceclass", resourceType);
                                    maps.put("GuanLian", GuanLian);
                                    maps.put("ZhouBian", ZhouBian);
                                } else {
                                    maps.put("resourceId", resourceid);
                                    maps.put("title", resMainInfo.getTitle());
                                    maps.put("desurl", resMainInfo.getDesurl());
                                    maps.put("typeandurl", "");
                                    maps.put("serverUrl", "");
                                    maps.put("resourceclass", resourceType);
                                    maps.put("GuanLian", GuanLian);
                                    maps.put("ZhouBian", ZhouBian);
                                }
                            }
                        }
                        if (resourceType.equals("KJ_JCDT")) {
                            Res_ExtBaseMap resExtBaseMap = resExtBaseMapService.selectByPrimaryKey(resourceid);//获取基础底图拓展信息
                            if (resExtBaseMap.getRefmarkinfid() != null) {
                                Res_MainInfo AnnoMainInfo = resMainInfoService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());
                                Res_ExtBaseMap AnnoLayer = resExtBaseMapService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());
                                if (AnnoLayer != null) {
                                    Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                    String subzyids = "";
                                    if (resExtThemeMap != null) {
                                        subzyids = resExtThemeMap.getSublayerset();
                                    }
                                    boolean isPubzy = false;
                                    Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
                                    if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                                        isPubzy = true;
                                    }
                                    Map<String, Object> AnnoLayerMap = new HashMap<>();
                                    AnnoLayerMap.put("resourceId", AnnoLayer.getResourceid());
                                    AnnoLayerMap.put("title", AnnoMainInfo.getTitle());
                                    AnnoLayerMap.put("publishsoft", AnnoLayer.getPublishsoft());
                                    Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(AnnoLayer.getResourceid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                    if (resExtMapUrl != null) {
                                        AnnoLayerMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), AnnoLayer.getResourceid(), AnnoMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, AnnoMainInfo.getToken(), false));
                                    } else {
                                        AnnoLayerMap.put("serverUrl", null);
                                    }
                                    maps.put("AnnoLayer", AnnoLayerMap);
                                } else {
                                    maps.put("AnnoLayer", null);
                                }
                            } else {
                                maps.put("AnnoLayer", null);
                            }
                        } else {
                            Integer IsExistServiceConfig = 0;
                            Res_ExtBusinessLayer resExtBusinessLayer = resExtBusinessLayerService.selectByPrimaryKey(resourceid);
                            if (resExtBusinessLayer != null && resExtBusinessLayer.getServiceConfig() != null && !resExtBusinessLayer.getServiceConfig().equals("")) {
                                IsExistServiceConfig = 1;
                            }
                            maps.put("IsExistServiceConfig", IsExistServiceConfig);
                        }
                        break;
                    case "KJ_ZTDT"://专题地图
                        Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);// èŽ·å–ä¸“é¢˜åœ°å›¾æ‹“å±•ä¿¡æ¯
                        if (resExtThemeMap != null) {
                            Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resourceid);// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                            String typeandurl = null;
                            String serverurl = null;
                            if (resExtMapUrl != null) {
                                typeandurl = resExtMapUrl.getTypeandurl();
                                serverurl = resExtMapUrl.getServerurl();
                            }
                            maps.put("resourceId", resourceid);
                            maps.put("title", resMainInfo.getTitle());
                            maps.put("mapjson", resExtThemeMap.getType() != null && resExtThemeMap.getType().equals("系统制作") ? JSON.parseObject(resExtThemeMap.getMapjson()) : null);
                            maps.put("resourceclass", "KJ_ZTDT");
                            maps.put("childclass", resExtThemeMap.getType());
                            maps.put("publishsoft", resExtThemeMap.getPublishsoft());
                            maps.put("typeandurl", typeandurl);
                            maps.put("desurl", resMainInfo.getDesurl());
                            maps.put("legendUrl", resExtThemeMap.getLegendurl());
                            maps.put("serverUrl", EsbToken.getEsbUrl(serverurl, orgUser.getUserid().intValue(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig, resExtThemeMap.getSublayerset(), resMainInfo != null && resMainInfo.getSharprotocol().equals("完全公开"), resMainInfo.getToken(), false));
                            if (resExtThemeMap.getType().equals("ArcMap") && resExtThemeMap.getDefaultlayerset() != null) {
                                Res_ExtBaseMap resExtBaseMap = resExtBaseMapService.selectByPrimaryKey(resExtThemeMap.getDefaultlayerset());//获取关联底图信息
                                Res_ExtThemeMap resExtThemeMap1 = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                String subzyids = "";
                                if (resExtThemeMap1 != null) {
                                    subzyids = resExtThemeMap1.getSublayerset();
                                }
                                boolean isPubzy = false;
                                Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
                                if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                                    isPubzy = true;
                                }
                                if (resExtBaseMap != null) {
                                    Map<String, Object> BaseMapLayerObjectMap = new HashMap<>();
                                    Res_ExtMapUrl resExtMapUrl2 = resExtMapUrlService.queryFirstOrderByResId(resExtBaseMap.getResourceid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                    if (resExtMapUrl2 != null) {
                                        BaseMapLayerObjectMap.put("typeandurl", resExtMapUrl2.getTypeandurl());
                                        BaseMapLayerObjectMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl2.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), resExtBaseMap.getResourceid(), resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));
                                    } else {
                                        BaseMapLayerObjectMap.put("typeandurl", "");
                                        BaseMapLayerObjectMap.put("serverUrl", "");
                                    }
                                    Res_MainInfo baseMap = resMainInfoService.selectByPrimaryKey(resExtBaseMap.getResourceid());
                                    BaseMapLayerObjectMap.put("label", baseMap.getTitle());//底图名称
                                    BaseMapLayerObjectMap.put("basemaptype", resExtBaseMap.getBasemaptype());//底图类型
                                    BaseMapLayerObjectMap.put("displaylev", resExtBaseMap.getDisplaylev());//切片级别
                                    //关联标注图
                                    if (resExtBaseMap.getRefmarkinfid() != null) {
                                        Res_ExtBaseMap biaozhu = resExtBaseMapService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());//获取关联底图标注图信息
                                        if (biaozhu != null) {
                                            Map<String, Object> AnnoLayerMap = new HashMap<>();
                                            Res_MainInfo res_mainInfo = resMainInfoService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());
                                            AnnoLayerMap.put("resourceId", res_mainInfo.getResourceid());//标注图ID
                                            AnnoLayerMap.put("label", res_mainInfo.getTitle());//标注图标题
                                            Res_ExtMapUrl resExtMapUrl1 = resExtMapUrlService.queryFirstOrderByResId(resExtBaseMap.getRefmarkinfid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                            if (resExtMapUrl1 != null) {
                                                AnnoLayerMap.put("typeandurl", resExtMapUrl1.getTypeandurl());//协议服务类型--BaseMapType
                                                AnnoLayerMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl1.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), biaozhu.getResourceid(), resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));//协议服务地址--layerUrl
                                            } else {
                                                AnnoLayerMap.put("typeandurl", "");//协议服务类型--BaseMapType
                                                AnnoLayerMap.put("serverUrl", "");//协议服务地址--layerUrl
                                            }
                                            AnnoLayerMap.put("basemaptype", biaozhu.getBasemaptype());//底图类型--layerType
                                            AnnoLayerMap.put("displaylev", biaozhu.getDisplaylev());//切片级别--displayLevels
                                            BaseMapLayerObjectMap.put("AnnoLayer", AnnoLayerMap);
                                        } else {
                                            BaseMapLayerObjectMap.put("AnnoLayer", null);
                                        }
                                    }
                                    maps.put("BaseMapLayerObject", BaseMapLayerObjectMap);
                                } else {
                                    maps.put("BaseMapLayerObject", null);
                                }
                            } else {
                                maps.put("BaseMapLayerObject", null);
                            }
                        } else {
                            maps.put("resourceId", resourceid);
                            maps.put("title", resMainInfo.getTitle());
                            maps.put("mapjson", null);
                            maps.put("resourceclass", "KJ_ZTDT");
                            maps.put("childclass", null);
                            maps.put("publishsoft", null);
                            maps.put("typeandurl", null);
                            maps.put("desurl", resMainInfo.getDesurl());
                            maps.put("legendUrl", null);
                            maps.put("serverUrl", null);
                        }
                        break;
                    case "YWJC":
                        Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resourceid);//获取业务集成拓展信息
                        maps.put("resourceId", resourceid);//业务集成服务地址
                        if (resMainInfo != null) {
                            maps.put("title", resMainInfo.getTitle());//业务集成资源名称
                            maps.put("desurl", resMainInfo.getDesurl());
                        } else {
                            maps.put("title", "");//业务集成资源名称
                            maps.put("desurl", null);
                        }
                        if (resExtIntegrate != null) {
                            maps.put("serverUrl", resExtIntegrate.getServerurl());//业务集成服务地址
                            //获取统计图表配置
                            try {
                                if (resExtIntegrate.getIntegratetype().equals("数据集成") && resExtIntegrate.getServerurl() != null && !resExtIntegrate.getServerurl().isEmpty()) {
                                    maps.put("jieShouContent", HttpOperateUtils.httpGet(resExtIntegrate.getServerurl()));
                                } else {
                                    maps.put("jieShouContent", null);
                                }
                            } catch (IOException e) {
                                maps.put("jieShouContent", null);
                            }
                            maps.put("reflayerfield", resExtIntegrate.getReflayerfield());//业务图层关联字段
                            maps.put("integratetype", resExtIntegrate.getIntegratetype());//业务集成集成类型
                            maps.put("showmodel", resExtIntegrate.getShowmodel());//业务集成页面展示方式
                            maps.put("rendermode", resExtIntegrate.getRendermode());//业务集成渲染方式
                            maps.put("refbasemapid", resExtIntegrate.getRefbasemapid());//关联底图资源ID
                            if (resExtIntegrate.getRefbasemapid() != null) {
                                Res_ExtBaseMap resExtBaseMap = resExtBaseMapService.selectByPrimaryKey(resExtIntegrate.getRefbasemapid());//获取关联底图信息
                                if (resExtBaseMap != null) {
                                    Map<String, Object> BaseMapLayerObjectMap = new HashMap<>();
                                    Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resExtBaseMap.getResourceid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                    Res_ExtThemeMap resExtThemeMap1 = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                    String subzyids = "";
                                    if (resExtThemeMap1 != null) {
                                        subzyids = resExtThemeMap1.getSublayerset();
                                    }
                                    boolean isPubzy = false;
                                    Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
                                    if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                                        isPubzy = true;
                                    }
                                    if (resExtMapUrl != null) {
                                        BaseMapLayerObjectMap.put("typeandurl", resExtMapUrl.getTypeandurl());//协议服务类型
                                        BaseMapLayerObjectMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), resExtBaseMap.getResourceid(), resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));//协议服务地址
                                    } else {
                                        BaseMapLayerObjectMap.put("typeandurl", "");//协议服务类型
                                        BaseMapLayerObjectMap.put("serverUrl", "");//协议服务地址
                                    }
                                    Res_MainInfo baseMap = resMainInfoService.selectByPrimaryKey(resExtBaseMap.getResourceid());
                                    BaseMapLayerObjectMap.put("label", baseMap.getTitle());//底图名称
                                    BaseMapLayerObjectMap.put("basemaptype", resExtBaseMap.getBasemaptype());//底图类型
                                    BaseMapLayerObjectMap.put("displaylev", resExtBaseMap.getDisplaylev());//切片级别
                                    //关联标注图
                                    if (resExtBaseMap.getRefmarkinfid() != null) {
                                        Res_ExtBaseMap biaozhu = resExtBaseMapService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());//获取关联底图标注图信息
                                        if (biaozhu != null) {
                                            Map<String, Object> AnnoLayerMap = new HashMap<>();
                                            Res_MainInfo res_mainInfo = resMainInfoService.selectByPrimaryKey(resExtBaseMap.getRefmarkinfid());
                                            AnnoLayerMap.put("resourceId", res_mainInfo.getResourceid());//标注图ID
                                            AnnoLayerMap.put("label", res_mainInfo.getTitle());//标注图标题
                                            Res_ExtMapUrl resExtMapUrl1 = resExtMapUrlService.queryFirstOrderByResId(resExtBaseMap.getRefmarkinfid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                            if (resExtMapUrl1 != null) {
                                                AnnoLayerMap.put("typeandurl", resExtMapUrl1.getTypeandurl());//协议服务类型--BaseMapType
                                                AnnoLayerMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl1.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), biaozhu.getResourceid(), resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));//协议服务地址--layerUrl
                                            } else {
                                                AnnoLayerMap.put("typeandurl", "");//协议服务类型--BaseMapType
                                                AnnoLayerMap.put("serverUrl", "");//协议服务地址--layerUrl
                                            }
                                            AnnoLayerMap.put("basemaptype", biaozhu.getBasemaptype());//底图类型--layerType
                                            AnnoLayerMap.put("displaylev", biaozhu.getDisplaylev());//切片级别--displayLevels
                                            BaseMapLayerObjectMap.put("AnnoLayer", AnnoLayerMap);
                                        } else {
                                            BaseMapLayerObjectMap.put("AnnoLayer", null);
                                        }
                                    }
                                    maps.put("BaseMapLayerObject", BaseMapLayerObjectMap);
                                } else {
                                    maps.put("BaseMapLayerObject", null);
                                }
                            } else {
                                maps.put("BaseMapLayerObject", null);
                            }
                            if (resExtIntegrate.getReflayerid() != null) {
                                Res_ExtBusinessLayer resExtBusinessLayer = resExtBusinessLayerService.selectByPrimaryKey(resExtIntegrate.getReflayerid());//获取关联业务图层信息
                                if (resExtBusinessLayer != null) {
                                    Res_MainInfo res_mainInfo = resMainInfoService.selectByPrimaryKey(resExtBusinessLayer.getResourceid());
                                    Map<String, Object> YwtcLayerObjectMap = new HashMap<>();
                                    YwtcLayerObjectMap.put("resourceId", res_mainInfo.getResourceid());//关联业务图层资源ID
                                    YwtcLayerObjectMap.put("label", res_mainInfo.getTitle());//关联业务图层标题
                                    YwtcLayerObjectMap.put("dataloadtype", resExtBusinessLayer.getDataloadtype());//加载方式
                                    YwtcLayerObjectMap.put("resourceclass", res_mainInfo.getResourceclass());//资源类型
                                    Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resExtBusinessLayer.getResourceid());// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
                                    Res_ExtThemeMap resExtThemeMap1 = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                    String subzyids = "";
                                    if (resExtThemeMap1 != null) {
                                        subzyids = resExtThemeMap1.getSublayerset();
                                    }
                                    boolean isPubzy = false;
                                    Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
                                    if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                                        isPubzy = true;
                                    }
                                    if (resExtMapUrl != null) {
                                        YwtcLayerObjectMap.put("typeandurl", resExtMapUrl.getTypeandurl());//底图类型
                                        YwtcLayerObjectMap.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));//服务地址
                                    } else {
                                        YwtcLayerObjectMap.put("typeandurl", "");//底图类型
                                        YwtcLayerObjectMap.put("serverUrl", "");//服务地址
                                    }
                                    YwtcLayerObjectMap.put("layerName", resExtBusinessLayer.getLayername());//原图层名称
                                    maps.put("YwtcLayerObject", YwtcLayerObjectMap);
                                } else {
                                    maps.put("YwtcLayerObject", null);
                                }
                            } else {
                                maps.put("YwtcLayerObject", null);
                            }
                        } else {
                            maps.put("serverUrl", null);//业务集成服务地址
                            maps.put("jieShouContent", null);
                            maps.put("reflayerfield", null);//业务图层关联字段
                            maps.put("integratetype", null);//业务集成集成类型
                            maps.put("showmodel", null);//业务集成页面展示方式
                            maps.put("rendermode", null);//业务集成渲染方式
                            maps.put("refbasemapid", null);//关联底图资源ID
                            maps.put("BaseMapLayerObject", null);
                            maps.put("YwtcLayerObject", null);
                        }
                        maps.put("resourceclass", "YWJC");
                        break;
                    case "SJWJ":
                        Res_ExtFileSource model = resExtFileSourceService.selectByPrimaryKey(resourceid);
                        maps.put("resourceId", resourceid);
                        maps.put("title", resMainInfo.getTitle());
                        maps.put("resourceclass", "SJWJ");
                        if (model != null) {
                            maps.put("flag", "nc");
                            if (model.getSourcetype().equals("文件")) {
                                maps.put("serverUrl", model.getServerurl() != null ? (model.getServerurl().substring(0, model.getServerurl().indexOf("."))) : "");
                                String[] filename = {model.getFilename() != null ? model.getFilename().substring(0, model.getFilename().indexOf(".")) : ""};
                                maps.put("filename", filename);
                            } else {
                                maps.put("serverUrl", model.getServerurl() != null ? model.getServerurl() : "");
                                File file = new File(sysConfig.getUploadPath() + model.getServerurl());
                                String[] fileLists = file.list();
                                if (fileLists != null) {
                                    String[] filename = new String[fileLists.length];
                                    for (int i = 0; i < fileLists.length; i++) {
                                        File file1 = new File(fileLists[i]);
                                        filename[i] = file1.getName().substring(0, file1.getName().indexOf("."));
                                    }
                                    maps.put("filename", filename);
                                } else {
                                    maps.put("filename", null);
                                }
                            }
                            maps.put("ncconfig", model.getNcconfig() != null ? model.getNcconfig() : "");
                            maps.put("ncjsonpath", model.getNcjsonpath() != null ? model.getNcjsonpath() : "");
                            maps.put("ncjsonattribute", model.getNcjsonattribute() != null ? model.getNcjsonattribute() : "");
                        }
                        break;
                    case "KJ_KJFX":
                        maps.put("resourceId", resourceid);
                        if (resMainInfo != null) {
                            maps.put("title", resMainInfo.getTitle());
                            maps.put("desurl", resMainInfo.getDesurl());
                        } else {
                            maps.put("title", "");//业务集成资源名称
                            maps.put("desurl", null);
                        }
                        maps.put("resourceclass", "KJ_KJFX");
                        Res_ExtSpaceServer spaceServer = resExtSpaceServerService.selectByPrimaryKey(resourceid);
                        if (spaceServer != null) {
                            maps.put("serverUrl", spaceServer.getServerurl());
                            maps.put("postType", spaceServer.getPosttype());
                            maps.put("diyParamUrl", spaceServer.getDiyparamurl());
                        }
                        //Json += ",spaceParams: [";
                        List<Map<String, Object>> spaceParamsMaps = new LinkedList<>();
                        List<Res_SpacesParam> resSpacesParams = resSpacesParamService.selectByResSourceId(resourceid);
                        if (resSpacesParams != null && resSpacesParams.size() > 0) {
                            for (int i = 0; i < resSpacesParams.size(); i++) {
                                Map<String, Object> spaceParamsMap = new HashMap<>();
                                spaceParamsMap.put("paramId", resSpacesParams.get(i).getParamid());
                                spaceParamsMap.put("orderIndex", resSpacesParams.get(i).getOrderindex());
                                spaceParamsMap.put("paramType", resSpacesParams.get(i).getParamtype());
                                spaceParamsMap.put("paramName", resSpacesParams.get(i).getParamname());
                                spaceParamsMap.put("dataType", resSpacesParams.get(i).getDatatype());
                                spaceParamsMap.put("paramAlias", resSpacesParams.get(i).getParamalias());
                                spaceParamsMap.put("layerStyle", resSpacesParams.get(i).getLayerstyle() == null ? "" : resSpacesParams.get(i).getLayerstyle());
                                spaceParamsMaps.add(spaceParamsMap);
                            }
                        }
                        break;
                }
                String serverUrl =(String) maps.get("serverUrl");
                String content =(String) maps.get("content");
                String url=null;
                if(null!=content){
                     url = JSONObject.parseObject(content).getString("url");
                }
                serverUrl=serverUrl==null?url:serverUrl;
                if(null!=serverUrl&&serverUrl.contains("104:8066")&& !StringUtils.equals("完全公开",resMainInfo.getSharprotocol())){
                    String param="resourceid="+resourceid+"&isPubzy=0&"+"appId=0&"+"applyuserid="+userid;
                    String data = HttpUtils.get(sysConfig.getProxyUrl()+"/genToken" + "?" + param);
                    JSONObject jsonObject = JSON.parseObject(data);
                    String token = jsonObject.get("data").toString();
                    maps.put("serverUrl", serverUrl+"?token="+token);
                }
            }
        }
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * @Description: èŽ·å–èµ„æºæœåŠ¡åè®®ä¸Žåœ°å€ä¿¡æ¯
     * @Author: xiaoxuan.xie
     * @Date: 09:30 2018/4/2
     * @return: String
     * @see Res_MainInfo
     */
    @ResponseBody
    @GetMapping(path = "resurlinfo/{userid}/{resourceid}/{type}/{id}")
    @ApiOperation(value = "获取资源服务协议与地址信息", notes = "")
    public String GetMapUrlObject(@ApiParam(name = "userid", value = "用户ID", required = true) @PathVariable(name = "userid") Long userid, @ApiParam(name = "resourceid", value = "资源Id", required = true) @PathVariable(name = "resourceid") Integer resourceid, @ApiParam(name = "type", value = "type", required = true) @PathVariable(name = "type") String type, @ApiParam(name = "id", value = "id", required = true) @PathVariable(name = "id") Integer id, HttpServletRequest request) {
        String Json = "";
        Map<String, Object> maps = new HashMap<>();
        Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid);// èŽ·å–èµ„æºä¸»è¡¨ä¿¡æ¯
        if (type.equals("Url")) {
            Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.selectByPrimaryKey(id);// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
            Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);
            String subzyids = "";
            if (resExtThemeMap != null) {
                subzyids = resExtThemeMap.getSublayerset();
            }
            boolean isPubzy = false;
            Res_MainInfo resMainInfo1 = resMainInfoService.selectByPrimaryKey(resourceid);
            if (resMainInfo1 != null && resMainInfo1.getSharprotocol().equals("完全公开")) {
                isPubzy = true;
            }
            if (resExtMapUrl != null) {
                OrgUser orgUser = orgUserService.queryObject(userid);
                maps.put("resourceId", resourceid);
                maps.put("title", resMainInfo.getTitle());
                maps.put("desurl", resMainInfo.getDesurl());
                maps.put("typeandurl", resExtMapUrl.getTypeandurl());
                maps.put("serverUrl", EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getUserid().intValue(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig, subzyids, isPubzy, resMainInfo.getToken(), false));
            } else {
                maps.put("resourceId", resourceid);
                maps.put("title", resMainInfo.getTitle());
                maps.put("desurl", resMainInfo.getDesurl());
                maps.put("typeandurl", "");
                maps.put("serverUrl", "");
            }
        } else {
            Res_DiyLayerInfo resDiyLayerInfo = resDiyLayerInfoService.getById(id);// èŽ·å–è‡ªå®šä¹‰é£Žæ ¼ä¿¡æ¯
            if (resDiyLayerInfo != null) {
                maps.put("diyId", resDiyLayerInfo.getDiyid());
                maps.put("resourceId", resourceid);
                maps.put("title", resMainInfo.getTitle());
                maps.put("desurl", resMainInfo.getDesurl());
                maps.put("content", JSON.parseObject(resDiyLayerInfo.getContent()));
            } else {
                maps.put("diyId", id);
                maps.put("resourceId", resourceid);
                maps.put("title", "");
                maps.put("desurl", resMainInfo.getDesurl());
                maps.put("content", null);
            }
        }
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ ¹æ®ç”¨æˆ·ID查询书签列表
     */
    @ResponseBody
    @GetMapping(path = "getBookmarksList/{userid}")
    @ApiOperation(value = "根据用户ID查询书签列表", notes = "")
    public String GetBookmarksList(@ApiParam(name = "userid", value = "用户ID", required = true) @PathVariable(name = "userid") Integer userid) {
        List<Res_BookMarks> resBookMarksList = resBookMarksService.getBookMarksByUserid(userid);
        StringBuilder sb = new StringBuilder();
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < resBookMarksList.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("OBJECTID", resBookMarksList.get(i).getObjectid());
            map.put("name", resBookMarksList.get(i).getTitle());
            map.put("extent", JSON.parseObject(resBookMarksList.get(i).getExtent()));
            maps.add(map);
        }
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * ä¹¦ç­¾æ–°å¢žã€ä¿®æ”¹
     */
    @PostMapping(path = "/addBookMark")
    @ApiOperation(value = "新增、修改地图书签", notes = "")
    @ResponseBody
    public int addMap(@ApiParam(name = "objectid", value = "标签ID") Integer objectid, @ApiParam(name = "userid", value = "用户Id", required = true) Integer userid, @ApiParam(name = "title", value = "标签名称", required = true) String title, @ApiParam(name = "extent", value = "标签地图范围", required = true) String extent) {
        if (objectid == null) objectid = -1;
        int id = 0;
        Res_BookMarks resBookMarks = resBookMarksService.getById(objectid);
        if (resBookMarks != null) {
            resBookMarks.setTitle(title);
            resBookMarksService.updateByPrimaryKey(resBookMarks);
            id = resBookMarks.getObjectid();
        } else {
            resBookMarks = new Res_BookMarks();
            resBookMarks.setTitle(title);
            resBookMarks.setCreateuserid(userid);
            resBookMarks.setExtent(extent);
            Timestamp time = new Timestamp(new Date().getTime());
            resBookMarks.setAddtime(time);
            resBookMarksService.insert(resBookMarks);
            id = resBookMarksService.getCurrentObjectId();
        }
        return id;
    }
    /**
     * æ ‡ç­¾åˆ é™¤
     */
    @ResponseBody
    @GetMapping(path = "delBookMark")
    @ApiOperation(value = "删除地图书签", notes = "")
    public String delBookMark(@ApiParam(name = "objectid", value = "书签ID", required = true) @RequestParam(name = "objectid") Integer objectid) {
        resBookMarksService.deleteByPrimaryKey(objectid);
        return "删除成功";
    }
    /**
     * èŽ·å–ç¬¦å·åº“å¯¹åº”ç©ºé—´ç±»åž‹ç¬¦å·é£Žæ ¼åˆ—è¡¨
     * @return
     */
    @ResponseBody
    @GetMapping(path = "symbolLibrary/list/{geotype}")
    @ApiOperation(value = "获取符号库对应空间类型符号风格列表", notes = "")
    public String getSymbolLibraryList(@ApiParam(name = "geotype", value = "空间类型", required = true) @PathVariable(name = "geotype") String geotype) {
        List<Res_SymbolLibrary> list = resSymbolLibraryService.getListByGeoType(geotype);
        Map<String, Object> maps = new HashMap<>();
        maps.put("success", true);
        List<Map<String, Object>> SymbolLibraryMaps = new LinkedList<>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, Object> SymbolLibraryMap = new HashMap<>();
            SymbolLibraryMap.put(list.get(i).getFhid(), list.get(i).getSymbol());
            SymbolLibraryMaps.add(SymbolLibraryMap);
        }
        maps.put("data", SymbolLibraryMaps);
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * èŽ·å–ç©ºé—´åˆ†æžåˆ—è¡¨æŽ¥å£
     */
    @ResponseBody
    @GetMapping(path = {"spaceserverlist", "spaceserverlist/{userid}"})
    @ApiOperation(value = "查询已审核的空间分析信息列表", notes = "")
    public String getSpaceServerList(@ApiParam(name = "userid", value = "userid") @PathVariable(name = "userid", required = false) Integer userid, HttpServletRequest request) {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("userid", userid);
        List<UserDef_SpaceServer> list = zhuanTiZhiTuService.getSpaceServerList(paramMap);
        List<Map<String, Object>> listMaps = new LinkedList<>();
        for (int i = 0; i < list.size(); i++) {
            String subzyids = "";
            boolean isPubzy = false;
            if (list.get(i).getSharprotocol().equals("完全公开")) {
                isPubzy = true;
            }
            Map<String, Object> map = new HashMap<>();
            map.put("resourceId", list.get(i).getResourceid());
            map.put("title", list.get(i).getTitle());
            map.put("imgurl", list.get(i).getImgurl());
            map.put("serverUrl", list.get(i).getServerurl());
            map.put("postType", list.get(i).getPosttype());
            map.put("diyParamUrl", list.get(i).getDiyparamurl());
            map.put("createuserid", list.get(i).getCreateuserid());
            List<Map<String, Object>> spaceParamsMaps = new LinkedList<>();
            List<Res_SpacesParam> resSpacesParams = resSpacesParamService.selectByResSourceId(list.get(i).getResourceid());
            if (resSpacesParams != null && resSpacesParams.size() > 0) {
                for (int j = 0; j < resSpacesParams.size(); j++) {
                    Map<String, Object> spaceParams = new HashMap<>();
                    spaceParams.put("paramId", resSpacesParams.get(j).getParamid());
                    spaceParams.put("orderIndex", resSpacesParams.get(j).getOrderindex());
                    spaceParams.put("paramType", resSpacesParams.get(j).getParamtype());
                    spaceParams.put("paramName", resSpacesParams.get(j).getParamname());
                    spaceParams.put("dataType", resSpacesParams.get(j).getDatatype());
                    spaceParams.put("paramAlias", resSpacesParams.get(j).getParamalias());
                    spaceParams.put("required", resSpacesParams.get(j).getRequired());
                    spaceParams.put("defaultValue", resSpacesParams.get(j).getDefaultValue());
                    spaceParams.put("layerStyle", resSpacesParams.get(j).getLayerstyle() == null ? "" : resSpacesParams.get(j).getLayerstyle());
                    spaceParamsMaps.add(spaceParams);
                }
            }
            map.put("spaceParams", spaceParamsMaps);
            listMaps.add(map);
        }
        return JSON.toJSONString(listMaps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ–°å¢ž/修改用户图层范围
     */
    @PostMapping(path = "/addUserLayerExtent")
    @ApiOperation(value = "新增/修改用户图层范围", notes = "")
    @ResponseBody
    public int addUserLayerExtent(@ApiParam(name = "id", value = "ID") Integer id, @ApiParam(name = "userid", value = "用户Id", required = true) Integer userid, @ApiParam(name = "resourceid", value = "资源Id", required = true) Integer resourceid, @ApiParam(name = "title", value = "名称", required = true) String title, @ApiParam(name = "extent", value = "范围", required = true) String extent) {
        if (id == null) id = -1;
        int newid = 0;
        Res_User_LayerExtent resUserLayerExtent = resUserLayerExtentService.selectByPrimaryKey(id);
        if (resUserLayerExtent != null) {
            resUserLayerExtent.setTitle(title);
            resUserLayerExtent.setExtent(extent);
            resUserLayerExtentService.updateByPrimaryKeySelective(resUserLayerExtent);
            newid = resUserLayerExtent.getId();
        } else {
            resUserLayerExtent = new Res_User_LayerExtent();
            resUserLayerExtent.setTitle(title);
            resUserLayerExtent.setUserid(userid);
            resUserLayerExtent.setExtent(extent);
            resUserLayerExtent.setResourceid(resourceid);
            resUserLayerExtentService.insertSelective(resUserLayerExtent);
            newid = resUserLayerExtentService.getCurrentObjectId();
        }
        return newid;
    }
    /**
     * æ ¹æ®ç”¨æˆ·ID和资源ID查询图层范围列表
     */
    @ResponseBody
    @GetMapping(path = "getLayerExtentList/{userid}/{resourceid}")
    @ApiOperation(value = "根据用户ID和资源ID查询图层范围列表", notes = "")
    public String getLayerExtentList(@ApiParam(name = "userid", value = "用户ID", required = true) @PathVariable(name = "userid") Integer userid, @ApiParam(name = "resourceid", value = "资源ID", required = true) @PathVariable(name = "resourceid") Integer resourceid) {
        Res_User_LayerExtent resUserLayerExtent = new Res_User_LayerExtent();
        resUserLayerExtent.setResourceid(resourceid);
        resUserLayerExtent.setUserid(userid);
        List<Res_User_LayerExtent> resUserLayerExtents = resUserLayerExtentService.selectByResidAndUserid(resUserLayerExtent);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < resUserLayerExtents.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", resUserLayerExtents.get(i).getId());
            map.put("title", resUserLayerExtents.get(i).getTitle());
            map.put("userid", resUserLayerExtents.get(i).getUserid());
            map.put("resourceid", resUserLayerExtents.get(i).getResourceid());
            map.put("extent", resUserLayerExtents.get(i).getExtent());
            maps.add(map);
        }
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ ¹æ®ID查询图层范围
     */
    @ResponseBody
    @GetMapping(path = "getLayerExtentInfo/{id}")
    @ApiOperation(value = "根据ID查询图层范围", notes = "")
    public String getLayerExtentInfo(@ApiParam(name = "id", value = "ID", required = true) @PathVariable(name = "id") Integer id) {
        Res_User_LayerExtent resUserLayerExtent = resUserLayerExtentService.selectByPrimaryKey(id);
        Map<String, Object> map = new HashMap<>();
        if (resUserLayerExtent != null) {
            map.put("id", resUserLayerExtent.getId());
            map.put("title", resUserLayerExtent.getTitle());
            map.put("userid", resUserLayerExtent.getUserid());
            map.put("resourceid", resUserLayerExtent.getResourceid());
            map.put("extent", resUserLayerExtent.getExtent());
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTempPrintController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,298 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUnitService;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_TempPrint;
import com.landtool.lanbase.modules.res.entity.Res_Template;
import com.landtool.lanbase.modules.res.service.ResTempPrintService;
import com.landtool.lanbase.modules.res.service.ResTemplateService;
import com.landtool.lanbase.modules.sys.controller.AbstractController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Controller
@RequestMapping("/api/maptempprint/")
@Api(value = "", tags = {"专题制图地图出图打印接口"})
public class MapTempPrintController extends AbstractController {
    @Autowired
    private ResTempPrintService resTempPrintService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private OrgUnitService orgUnitService;
    @Autowired
    private ResTemplateService resTemplateService;
    /**
     * æ–°å¢žåœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping(path = "/addMapTempPrint")
    @ApiOperation(value = "新增地图出图打印信息", notes = "")
    @ResponseBody
    public int addMapTempPrint(
            @ApiParam(name = "userid", value = "用户ID", required = true) @RequestParam(name = "userid") int userid,
            @ApiParam(name = "rtid", value = "模板ID") @RequestParam(name = "rtid") Integer rtid,
            @ApiParam(name = "title", value = "标题", required = true) @RequestParam(name = "title") String title,
            @ApiParam(name = "mapcontent", value = "地图内容", required = true) @RequestParam(name = "mapcontent") String mapcontent,
            @ApiParam(name = "chartcontent", value = "制图信息") @RequestParam(name = "chartcontent") String chartcontent,
            @ApiParam(name = "isshowlegend", value = "是否显示图例", required = true) @RequestParam(name = "isshowlegend") int isshowlegend,
            @ApiParam(name = "chartstyle", value = "出图格式", required = true) @RequestParam(name = "chartstyle") String chartstyle,
            @ApiParam(name = "chartscale", value = "出图比例", required = true) @RequestParam(name = "chartscale") String chartscale,
            @ApiParam(name = "chartextent", value = "出图范围") @RequestParam(name = "chartextent") String chartextent,
            @ApiParam(name = "isscalelocked", value = "是否锁定比例尺") @RequestParam(name = "isscalelocked") Integer isscalelocked) {
        Res_TempPrint resTempPrint = new Res_TempPrint();
        resTempPrint.setUserid(userid);//用户ID
        if(rtid != null) {
            resTempPrint.setRtid(rtid);//模板ID
        }
        resTempPrint.setTitle(title);//标题
        if(chartcontent != null && !chartcontent.isEmpty()) {
            resTempPrint.setChartcontent(chartcontent);//制图信息
        }
        resTempPrint.setMapcontent(mapcontent);//地图内容
        resTempPrint.setIsshowlegend(isshowlegend);//是否显示图例
        resTempPrint.setChartstyle(chartstyle);//出图格式
        resTempPrint.setChartscale(chartscale);//出图比例
        resTempPrint.setAuditstatus(3); //新增添加未提交状态
        if(chartextent != null && !chartextent.isEmpty()) {
            resTempPrint.setChartextent(chartextent);//出图范围
        }
        if(isscalelocked != null) {
            resTempPrint.setIsscalelocked(isscalelocked);//是否锁定比例尺
        }
        Timestamp time = new Timestamp(new Date().getTime());
        resTempPrint.setChartdate(time);
        resTempPrintService.insertSelective(resTempPrint);//新增地图出图打印信息
        int objectid = resTempPrintService.queryResTempPrintIdentCurrent();//获取新增信息ID
        return objectid;
    }
    /**
     * æ›´æ–°åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping("updateMapTemPrint")
    @ApiOperation(value = "更新地图出图打印信息", notes = "")
    @ResponseBody
    public int updateMapTemPrint(Res_TempPrint resTempPrint) {
        resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
        return resTempPrint.getObjectid();
    }
    /**
     * æäº¤åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping("sumbitMapTemPrint")
    @ApiOperation(value = "提交地图出图打印信息", notes = "")
    @ResponseBody
    public String sumbitMapTemPrint(int objectid) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objectid);
        Map<String, Object> map = new HashMap<>();
        if (resTempPrint != null) {
            resTempPrint.setAuditstatus(2);
            resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
            map.put("success", true);
            map.put("msg", "提交成功!");
        } else {
            map.put("success", false);
            map.put("msg", "提交失败!提示:出图打印信息不存在!");
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ ¹æ®ID获取地图出图信息
     */
    @GetMapping("getMapPrintById")
    @ResponseBody
    public String getMapPrintById(int objid) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objid);
        OrgUser user = orgUserService.queryObject(resTempPrint.getUserid().longValue());
        String name = user.getChinesename();
        String unit = orgUserService.getDefaultUnit(user.getUserid()).getUnitname();
        //获取审核人中文名
        String auditUserName = "";
        if(resTempPrint.getAudituserid() != null) {
            OrgUser auditUser = orgUserService.queryObject(resTempPrint.getAudituserid().longValue());
            if(auditUser != null) {
                auditUserName = auditUser.getChinesename();
            }
        }
        Res_Template resTemplate = new Res_Template();
        if(resTempPrint.getRtid() != null) {
            resTemplate = resTemplateService.selectResTemplateByRtId(resTempPrint.getRtid());
        }
        String rtname = "";
        String templatetype = "";
        if (resTemplate != null) {
            rtname = resTemplate.getRtname();
            templatetype = resTemplate.getTemplatetype();
        } else if(resTempPrint.getRtid() == 0) {
            rtname = "MAP_ONLY";
            templatetype = "MAP_ONLY";
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<Map<String, Object>> maps = new LinkedList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("userid", resTempPrint.getUserid());
        map.put("rtid", resTempPrint.getRtid());
        map.put("rtname", rtname);
        map.put("templatetype", templatetype);
        map.put("title", resTempPrint.getTitle());
        map.put("auditstatus", resTempPrint.getAuditstatus());
        map.put("audituser", auditUserName);
        map.put("mapcontent", JSON.parseObject(resTempPrint.getMapcontent()));
        map.put("chartcontent", JSON.parseArray(resTempPrint.getChartcontent()));
        map.put("chartextent", resTempPrint.getChartextent());
        map.put("isshowlegend", resTempPrint.getIsshowlegend());
        map.put("isscalelocked", resTempPrint.getIsscalelocked());
        map.put("chartstyle", resTempPrint.getChartstyle());
        map.put("chartscale", resTempPrint.getChartscale());
        map.put("chartdate", sdf.format(resTempPrint.getChartdate()));
        map.put("username", name);
        map.put("userunit", unit);
        maps.add(map);
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * å®¡æ ¸åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping(path = "/auditMapTempPrint")
    @ApiOperation(value = "审核地图出图打印信息", notes = "")
    @ResponseBody
    public String auditMapTempPrint(
            @ApiParam(name = "objectid", value = "出图打印信息ID", required = true) @RequestParam(name = "objectid") int objectid,
            @ApiParam(name = "audituserid", value = "审核人ID", required = true) @RequestParam(name = "audituserid") int audituserid,
            @ApiParam(name = "auditopinion", value = "审核意见") String auditopinion,
            @ApiParam(name = "auditstatus", value = "审核结果", required = true) @RequestParam(name = "auditstatus") int auditstatus) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objectid);
        Map<String, Object> map = new HashMap<>();
        if (resTempPrint != null) {
            try {
                resTempPrint.setAudituserid(audituserid);//审核人
                resTempPrint.setAuditopinion(auditopinion);//审核意见
                resTempPrint.setAuditstatus(auditstatus);//审核结果
                Timestamp time = new Timestamp(new Date().getTime());
                resTempPrint.setAuditdate(time);//审核时间
                resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
                map.put("success", true);
                map.put("msg", "审核成功!");
            } catch (Exception e) {
                map.put("success", false);
                map.put("msg", e.getMessage());
            }
        } else {
            map.put("success", false);
            map.put("msg", "出图打印信息不存在!");
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
    /**
     * èŽ·å–å‡ºå›¾å®¡æ ¸ä¿¡æ¯ å‘布人可看自己出图审核状态,审核人可看自己及其他用户出图资源并可做审核
     * @return
     */
    @GetMapping("/getChuTuList")
    @ResponseBody
    @ApiOperation(value = "获取出图审核信息", notes = "")
    public String selectInfoList(HttpServletRequest request, PageBean pageBean) {
        String callbackFunName = request.getParameter("callback");
        String userprintaudit = request.getParameter("userprintaudit");//用户出图审核权限
        String userid = request.getParameter("userid");//用户ID
        if (callbackFunName == null || callbackFunName.isEmpty()) {
            callbackFunName = "callback";
        }
        pageBean.setLimit(10);
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数
        List<Res_TempPrint> resTempPrints = null;
        Res_TempPrint res_tempPrint = new Res_TempPrint();
        String admin = "true";
        // æŸ¥è¯¢å½“前登陆用户是否具备出图审核权限 æ˜¯ï¼šæŸ¥æ‰€æœ‰ ä¸æ˜¯ï¼šæŸ¥è‡ªå·±çš„
        if (userprintaudit == "false") {
            // å¦‚果具备出图审核权限,不添加用户id,查询所有。如果不是 æ·»åŠ id æŸ¥è¯¢å•个
            admin = "false";
            //Integer userid = getUserId().intValue();//获取登录用户ID
            res_tempPrint.setUserid(Integer.parseInt(userid));
        }
        resTempPrints = resTempPrintService.getList(res_tempPrint);
        int countNums = (int) ((Page) resTempPrints).getTotal();//获取记录总数
        PageBean<Res_TempPrint> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resTempPrints);
        StringBuilder rsb = new StringBuilder();
        rsb.append("[");
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < resTempPrints.size(); i++) {
            Map<String, Object> remap = new HashMap<>();
            remap.put("objectid", resTempPrints.get(i).getObjectid());
            remap.put("title", resTempPrints.get(i).getTitle());
            remap.put("auditstatus", resTempPrints.get(i).getAuditstatus());
            maps.add(remap);
        }
        Map<String, Object> newmap = new HashMap<>();
        newmap.put("Count", countNums);
        newmap.put("Page", pageBean.getPage());
        newmap.put("isAdmin", admin);
        newmap.put("ShuJu", maps);
        return callbackFunName + "(" + JSON.toJSONString(newmap, SerializerFeature.WriteMapNullValue) + ")";
    }
    /**
     * åˆ é™¤å‡ºå›¾è®°å½•
     */
    @GetMapping("/delTempPrint")
    @ResponseBody
    @ApiOperation(value = "获取出图审核信息", notes = "")
    public String selectInfoList(@ApiParam(name = "objectid", value = "出图打印信息ID", required = true) @RequestParam(name = "objectid") int objectid) {
        Map<String, Object> map = new HashMap<>();
        try {
            resTempPrintService.deleteByPrimaryKey(objectid);
            map.put("success", true);
            map.put("msg", "删除成功!");
        } catch (Exception e) {
            map.put("success", false);
            map.put("msg", "删除失败!错误提示:" + e.getMessage());
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTempPrintController.java.bak1
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,275 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUnitService;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_TempPrint;
import com.landtool.lanbase.modules.res.entity.Res_Template;
import com.landtool.lanbase.modules.res.service.ResTempPrintService;
import com.landtool.lanbase.modules.res.service.ResTemplateService;
import com.landtool.lanbase.modules.sys.controller.AbstractController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
@Controller
@RequestMapping("/api/maptempprint/")
@Api(value = "", tags = {"专题制图地图出图打印接口"})
public class MapTempPrintController extends AbstractController {
    @Autowired
    private ResTempPrintService resTempPrintService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private OrgUnitService orgUnitService;
    @Autowired
    private ResTemplateService resTemplateService;
    /**
     * æ–°å¢žåœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping(path = "/addMapTempPrint")
    @ApiOperation(value = "新增地图出图打印信息", notes = "")
    @ResponseBody
    public int addMapTempPrint(@ApiParam(name = "userid", value = "用户ID", required = true) @RequestParam(name = "userid") int userid, @ApiParam(name = "rtid", value = "模板ID") @RequestParam(name = "rtid") Integer rtid, @ApiParam(name = "title", value = "标题", required = true) @RequestParam(name = "title") String title, @ApiParam(name = "mapcontent", value = "地图内容", required = true) @RequestParam(name = "mapcontent") String mapcontent, @ApiParam(name = "chartcontent", value = "制图信息") @RequestParam(name = "chartcontent") String chartcontent, @ApiParam(name = "isshowlegend", value = "是否显示图例", required = true) @RequestParam(name = "isshowlegend") int isshowlegend, @ApiParam(name = "chartstyle", value = "出图格式", required = true) @RequestParam(name = "chartstyle") String chartstyle, @ApiParam(name = "chartscale", value = "出图比例", required = true) @RequestParam(name = "chartscale") String chartscale, @ApiParam(name = "chartextent", value = "出图范围") @RequestParam(name = "chartextent") String chartextent, @ApiParam(name = "isscalelocked", value = "是否锁定比例尺") @RequestParam(name = "isscalelocked") Integer isscalelocked) {
        title = title.replaceAll("\'","&#39;").replaceAll("\"", "&quot;");
        chartcontent = chartextent.replaceAll("\'","&#39;").replaceAll("\"", "&quot;");
        mapcontent = mapcontent.replaceAll("\'","&#39;").replaceAll("\"", "&quot;");
        Res_TempPrint resTempPrint = new Res_TempPrint();
        resTempPrint.setUserid(userid);//用户ID
        if (rtid != null) {
            resTempPrint.setRtid(rtid);//模板ID
        }
        resTempPrint.setTitle(title);//标题
        if (chartcontent != null && !chartcontent.isEmpty()) {
            resTempPrint.setChartcontent(chartcontent);//制图信息
        }
        resTempPrint.setMapcontent(mapcontent);//地图内容
        resTempPrint.setIsshowlegend(isshowlegend);//是否显示图例
        resTempPrint.setChartstyle(chartstyle);//出图格式
        resTempPrint.setChartscale(chartscale);//出图比例
        resTempPrint.setAuditstatus(3); //新增添加未提交状态
        if (chartextent != null && !chartextent.isEmpty()) {
            resTempPrint.setChartextent(chartextent);//出图范围
        }
        if (isscalelocked != null) {
            resTempPrint.setIsscalelocked(isscalelocked);//是否锁定比例尺
        }
        Timestamp time = new Timestamp(new Date().getTime());
        resTempPrint.setChartdate(time);
        resTempPrintService.insertSelective(resTempPrint);//新增地图出图打印信息
        int objectid = resTempPrintService.queryResTempPrintIdentCurrent();//获取新增信息ID
        return objectid;
    }
    /**
     * æ›´æ–°åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping("updateMapTemPrint")
    @ApiOperation(value = "更新地图出图打印信息", notes = "")
    @ResponseBody
    public int updateMapTemPrint(Res_TempPrint resTempPrint) {
        resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
        return resTempPrint.getObjectid();
    }
    /**
     * æäº¤åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping("sumbitMapTemPrint")
    @ApiOperation(value = "提交地图出图打印信息", notes = "")
    @ResponseBody
    public String sumbitMapTemPrint(int objectid) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objectid);
        Map<String, Object> map = new HashMap<>();
        if (resTempPrint != null) {
            resTempPrint.setAuditstatus(2);
            resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
            map.put("success", true);
            map.put("msg", "提交成功!");
        } else {
            map.put("success", false);
            map.put("msg", "提交失败!提示:出图打印信息不存在!");
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
    /**
     * æ ¹æ®ID获取地图出图信息
     */
    @GetMapping("getMapPrintById")
    @ResponseBody
    public String getMapPrintById(int objid) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objid);
        OrgUser user = orgUserService.queryObject(resTempPrint.getUserid().longValue());
        String name = user.getChinesename();
        String unit = orgUserService.getDefaultUnit(user.getUserid()).getUnitname();
        //获取审核人中文名
        String auditUserName = "";
        if (resTempPrint.getAudituserid() != null) {
            OrgUser auditUser = orgUserService.queryObject(resTempPrint.getAudituserid().longValue());
            if (auditUser != null) {
                auditUserName = auditUser.getChinesename();
            }
        }
        Res_Template resTemplate = new Res_Template();
        if (resTempPrint.getRtid() != null) {
            resTemplate = resTemplateService.selectResTemplateByRtId(resTempPrint.getRtid());
        }
        String rtname = "";
        String templatetype = "";
        if (resTemplate != null) {
            rtname = resTemplate.getRtname();
            templatetype = resTemplate.getTemplatetype();
        } else if (resTempPrint.getRtid() == 0) {
            rtname = "MAP_ONLY";
            templatetype = "MAP_ONLY";
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<Map<String, Object>> maps = new LinkedList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("userid", resTempPrint.getUserid());
        map.put("rtid", resTempPrint.getRtid());
        map.put("rtname", rtname);
        map.put("templatetype", templatetype);
        map.put("title", resTempPrint.getTitle());
        map.put("auditstatus", resTempPrint.getAuditstatus());
        map.put("audituser", auditUserName);
        map.put("mapcontent", JSON.parseObject(resTempPrint.getMapcontent()));
        map.put("chartcontent", JSON.parseArray(resTempPrint.getChartcontent()));
        map.put("chartextent", resTempPrint.getChartextent());
        map.put("isshowlegend", resTempPrint.getIsshowlegend());
        map.put("isscalelocked", resTempPrint.getIsscalelocked());
        map.put("chartstyle", resTempPrint.getChartstyle());
        map.put("chartscale", resTempPrint.getChartscale());
        map.put("chartdate", sdf.format(resTempPrint.getChartdate()));
        map.put("username", name);
        map.put("userunit", unit);
        maps.add(map);
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    /**
     * å®¡æ ¸åœ°å›¾å‡ºå›¾æ‰“印信息
     */
    @PostMapping(path = "/auditMapTempPrint")
    @ApiOperation(value = "审核地图出图打印信息", notes = "")
    @ResponseBody
    public String auditMapTempPrint(@ApiParam(name = "objectid", value = "出图打印信息ID", required = true) @RequestParam(name = "objectid") int objectid, @ApiParam(name = "audituserid", value = "审核人ID", required = true) @RequestParam(name = "audituserid") int audituserid, @ApiParam(name = "auditopinion", value = "审核意见") String auditopinion, @ApiParam(name = "auditstatus", value = "审核结果", required = true) @RequestParam(name = "auditstatus") int auditstatus) {
        Res_TempPrint resTempPrint = resTempPrintService.selectByPrimaryKey(objectid);
        Map<String, Object> map = new HashMap<>();
        if (resTempPrint != null) {
            try {
                resTempPrint.setAudituserid(audituserid);//审核人
                resTempPrint.setAuditopinion(auditopinion);//审核意见
                resTempPrint.setAuditstatus(auditstatus);//审核结果
                Timestamp time = new Timestamp(new Date().getTime());
                resTempPrint.setAuditdate(time);//审核时间
                resTempPrintService.updateByPrimaryKeySelective(resTempPrint);
                map.put("success", true);
                map.put("msg", "审核成功!");
            } catch (Exception e) {
                map.put("success", false);
                map.put("msg", e.getMessage());
            }
        } else {
            map.put("success", false);
            map.put("msg", "出图打印信息不存在!");
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
    /**
     * èŽ·å–å‡ºå›¾å®¡æ ¸ä¿¡æ¯ å‘布人可看自己出图审核状态,审核人可看自己及其他用户出图资源并可做审核
     * @return
     */
    @GetMapping("/getChuTuList")
    @ResponseBody
    @ApiOperation(value = "获取出图审核信息", notes = "")
    public String selectInfoList(HttpServletRequest request, PageBean pageBean) {
        String callbackFunName = request.getParameter("callback");
        String userprintaudit = request.getParameter("userprintaudit");//用户出图审核权限
        String userid = request.getParameter("userid");//用户ID
        if (callbackFunName == null || callbackFunName.isEmpty()) {
            callbackFunName = "callback";
        }
        pageBean.setLimit(10);
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数
        List<Res_TempPrint> resTempPrints = null;
        Res_TempPrint res_tempPrint = new Res_TempPrint();
        String admin = "true";
        // æŸ¥è¯¢å½“前登陆用户是否具备出图审核权限 æ˜¯ï¼šæŸ¥æ‰€æœ‰ ä¸æ˜¯ï¼šæŸ¥è‡ªå·±çš„
        if (userprintaudit == "false") {
            // å¦‚果具备出图审核权限,不添加用户id,查询所有。如果不是 æ·»åŠ id æŸ¥è¯¢å•个
            admin = "false";
            res_tempPrint.setUserid(Integer.parseInt(userid));
        }
        resTempPrints = resTempPrintService.getList(res_tempPrint);
        int countNums = (int) ((Page) resTempPrints).getTotal();//获取记录总数
        PageBean<Res_TempPrint> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resTempPrints);
        StringBuilder rsb = new StringBuilder();
        rsb.append("[");
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < resTempPrints.size(); i++) {
            Map<String, Object> remap = new HashMap<>();
            remap.put("objectid", resTempPrints.get(i).getObjectid());
            remap.put("title", resTempPrints.get(i).getTitle());
            remap.put("auditstatus", resTempPrints.get(i).getAuditstatus());
            maps.add(remap);
        }
        Map<String, Object> newmap = new HashMap<>();
        newmap.put("Count", countNums);
        newmap.put("Page", pageBean.getPage());
        newmap.put("isAdmin", admin);
        newmap.put("ShuJu", maps);
        return callbackFunName + "(" + JSON.toJSONString(newmap, SerializerFeature.WriteMapNullValue) + ")";
    }
    /**
     * åˆ é™¤å‡ºå›¾è®°å½•
     */
    @GetMapping("/delTempPrint")
    @ResponseBody
    @ApiOperation(value = "获取出图审核信息", notes = "")
    public String selectInfoList(@ApiParam(name = "objectid", value = "出图打印信息ID", required = true) @RequestParam(name = "objectid") int objectid) {
        Map<String, Object> map = new HashMap<>();
        try {
            resTempPrintService.deleteByPrimaryKey(objectid);
            map.put("success", true);
            map.put("msg", "删除成功!");
        } catch (Exception e) {
            map.put("success", false);
            map.put("msg", "删除失败!错误提示:" + e.getMessage());
        }
        return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapTemplateController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.util.ArrayList;
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.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.res.entity.Res_Template;
import com.landtool.lanbase.modules.res.service.ResTemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Controller
@RequestMapping("api/maptemplate")
@Api(value = "", tags = {"专题制图地图出图打印模板接口"})
public class MapTemplateController {
    @Autowired
    private ResTemplateService resTemplateService;
    @ResponseBody
    @GetMapping("getTemplateList")
    @ApiOperation(value = "获取出图模板信息", notes = "")
    public String getTemplateList(HttpServletRequest request, PageBean pageBean, Res_Template resTemplate, String scal) {
        if (scal != null && !"".equals(scal)) {
            String[] scale = scal.split("-");
            Integer scalemin = Integer.valueOf(scale[0]);
            Integer scalemax = Integer.valueOf(scale[1]);
            resTemplate.setScalemin(scalemin);
            resTemplate.setScalemax(scalemax);
        }
        String callbackFunName = request.getParameter("callback");
        if (callbackFunName == null || callbackFunName.isEmpty()) {
            callbackFunName = "callback";
        }
        pageBean.setLimit(10);
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数
        List<Res_Template> resTemplateList = resTemplateService.selectResTemplate(resTemplate);
        int countNums = (int) ((Page) resTemplateList).getTotal();//获取记录总数
        PageBean<Res_Template> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resTemplateList);
        List<Map<String, Object>> templateList = new LinkedList<>();
        List list = new ArrayList();
        //rsb.append("[");
        for (int i = 0; i < resTemplateList.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("rtid", resTemplateList.get(i).getRtid());
            map.put("rtname", resTemplateList.get(i).getRtname());
            map.put("businesstype", resTemplateList.get(i).getBusinesstype());
            map.put("scalemin", resTemplateList.get(i).getScalemin());
            map.put("scalemax", resTemplateList.get(i).getScalemax());
            map.put("paperstyle", resTemplateList.get(i).getPaperstyle());
            map.put("paperdirection", resTemplateList.get(i).getPaperdirection());
            map.put("chartcontent", resTemplateList.get(i).getChartcontent());
            map.put("mapsize", resTemplateList.get(i).getMapsize());
            map.put("templatetype", resTemplateList.get(i).getTemplatetype());
            templateList.add(map);
            boolean flag = true;
            for (int j = 0; j < list.size(); j++) {
                if (list.get(j).toString().equals(resTemplateList.get(i).getScalemin() + "-" + resTemplateList.get(i).getScalemax())) {
                    flag = false;
                }
            }
            if (flag || list.size() == 0) {
                list.add(resTemplateList.get(i).getScalemin() + "-" + resTemplateList.get(i).getScalemax());
            }
        }
        Map<String, Object> result = new HashMap<>();
        result.put("Count", countNums);
        result.put("Page", pageBean.getPage());
        result.put("ShuJu", templateList);
        result.put("Scal", list);
        return callbackFunName + "(" + JSON.toJSONString(result, SerializerFeature.WriteMapNullValue) + ")";
    }
    @ResponseBody
    @GetMapping("getTemplateById")
    @ApiOperation(value = "获取出图模板信息", notes = "")
    public String getTemplateById(Integer rtid) {
        Res_Template resTemplate = resTemplateService.selectResTemplateByRtId(rtid);
        List<Map<String, Object>> maps = new LinkedList<>();
        Map<String, Object> map = new HashMap<>();
        map.put("paperdirection", resTemplate.getPaperdirection());
        map.put("rtname", resTemplate.getRtname());
        map.put("scale", resTemplate.getScalemin() + "-" + resTemplate.getScalemax());
        map.put("paperstyle", resTemplate.getPaperstyle());
        map.put("chartcontent", resTemplate.getChartcontent());
        map.put("templatetype", resTemplate.getTemplatetype());
        maps.add(map);
        return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue);
    }
    @ResponseBody
    @GetMapping("selectTemplate")
    public String selectTemplate(Res_Template resTemplate) {
        List<Res_Template> resTemplates = resTemplateService.selectResTemplate(resTemplate);
        List<Map<String, Object>> list = new LinkedList<>();
        for (int i = 0; i < resTemplates.size(); i++) {
            Map<String, Object> map = new HashMap<>();
            map.put("rtid", resTemplates.get(i).getRtid());
            map.put("rtname", resTemplates.get(i).getRtname());
            map.put("businesstype", resTemplates.get(i).getBusinesstype());
            map.put("scalemin", resTemplates.get(i).getScalemin());
            map.put("scalemax", resTemplates.get(i).getScalemax());
            map.put("paperstyle", resTemplates.get(i).getPaperstyle());
            map.put("paperdirection", resTemplates.get(i).getPaperdirection());
            map.put("chartcontent", resTemplates.get(i).getChartcontent());
            list.add(map);
        }
        return JSON.toJSONString(list, SerializerFeature.WriteMapNullValue);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/MapViewController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,368 @@
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<Res_Theme_Module> page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());
        Map<String, Object> map = new HashMap<>();
        map.put("themeid", themeid);
        map.put("title", title);
        map.put("moduleIdList", moduleIdList);
        List<Res_Theme_Module> resThemeModuleList1 = resThemeModuleService.getIgnoreThemeModuleList(map);
        int countNums = (int) ((Page) resThemeModuleList1).getTotal();
        PageBean<Res_Theme_Module> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resThemeModuleList1);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (int i = 0; i < resThemeModuleList1.size(); i++) {
            Map<String, Object> 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<Res_Theme> resThemeList = resThemeService.getAllThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜åˆ—è¡¨
        int countNums = (int) ((Page) resThemeList).getTotal();//获取记录总数
        PageBean<Res_Theme> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resThemeList);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Res_Theme resTheme : resThemeList) {
            String title = resTheme.getTitle();
            if (title.length() > 15) {
                title = CommonUtils.subStringUtils(title, 30);
            }
            Map<String, Object> 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<String, Object> 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<String, Object> map = new HashMap<>();
        map.put("themeid", themeId);
        map.put("isOneMap", isOneMap);
        List<Res_Theme_Module> resThemeModuleList = resThemeModuleService.getThemeModuleList(map);
        List<Map<String, Object>> 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<Res_Theme_Module> resThemeModuleList, List<Map<String, Object>> maps, Boolean panduan, int i) {
        Map<String, Object> 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<String, Object> 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<Res_Theme> resThemeList = resThemeService.getDefaultThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜ï¼Œä¸´æ—¶åŽ»é™¤ç”¨æˆ·è¿‡æ»¤
        Map<String, Object> 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<Res_Theme> resThemeList = resThemeService.getOneMapThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜åˆ—è¡¨
        int countNums = (int) ((Page) resThemeList).getTotal();//获取记录总数
        PageBean<Res_Theme> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resThemeList);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Res_Theme resTheme : resThemeList) {
            String title = resTheme.getTitle();
            if (title.length() > 15) {
                title = CommonUtils.subStringUtils(title, 30);
            }
            Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<Res_Theme> resThemeList = resThemeService.getOneMapThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜åˆ—è¡¨
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Res_Theme resTheme : resThemeList) {
            String title = resTheme.getTitle();
            if (title.length() > 15) {
                title = CommonUtils.subStringUtils(title, 30);
            }
            Map<String, Object> 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";
        }
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/ThemeMappingController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,377 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.io.File;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
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.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.common.utils.JpinyinUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.entity.OrgUnit;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_ExtBusinessLayer;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResActionRecordService;
import com.landtool.lanbase.modules.res.service.ResApplyRecommendService;
import com.landtool.lanbase.modules.res.service.ResAuditService;
import com.landtool.lanbase.modules.res.service.ResBusinessRefService;
import com.landtool.lanbase.modules.res.service.ResEvaluationService;
import com.landtool.lanbase.modules.res.service.ResExtBusinessLayerService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResExtThemeMapService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.res.service.ResQueryAroundService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
 * @author åˆ˜å°æ³¢
 * @Description: ä¸“题制图相关接口
 * @date 2018-05-26
 */
@Controller
@RequestMapping("/api/thememaping/")
@Api(value = "", tags = { "专题制图相关接口" })
public class ThemeMappingController {
    @Autowired
    private ResExtThemeMapService resExtThemeMapService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private ResExtBusinessLayerService resExtBusinessLayerService;
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private ResActionRecordService resActionRecordService;
    @Autowired
    private ResApplyRecommendService resApplyRecommendService;
    @Autowired
    private ResAuditService resAuditService;
    @Autowired
    private ResBusinessRefService resBusinessRefService;
    @Autowired
    private ResQueryAroundService resQueryAroundService;
    @Autowired
    private ResEvaluationService resEvaluationService;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    /**
     * æ–°å¢žç³»ç»Ÿèµ„源扩展(专题地图)
     */
    @PostMapping(path = "/addMap")
    @ApiOperation(value = "新增系统资源扩展(专题地图)", notes = "")
    @ResponseBody
    public int addMap(
            // @ApiParam(name="catlogid",value="资源目录Id",required=true)
            // @RequestParam(name="catlogid")int catlogid,
            @ApiParam(name = "resourceid", value = "资源Id") Integer resourceid,
            @ApiParam(name = "title", value = "资源名称", required = true) @RequestParam(name = "title") String title,
            @ApiParam(name = "resourceclass", value = "资源类型代码") String resourceclass,
            @ApiParam(name = "catlogcode", value = "所属目录编码") String catlogcode,
            @ApiParam(name = "publishsoft", value = "发布平台") String publishsoft,
            @ApiParam(name = "layername", value = "原图层名称") String layername,
            @ApiParam(name = "portalguid", value = "Portal资源GUID") String portalguid,
            @ApiParam(name = "legeendurl", value = "自定义图例") String legeendurl,
            @ApiParam(name = "sublayerset", value = "子图层设置") String sublayerset,
            @ApiParam(name = "defaultlayerset", value = "默认底图设置") Integer defaultlayerset,
            @ApiParam(name = "initxmin", value = "初始化地图范围最小的X坐标值") Double initxmin,
            @ApiParam(name = "initxmax", value = "初始化地图范围最大的X坐标值") Double initxmax,
            @ApiParam(name = "initymin", value = "初始化地图范围最小的Y坐标值") Double initymin,
            @ApiParam(name = "initymax", value = "初始化地图范围最大的Y坐标值") Double initymax,
            @ApiParam(name = "fullxmin", value = "地图覆盖范围最小的X坐标值") Double fullxmin,
            @ApiParam(name = "fullxmax", value = "地图覆盖范围最大的X坐标值") Double fullxmax,
            @ApiParam(name = "fullymin", value = "地图覆盖范围最小的Y坐标值") Double fullymin,
            @ApiParam(name = "fullymax", value = "地图覆盖范围最大的Y坐标值") Double fullymax,
            @ApiParam(name = "type", value = "专题类型") String type,
            @ApiParam(name = "mapjson", value = "地图JSON", required = true) String mapjson,
            @ApiParam(name = "userid", value = "创建用户ID", required = true) Long userid) {
        if (resourceid == null)
            resourceid = -1;
        Res_MainInfo main = resMainInfoService.selectByPrimaryKey(resourceid);
        if (main != null) {
            main.setTitle(title);
            main.setAbbreviation(title);
            main.setResourceclass("KJ_ZTDT");// æš‚时先赋值0
            main.setCatlogcode("0");// æš‚时先赋值0
            main.setPingyinfiirst(JpinyinUtils.changeToGetShortPinYin(title).toUpperCase());
            Timestamp time = new Timestamp(new Date().getTime());
            main.setLasteditdate(time);
            resMainInfoService.updateByPrimaryKeySelective(main);
            Res_ExtThemeMap info = resExtThemeMapService.selectByPrimaryKey(resourceid);
            if (info != null) {
                info.setPublishsoft(publishsoft);
                info.setLayername(layername);
                info.setSublayerset(sublayerset);
                info.setDefaultlayerset(defaultlayerset);
                info.setInitxmin(initxmin == null ? 0 : initxmin);
                info.setInitxmax(initxmax == null ? 0 : initxmax);
                info.setInitymin(initymin == null ? 0 : initymin);
                info.setInitymax(initymax == null ? 0 : initymax);
                info.setType(type == null ? "系统制作" : type);
                info.setMapjson(mapjson);
                resExtThemeMapService.updateByPrimaryKeySelective(info);
            }
        } else {
            main = new Res_MainInfo();
            main.setTitle(title);
            main.setAbbreviation(title);
            main.setCatlogid(0);// é»˜è®¤è®¾ç½®0
            main.setResourceclass("KJ_ZTDT");// æš‚时先赋值0
            main.setCatlogcode("0");// æš‚时先赋值0
            main.setPingyinfiirst(JpinyinUtils.changeToGetShortPinYin(title).toUpperCase());
            Timestamp time = new Timestamp(new Date().getTime());
            main.setPubdate(time);
            // æŸ¥è¯¢å‘布人对应的单位ID
            OrgUnit orgUnit = orgUserService.getDefaultUnit(userid);
            if(orgUnit != null) {
                main.setPubunitid(orgUnit.getUnitid().intValue());
            } else {
                main.setPubunitid(0);
            }
            main.setCreateuserid(userid);
            main.setCreatedate(time);
            main.setLasteditdate(time);
            main.setSharprotocol("完全公开");
            main.setEspproxy(0);
            main.setResourcestatus(0);
            main.setAuditstatus(0);
            main.setDisplayby2d(0);
            main.setDisplayby3d(0);
            resMainInfoService.insertSelective(main);
            resourceid = resMainInfoService.queryResMainInfoIdentCurrent();
            Res_ExtThemeMap info = new Res_ExtThemeMap();
            info.setResourceid(resourceid);
            info.setPublishsoft(publishsoft);
            info.setLayername(layername);
            info.setPortalguid(portalguid);
            info.setSublayerset(sublayerset);
            info.setDefaultlayerset(defaultlayerset);
            info.setInitxmin(initxmin == null ? 0 : initxmin);
            info.setInitxmax(initxmax == null ? 0 : initxmax);
            info.setInitymin(initymin == null ? 0 : initymin);
            info.setInitymax(initymax == null ? 0 : initymax);
            info.setType(type == null ? "系统制作" : type);
            info.setMapjson(mapjson);
            resExtThemeMapService.insert(info);
        }
        return resourceid;
    }
    /**
     * ç¼–辑系统资源扩展(专题地图)地图JSON
     */
    @PostMapping(path = "/updateMap")
    @ApiOperation(value = "编辑系统资源扩展(专题地图)地图JSON", notes = "")
    @ResponseBody
    public int updateExtThemeMap(
            @ApiParam(name = "resourceid", value = "信息资源Id", required = true) @RequestParam(name = "resourceid") int resourceid,
            @ApiParam(name = "title", value = "资源名称") @RequestParam(name = "title") String title,
            @ApiParam(name = "mapjson", value = "地图JSON") @RequestParam(name = "mapjson") String mapjson) {
        Res_MainInfo resMainInfo = new Res_MainInfo();
        resMainInfo.setResourceid(resourceid);
        resMainInfo.setTitle(title);
        resMainInfoService.updateByPrimaryKeySelective(resMainInfo);
        Res_ExtThemeMap info = new Res_ExtThemeMap();
        info.setResourceid(resourceid);
        info.setMapjson(mapjson);
        resExtThemeMapService.updateByPrimaryKeySelective(info);
        return resourceid;
    }
    @ResponseBody
    @GetMapping("/info/{resourceid}")
    @ApiOperation(value = "获取系统资源扩展(专题地图)", notes = "")
    public Res_ExtThemeMap queryExtThemeMap(
            @ApiParam(name = "resourceid", value = "信息资源Id") @PathVariable("resourceid") int resourceid) {
        return resExtThemeMapService.selectByPrimaryKey(resourceid);
    }
    @ResponseBody
    @PostMapping("/del")
    @ApiOperation(value = "删除我的制图相关信息", notes = "")
    public String delExtThemeMap(
            @ApiParam(name = "resourceid", value = "信息资源Id") @RequestParam(name ="resourceid") int resourceid) {
        Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);
        if (resExtThemeMap != null) {
            if(resExtThemeMap.getLegendurl() != null) {
                String path = sysConfig.getUploadPath() + "ResExtThemMapServer/" + resExtThemeMap.getLegendurl();
                File file = new File(path);
                if(file.exists()) {
                    file.delete();
                }
            }
            resExtThemeMapService.deleteByPrimaryKey(resourceid);
        }
        //资源协议与地址
        List<Res_ExtMapUrl> resExtMapUrlList = resExtMapUrlService.selectByCondition(resourceid);
        if(resExtMapUrlList != null && resExtMapUrlList.size() > 0){
            resExtMapUrlService.deleteByResourceId(resourceid);
        }
        //资源操作记录
        int resActionRecordCount = resActionRecordService.selectCountByResourceid(resourceid);
        if(resActionRecordCount > 0){
            resActionRecordService.deleteByResourceid(resourceid);
        }
        //资源申请/推荐
        int resApplyRecommendCount = resApplyRecommendService.selectCountByResourceid(resourceid);
        if(resApplyRecommendCount > 0){
            resApplyRecommendService.deleteByResourceid(resourceid);
        }
        //资源发布注销变更审核
        int resAuditCount = resAuditService.selectCountByResourceid(resourceid);
        if(resAuditCount > 0){
            resAuditService.deleteByResourceid(resourceid);
        }
        //业务关联分析
        int resBusinessrefCount = resBusinessRefService.selectCountByResourceid(resourceid);
        if(resBusinessrefCount > 0){
            resBusinessRefService.deleteByResourceid(resourceid);
        }
        //业务关联周边查询
        int resQueryAroundCount = resQueryAroundService.selectCountByResourceid(resourceid);
        if(resQueryAroundCount > 0 ){
            resQueryAroundService.deleteByResourceid(resourceid);
        }
        //资源评价
        int resEvaluationCount = resEvaluationService.selectCountByResourceid(resourceid);
        if(resEvaluationCount > 0){
            resEvaluationService.deleteByResourceid(resourceid);
        }
        resMainInfoService.deleteByPrimaryKey(resourceid);
        return "删除成功";
    }
    /**
     * æ–°å¢žç³»ç»Ÿèµ„源扩展(业务图层)
     */
    @PostMapping(path = "/addBusinessLayer")
    @ApiOperation(value = "新增系统资源扩展(业务图层)", notes = "")
    @ResponseBody
    public int addBusinessLayer(
            // @ApiParam(name="catlogid",value="资源目录Id",required=true)
            // @RequestParam(name="catlogid")int catlogid,
            @ApiParam(name = "resourceid", value = "资源Id") Integer resourceid,
            @ApiParam(name = "title", value = "资源名称", required = true) @RequestParam(name = "title") String title,
            @ApiParam(name = "resourceclass", value = "资源类型代码") String resourceclass,
            @ApiParam(name = "catlogcode", value = "所属目录编码") String catlogcode,
            @ApiParam(name = "publishsoft", value = "发布平台", required = true) @RequestParam(name = "publishsoft") String publishsoft,
            @ApiParam(name = "layername", value = "原图层名称") String layername,
            @ApiParam(name = "dataloadtype", value = "加载方式(按需(MODE_ONDEMAND)、快照(MODE_SNAPSHOT))") String dataloadtype,
            @ApiParam(name = "advancequeryurl", value = "自定义高级查询地址") String advancequeryurl,
            @ApiParam(name = "diyqueryurl", value = "自定义查询列表") String diyqueryurl,
            @ApiParam(name = "diybubbleurl", value = "自定义气泡路径") String diybubbleurl,
            @ApiParam(name = "typeandurl", value = "地理参考信息", required = true) @RequestParam(name = "typeandurl") String typeandurl,
            @ApiParam(name = "serverurl", value = "服务地址", required = true) @RequestParam(name = "serverurl") String serverurl,
            @ApiParam(name = "userid", value = "创建用户ID", required = true) @RequestParam(name = "userid") Long userid) {
        if (resourceid == null)
            resourceid = -1;
        Res_MainInfo main = resMainInfoService.selectByPrimaryKey(resourceid);
        if (main != null) {
            main.setTitle(title);
            main.setAbbreviation(title);
            main.setResourceclass("KJ_YWTC");// æš‚时先赋值0
            main.setCatlogcode("0");// æš‚时先赋值0
            main.setPingyinfiirst(JpinyinUtils.changeToGetShortPinYin(title).toUpperCase());
            Timestamp time = new Timestamp(new Date().getTime());
            main.setLasteditdate(time);
            resMainInfoService.updateByPrimaryKeySelective(main);
            Res_ExtBusinessLayer info = resExtBusinessLayerService.selectByPrimaryKey(resourceid);
            if (info != null) {
                info.setPublishsoft(publishsoft);
                info.setLayername(layername);
                info.setAdvancequeryurl(advancequeryurl);
                info.setDataloadtype(dataloadtype);
                info.setDiybubbleurl(diybubbleurl);
                info.setDiyqueryurl(diyqueryurl);
                resExtBusinessLayerService.updateByPrimaryKeySelective(info);
            }
            Res_ExtMapUrl res_extMapUrl = new Res_ExtMapUrl();
            res_extMapUrl.setResourceid(resourceid);
            res_extMapUrl.setServerurl(serverurl);
            res_extMapUrl.setTypeandurl(typeandurl);
            resExtMapUrlService.insertSelective(res_extMapUrl);
        } else {
            main = new Res_MainInfo();
            main.setTitle(title);
            main.setAbbreviation(title);
            main.setCatlogid(0);// é»˜è®¤è®¾ç½®0
            main.setResourceclass("KJ_YWTC");// æš‚时先赋值0
            main.setCatlogcode("0");// æš‚时先赋值0
            main.setPingyinfiirst(JpinyinUtils.changeToGetShortPinYin(title).toUpperCase());
            Timestamp time = new Timestamp(new Date().getTime());
            main.setPubdate(time);
            // æŸ¥è¯¢å‘布人对应的单位ID
            OrgUnit orgUnit = orgUserService.getDefaultUnit(userid);
            if(orgUnit != null) {
                main.setPubunitid(orgUnit.getUnitid().intValue());
            } else {
                main.setPubunitid(0);
            }
            main.setCreateuserid(userid);
            main.setCreatedate(time);
            main.setLasteditdate(time);
            main.setSharprotocol("完全公开");
            main.setEspproxy(0);
            main.setResourcestatus(0);
            main.setAuditstatus(0);
            main.setDisplayby2d(0);
            main.setDisplayby3d(0);
            resMainInfoService.insertSelective(main);
            resourceid = resMainInfoService.queryResMainInfoIdentCurrent();
            Res_ExtBusinessLayer info = new Res_ExtBusinessLayer();
            info.setResourceid(resourceid);
            info.setPublishsoft(publishsoft);
            info.setLayername(layername);
            info.setAdvancequeryurl(advancequeryurl);
            info.setDataloadtype(dataloadtype);
            info.setDiyqueryurl(diyqueryurl);
            info.setDiybubbleurl(diybubbleurl);
            resExtBusinessLayerService.insert(info);
            Res_ExtMapUrl res_extMapUrl = new Res_ExtMapUrl();
            res_extMapUrl.setResourceid(resourceid);
            res_extMapUrl.setServerurl(serverurl);
            res_extMapUrl.setTypeandurl(typeandurl);
            resExtMapUrlService.insertSelective(res_extMapUrl);
        }
        return resourceid;
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/TokenController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,183 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.common.map.EsbToken;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_Ext3D;
import com.landtool.lanbase.modules.res.entity.Res_ExtFileSource;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_ExtInterFaceService;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_ExtSpaceServer;
import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResApplyRecommendService;
import com.landtool.lanbase.modules.res.service.ResExt3DService;
import com.landtool.lanbase.modules.res.service.ResExtFileSourceService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResExtInterFaceService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResExtSpaceServerService;
import com.landtool.lanbase.modules.res.service.ResExtThemeMapService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.sys.entity.SysSysteminfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@Controller
@RequestMapping("/api/token/")
@Api(value = "", tags = {"Token接口"})
public class TokenController {
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    @Autowired
    private ResExtThemeMapService resExtThemeMapService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResApplyRecommendService resApplyRecommendService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private ResExtInterFaceService resExtInterFaceService;
    @Autowired
    private ResExtFileSourceService resExtFileSourceService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    @Autowired
    private ResExtSpaceServerService resExtSpaceServerService;
    @Autowired
    private ResExt3DService resExt3DService;
    /**
     * åº”用程序获取Token
     */
    @ResponseBody
    @GetMapping(path = "appgenerate")
    @ApiOperation(value = "应用程序获取资源Token", notes = "")
    public String getAppToken(@ApiParam(name = "loginname", value = "登录用户名", required = true) @RequestParam(name = "loginname") String loginname, @ApiParam(name = "appid", value = "应用程序ID", required = true) @RequestParam(name = "appid") Integer appid, @ApiParam(name = "resourceid", value = "资源ID", required = true) @RequestParam(name = "resourceid") Integer resourceid) {
        String result = "";
        try {
            OrgUser orgUser = orgUserService.queryByUserName(loginname);//获取用户信息
            if (orgUser != null) {
                Integer userid = orgUser.getUserid().intValue();//用户ID
                String checkAppUrl = sysConfig.getApiServer() + "/api/sys/systeminfo/getSysListByUserId/" + userid;//获取用户所属应用程序列表地址
                List<SysSysteminfo> permsList = HttpOperateUtils.getJsonObjectArray(checkAppUrl, SysSysteminfo.class);
                boolean isApp = false;//用户是否为应用程序负责人
                String referenceurl = "";//资源调用地址
                if (permsList != null && permsList.size() > 0) {
                    for (int i = 0; i < permsList.size(); i++) {
                        if (permsList.get(i).getAppid().intValue() == appid) {
                            isApp = true;
                            referenceurl = permsList.get(i).getReferenceurl();
                            break;
                        }
                    }
                }
                if (isApp) {
                    Map<String, Object> map = new HashMap<String, Object>();
                    map.put("sysid", appid);
                    map.put("resourceid", resourceid);
                    Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid);//获取资源主表信息
                    if (resMainInfo != null) {
                        int num = resApplyRecommendService.checkAppZiYuan(map);//获取应用程序申请审核通过资源数量
                        if (num > 0 || resMainInfo.getSharprotocol().equals("完全公开")) {
                            if (referenceurl != null && !referenceurl.isEmpty()) {
                                String subzyids = "";
                                String serverUrl = "null";
                                //查询是否是专题地图,是专题地图则获取相关子图层ID
                                if (resMainInfo.getResourceclass().equals("KJ_ZTDT")) {
                                    Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);
                                    if (resExtThemeMap != null) {
                                        subzyids = resExtThemeMap.getSublayerset();
                                    }
                                }
                                Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resourceid);
                                if (resExtMapUrl != null) {
                                    serverUrl = (resExtMapUrl.getServerurl() == null || resExtMapUrl.getServerurl().isEmpty()) ? "null" : "\"" + resExtMapUrl.getServerurl() + "\"";
                                } else {
                                    if (resMainInfo.getResourceclass().equals("JKFW")) {
                                        Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(resourceid);
                                        if (res_extInterFaceService != null) {
                                            serverUrl = res_extInterFaceService.getServerurl() == null ? "null" : "\"" + res_extInterFaceService.getServerurl() + "\"";
                                        }
                                    }
                                    if (resMainInfo.getResourceclass().equals("SJWJ")) {
                                        Res_ExtFileSource resExtFileSource = resExtFileSourceService.selectByPrimaryKey(resourceid);
                                        if (resExtFileSource != null) {
                                            serverUrl = resExtFileSource.getServerurl() == null ? "null" : "\"" + resExtFileSource.getServerurl() + "\"";
                                        }
                                    }
                                    if (resMainInfo.getResourceclass().equals("YWJC")) {
                                        Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resourceid);
                                        if (resExtIntegrate != null) {
                                            serverUrl = resExtIntegrate.getServerurl() == null ? "null" : "\"" + resExtIntegrate.getServerurl() + "\"";
                                        }
                                    }
                                    if (resMainInfo.getResourceclass().equals("KJ_KJFX")) {
                                        Res_ExtSpaceServer resExtSpaceServer = resExtSpaceServerService.selectByPrimaryKey(resourceid);
                                        if (resExtSpaceServer != null) {
                                            serverUrl = resExtSpaceServer.getServerurl() == null ? "null" : "\"" + resExtSpaceServer.getServerurl() + "\"";
                                        }
                                    }
//                                    æ·»åŠ ä¸‰ç»´åœ°å½¢å’Œä¸‰ç»´å½±åƒ add 2019/08/01
                                    if (resMainInfo.getResourceclass().equals("KJ_SWMX") || resMainInfo.getResourceclass().equals("KJ_SWDX") || resMainInfo.getResourceclass().equals("KJ_SWYX")) {
                                        Res_Ext3D resExt3D = resExt3DService.selectByPrimaryKey(resourceid);
                                        if (resExt3D != null) {
                                            serverUrl = resExt3D.getServerurl() == null ? "null" : "\"" + resExt3D.getServerurl() + "\"";
                                        }
                                    }
                                }
                                String token = EsbToken.getAppEsbToken(userid, appid, referenceurl, resourceid, resMainInfo.getEspproxy(), sysConfig, subzyids, resMainInfo.getToken());
                                result = "{ \"success\": true, \"serverUrl\": " + serverUrl + ", \"token\": " + (token.isEmpty() ? "null" : "\"" + token + "\"") + "}";
                            } else {
                                result = "{ \"success\": false, \"msg\": \"应用程序资源引用地址未配置!\" }";
                            }
                        } else {
                            result = "{ \"success\": false, \"msg\": \"应用程序没有资源权限!\" }";
                        }
                    } else {
                        result = "{ \"success\": false, \"msg\": \"资源不存在!\" }";
                    }
                } else {
                    result = "{ \"success\": false, \"msg\": \"用户不是应用程序系统负责人!\" }";
                }
            } else {
                result = "{ \"success\": false, \"msg\": \"用户不存在!\" }";
            }
        } catch (IOException e) {
            result = "{ \"success\": false, \"msg\": \"" + e.getMessage() + "\" }";
        }
        return result;
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/ZhouBianChaXunController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
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.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.Res_QueryAround;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.res.service.ResQueryAroundService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@Controller
@RequestMapping("api")
@Api(value = "", tags = {"气泡周边查询"})
/**
 * æ°”泡——周边查询
 */
public class ZhouBianChaXunController {
    @Autowired
    private ResQueryAroundService resQueryAroundService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    /**
     * å½“前用户自定义周边查询的关联资源列表
     * @param res_queryAround
     * @param pageBean
     * @return
     */
    @GetMapping("map/zhoubianchaxun")
    @ResponseBody
    @ApiOperation(value = "当前用户自定义周边查询的关联资源列表", notes = "")
    public String getZhouBianChaXun(Res_QueryAround res_queryAround, PageBean pageBean) {
        Page<Res_MainInfo> page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<Res_QueryAround> list = resQueryAroundService.getZhouBianChaXunList(res_queryAround);
        int countNums = (int) ((Page) list).getTotal();
        PageBean<Res_QueryAround> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(list);
        if (list.size() == 0) {
            res_queryAround.setAdduserid(0);
            list = resQueryAroundService.getZhouBianChaXunList(res_queryAround);
        }
        Map<String, Object> result = new HashMap<>();
        result.put("totalCount", countNums);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Integer i = 0; i < list.size(); i++) {
            Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(list.get(i).getAroundresid());
            Map<String, Object> map = new HashMap<>();
            map.put("queryid", list.get(i).getQueryid());
            map.put("resourceid", resMainInfo.getResourceid());
            map.put("title", resMainInfo.getTitle());
            map.put("resourceclass", resMainInfo.getResourceclass());
            map.put("pubdate", sdf.format(resMainInfo.getPubdate()));
            map.put("datasources", resMainInfo.getDatasources());
            maps.add(map);
        }
        result.put("topics", maps);
        return JSON.toJSONString(result, SerializerFeature.WriteMapNullValue);
    }
    /**
     * ç”¨æˆ·æ·»åŠ å‘¨è¾¹æŸ¥è¯¢çš„å…³è”é€‰æ‹©åˆ—è¡¨
     * @param resMainInfo
     * @param pageBean
     * @return
     */
    @GetMapping("map/maininfoList")
    @ResponseBody
    @ApiOperation(value = "用户添加周边查询的关联选择列表", notes = "")
    public String getMainInfoList(Res_MainInfo resMainInfo, PageBean pageBean) {
        Page<Res_MainInfo> page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());
        resMainInfo.setResourceclass("KJ_YWTC");
        List<Res_MainInfo> list = resMainInfoService.selectTiTle(resMainInfo);
        int countNums = (int) ((Page) list).getTotal();
        PageBean<Res_MainInfo> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(list);
        Map<String, Object> result = new HashMap<>();
        result.put("totalCount", countNums);
        List<Map<String, Object>> maps = new LinkedList<>();
        for (Integer i = 0; i < list.size(); i++) {
            String title = list.get(i).getTitle();
            Map<String, Object> map = new HashMap<>();
            map.put("resourceid", list.get(i).getResourceid());
            map.put("title", title);
            map.put("resourceclass", list.get(i).getResourceclass());
            map.put("pubdate", list.get(i).getPubdate());
            map.put("datasources", list.get(i).getDatasources());
            maps.add(map);
        }
        result.put("topics", maps);
        return JSON.toJSONString(result, SerializerFeature.WriteMapNullValue);
    }
    /**
     * åˆ é™¤å½“前用户关联的周边查询资源信息
     * @param queryid
     * @return
     */
    @GetMapping("map/zhoubianGuanlianDel")
    @ResponseBody
    @ApiOperation(value = "删除当前用户关联的周边查询资源信息", notes = "")
    public String delGuanlian(Integer queryid) {
        Integer t = resQueryAroundService.deleteByPrimaryKey(queryid);
        return t.toString();
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/MapPortal/logActionController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.landtool.lanbase.modules.api.controller.MapPortal;
import java.net.URLDecoder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.landtool.lanbase.modules.log.service.LogActionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@RequestMapping("api/logAction")
@Controller
@Api(value = "", tags = {"日志操作"})
public class logActionController {
    @Autowired
    private LogActionService logActionService;
//    å·²ä½œåºŸ
    @ResponseBody
    @PostMapping("addLog")
    @ApiOperation(value = "添加操作日志", notes = "")
    public void logAction(String log,String userid) {
        log = URLDecoder.decode(log);
        String logMessage = log + "," + userid;
        logActionService.saveLogAction(logMessage);
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/ResApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,730 @@
package com.landtool.lanbase.modules.api.controller;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.landtool.lanbase.common.utils.HttpUtils;
import com.landtool.lanbase.modules.res.service.impl.ResApplyRecommendServiceImpl;
import com.landtool.lanbase.modules.sys.controller.AbstractController;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.common.utils.Result;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.entity.Res_Ext3D;
import com.landtool.lanbase.modules.res.entity.Res_ExtBaseMap;
import com.landtool.lanbase.modules.res.entity.Res_ExtBusinessLayer;
import com.landtool.lanbase.modules.res.entity.Res_ExtDataBase;
import com.landtool.lanbase.modules.res.entity.Res_ExtDataSource;
import com.landtool.lanbase.modules.res.entity.Res_ExtFileSource;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_ExtInterFaceService;
import com.landtool.lanbase.modules.res.entity.Res_ExtSpaceServerWithBLOBs;
import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResActionRecordService;
import com.landtool.lanbase.modules.res.service.ResBusinessRefService;
import com.landtool.lanbase.modules.res.service.ResCatalogService;
import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
import com.landtool.lanbase.modules.res.service.ResExt3DService;
import com.landtool.lanbase.modules.res.service.ResExtAppService;
import com.landtool.lanbase.modules.res.service.ResExtBaseMapService;
import com.landtool.lanbase.modules.res.service.ResExtBusinessLayerService;
import com.landtool.lanbase.modules.res.service.ResExtDataBaseService;
import com.landtool.lanbase.modules.res.service.ResExtDataSourceService;
import com.landtool.lanbase.modules.res.service.ResExtFileSourceService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResExtInterFaceService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResExtSpaceServerService;
import com.landtool.lanbase.modules.res.service.ResExtThemeMapService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.res.service.ResQueryAroundService;
import cn.hutool.core.date.DateTime;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import javax.security.auth.Subject;
@Controller
@RequestMapping("/api/")
@Api(value = "", tags = { "资源相关接口" })
public class ResApiController  extends AbstractController {
    @Autowired
    private ResCatalogService resCatalogService;
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResActionRecordService resActionRecordService;
    @Autowired
    private ResExtBaseMapService resExtBaseMapService;
    @Autowired
    private ResExtBusinessLayerService resExtBusinessLayerService;
    @Autowired
    private ResExtSpaceServerService resExtSpaceServerService;
    @Autowired
    private ResExtThemeMapService resExtThemeMapService;
    @Autowired
    private ResExtAppService resExtAppService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    @Autowired
    private ResExtFileSourceService resExtFileSourceService;
    @Autowired
    private ResExtDataBaseService resExtDataBaseService;
    @Autowired
    private ResExtInterFaceService resExtInterFaceService;
    @Autowired
    private ResExt3DService resExt3DService;
    @Autowired
    private ResDiyLayerInfoService resDiyLayerInfoService;
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private ResBusinessRefService resBusinessRefService;
    @Autowired
    private ResQueryAroundService resQueryAroundService;
    @Autowired
    private OrgUserService orgUserService;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    @Autowired
    private ResExtDataSourceService resExtDataSourceService;
    @Autowired
    private ResApplyRecommendServiceImpl resApplyRecommendService;
//    /**
//     * @param parentCatalogId
//     * @Description: èŽ·å–ç›®å½•æ ‘ä¿¡æ¯ {@link ResCatalogService}
//     * @Author: xiaoxuan.xie
//     * @Date: 17:30 2018/3/15
//     * @return: String
//     * @see Res_Catalog
//     */
//    @ResponseBody
//    @GetMapping(path = "catalog/getTreeByParentID/{parentCatalogId}")
//    @ApiOperation(value = "获取目录树信息", notes = "")
//    public String getTreeByParentID(
//            @ApiParam(name = "parentCatalogId", value = "目录父节点Id", required = true) @PathVariable(name = "parentCatalogId") int parentCatalogId) {
//        String resCatalogTreeJson = getTreeChildrenNodeList(parentCatalogId);// é€’归获取目录子节点列表
//        return "[" + resCatalogTreeJson + "]";
//    }
//
//    /**
//     * @param parentCatalogId
//     * @Description: é€’归获取目录子节点列表 {@link ResCatalogService}
//     * @Author: xiaoxuan.xie
//     * @Date: 17:30 2018/3/15
//     * @return: String
//     */
//    private String getTreeChildrenNodeList(int parentCatalogId) {
//        String resCatalogTreeJson = "";// å®šä¹‰ç›®å½•æ ‘Json字符串存储对象
//        List<Res_Catalog> res_catalogList = resCatalogService.selectResCatalogToParentid(parentCatalogId);// æ ¹æ®ç›®å½•父Id获取子目录列表
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// å®žä¾‹åŒ–时间格式转换器
//        // å¾ªçŽ¯æž„é€ ç›®å½•æ ‘ç»“æž„Json
//        for (Res_Catalog resCatalog : res_catalogList) {
//            if (resCatalogTreeJson != "")
//                resCatalogTreeJson += ",";
//            resCatalogTreeJson += "{'catlogid':" + resCatalog.getCatlogid();
//            resCatalogTreeJson += ",'catlogcode':'" + resCatalog.getCatlogcode() + "'";
//            resCatalogTreeJson += ",'parentid':" + resCatalog.getParentid();
//            resCatalogTreeJson += ",'title':'" + resCatalog.getTitle() + "'";
//            resCatalogTreeJson += ",'pingyinfiirst':'" + resCatalog.getPingyinfiirst() + "'";
//            resCatalogTreeJson += ",'description':'" + resCatalog.getDescription() + "'";
//            resCatalogTreeJson += ",'imgurl':'" + resCatalog.getImgurl() + "'";
//            resCatalogTreeJson += ",'orderid':" + resCatalog.getOrderid();
//            resCatalogTreeJson += ",'createuser':'" + resCatalog.getCreateuser() + "'";
//            resCatalogTreeJson += ",'createdate':'" + sdf.format(resCatalog.getCreatedate()) + "'";
//            resCatalogTreeJson += ",'remark':'" + resCatalog.getRemark() + "'";
//            resCatalogTreeJson += ",'childnodes':[";
//            String resCatalogChildNode = getTreeChildrenNodeList(resCatalog.getCatlogid());// é€’归获取目录子节点列表
//            if (resCatalogChildNode != "") {
//                resCatalogTreeJson += resCatalogChildNode;
//            }
//            resCatalogTreeJson += "]}";
//        }
//
//        return resCatalogTreeJson;
//    }
//
//    /**
//     * @param parentCatalogId
//     * @Description: èŽ·å–å­ç›®å½•ä¿¡æ¯åˆ—è¡¨{@link ResCatalogService}
//     * @Author: xiaoxuan.xie
//     * @Date: 17:30 2018/3/15
//     * @return: List<Res_Catalog>
//     * @see Res_Catalog
//     */
//    @ResponseBody
//    @GetMapping(path = "catalog/getListByParentID/{parentCatalogId}")
//    @ApiOperation(value = "获取子目录信息列表", notes = "")
//    public List<Res_Catalog> getListByParentID(
//            @ApiParam(name = "parentCatalogId", value = "目录父节点Id", required = true) @PathVariable(name = "parentCatalogId") int parentCatalogId) {
//        return resCatalogService.selectResCatalogToParentid(parentCatalogId);
//    }
//
//    /**
//     * @param catalogId
//     * @Description: æŸ¥è¯¢ç›®å½•信息{@link ResCatalogService}
//     * @Author: xiaoxuan.xie
//     * @Date: 09:30 2018/3/16
//     * @return: Res_Catalog
//     * @see Res_Catalog
//     */
//    @ResponseBody
//    @GetMapping(path = "catalog/getById/{catalogId}")
//    @ApiOperation(value = "查询目录信息", notes = "")
//    public Res_Catalog getById(
//            @ApiParam(name = "catalogId", value = "目录Id", required = true) @PathVariable(name = "catalogId") int catalogId) {
//        return resCatalogService.getResCatalogInfoById(catalogId);
//    }
//
//    /**
//     * @param serverId
//     * @Description: æŸ¥è¯¢æœåŠ¡åŸºæœ¬ä¿¡æ¯{@link ResMainInfoService}
//     * @Author: xiaoxuan.xie
//     * @Date: 09:30 2018/3/16
//     * @return: String
//     * @see Res_MainInfo
//     */
//    @ResponseBody
//    @GetMapping(path = "Server/getBaseInfoById/{serverId}")
//    @ApiOperation(value = "查询服务基本信息", notes = "")
//    public String getBaseInfoById(
//            @ApiParam(name = "serverId", value = "服务Id", required = true) @PathVariable(name = "serverId") int serverId) {
//        String BaseInfoJson = "";// å®šä¹‰è¿”回Json存储对象
//        Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(serverId);// èŽ·å–èµ„æºåŸºæœ¬ä¿¡æ¯
//        BaseInfoJson = JSONObject.toJSONStringWithDateFormat(resMainInfo, "YYYY-MM-dd HH:mm:ss");
//        BaseInfoJson = BaseInfoJson.substring(0, BaseInfoJson.length() - 1);
//        BaseInfoJson += ",resExtInfo:" + getResExtInfo(serverId, resMainInfo.getResourceclass()) + "}";
//
//        return BaseInfoJson;
//    }
//
//    /**
//     * @param resourceid
//     * @param userid
//     * @param actiontype
//     * @param appid
//     * @Description: æ—¥å¿—数据写入 {@link ResActionRecordService}
//     * @Author: xiaoxuan.xie
//     * @Date: 13:30 2018/3/28
//     * @return: Model
//     * @see Res_ActionRecord
//     */
//    @ResponseBody
//    @GetMapping(path = "/setActionRecordInfo")
//    @ApiOperation(value = "日志信息写入", notes = "")
//    public String setActionRecordInfo(Integer resourceid, Long userid, String actiontype, Integer appid) {
//        Timestamp audittime = new Timestamp(new Date().getTime());// èŽ·å–å½“å‰æ—¶é—´
//        int row = 0;// æ“ä½œæ•°æ®åº“记录数
//
//        boolean success = false;// æ“ä½œçŠ¶æ€
//        String msg = "";// æ“ä½œè¿”回消息
//        Res_ActionRecord resRecord = new Res_ActionRecord();
//        resRecord.setResourceid(resourceid);
//        resRecord.setUserid(userid);
//        resRecord.setActiontype(actiontype);
//        Res_ActionRecord res_actionRecord = resActionRecordService.getUserActionRecord(resRecord);
//        if (res_actionRecord == null) {
//            resRecord.setActiontype(actiontype);
//            resRecord.setActiontime(audittime);
//            resRecord.setAppid(appid);
//            row = resActionRecordService.insertSelective(resRecord);
//            success = true;
//            msg = "写入成功!";
//        } else {
//            res_actionRecord.setAppid(appid);
//            res_actionRecord.setActiontime(audittime);
//            row = resActionRecordService.updateByPrimaryKeySelective(res_actionRecord);
//            success = true;
//            msg = "更新收藏!";
//        }
//        return "{success:" + success + ", msg:'" + msg + "'}";
//    }
    /**
     * @Description: æŸ¥è¯¢æœåŠ¡åˆ—è¡¨{@link ResMainInfoService}  //change ykm
     * @Author: xiaoxuan.xie
     * @Date: 09:30 2018/3/16
     * @return: String
     * @see Res_MainInfo
     */
    @ResponseBody
    @GetMapping(path = "Server/getServerList")
    @ApiOperation(value = "查询服务列表", notes = "")
    public String getServerList(@ApiParam(name = "catalogid", value = "目录ID") @RequestParam(name = "catalogid", required = false) Integer catalogid,
                                @ApiParam(name = "resourceclass", value = "资源类型") @RequestParam(name = "resourceclass", required = false) String resourceclass,
                                @ApiParam(name = "resourceid", value = "资源ID") @RequestParam(name = "resourceid", required = false) Integer resourceid ) {
        String BaseInfoListJson = "";// å®šä¹‰è¿”回Json存储对象
            Map<String,Object> map = new HashMap<String,Object>();
            map.put("catalogid",catalogid);
            map.put("resourceclass",resourceclass);
            map.put("resourceid",resourceid);
//            List<Res_MainInfo> resMainInfoList = resMainInfoService.getAll();// èŽ·å–æ‰€æœ‰èµ„æºä¿¡æ¯
            List<Res_MainInfo> resMainInfoList = resMainInfoService.getListByMap(map);// èŽ·å–æ‰€æœ‰èµ„æºä¿¡æ¯
            for (Res_MainInfo resMainInfo : resMainInfoList) {
                String BaseInfoJson = "";
                BaseInfoJson = JSONObject.toJSONStringWithDateFormat(resMainInfo, "YYYY-MM-dd HH:mm:ss");
                JSONObject obj = JSONObject.parseObject(BaseInfoJson);
                Map m = obj;
                m.remove("remark");
                BaseInfoJson = m.toString();
                BaseInfoJson = BaseInfoJson.substring(0, BaseInfoJson.length() - 1);
                BaseInfoJson += ",resExtInfo:" + getResExtInfo(resMainInfo.getResourceid(), resMainInfo.getResourceclass())
                        + "}";
                if (!BaseInfoListJson.isEmpty())
                    BaseInfoListJson += ",";
                BaseInfoListJson += BaseInfoJson;
            }
            BaseInfoListJson = htmlDecodeByRegExp(BaseInfoListJson);
            BaseInfoListJson = URLDecoder.decode(BaseInfoListJson.replaceAll("%","%25"));
//        }
        return "[" + BaseInfoListJson + "]";
    }
    /**
     * @param Resourceid
     * @param leixing
     * @return String
     * @Description: èŽ·å–èµ„æºæ‹“å±•ä¿¡æ¯
     */
    private String getResExtInfo(int Resourceid, String leixing) {
        String ResExtInfo = "";
        String ResourceType = leixing;
        if (ResourceType == null)
            ResourceType = "";
        // æ ¹æ®èµ„源类型获取资源拓展信息
        //alert ykm 2019/02/26
        if(ResourceType.equals("KJ_SWMX") || ResourceType.equals("KJ_SWDX") || ResourceType.equals("KJ_SWYX")) ResourceType = "KJ_SW";
        switch (ResourceType) {
        case "KJ_JCDT":// åŸºç¡€åº•图
            Res_ExtBaseMap resExtBaseMap = resExtBaseMapService.selectByPrimaryKey(Resourceid);// èŽ·å–åŸºç¡€åº•å›¾ä¿¡æ¯
            ResExtInfo = JSONObject.toJSONString(resExtBaseMap);
            break;
        case "KJ_YWTC":// ä¸šåС图层
            Res_ExtBusinessLayer resExtBusinessLayer = resExtBusinessLayerService.selectByPrimaryKey(Resourceid);// èŽ·å–ä¸šåŠ¡å›¾å±‚ä¿¡æ¯
            if(resExtBusinessLayer != null && resExtBusinessLayer.getServiceHTML() != null) {
                resExtBusinessLayer.setServiceHTML(htmlDecodeByRegExp(resExtBusinessLayer.getServiceHTML()));
            }
            ResExtInfo = JSONObject.toJSONString(resExtBusinessLayer);
            break;
        case "KJ_KJFX":// ç©ºé—´åˆ†æž
            Res_ExtSpaceServerWithBLOBs resExtSpaceServerWithBLOBs = resExtSpaceServerService
                    .selectByPrimaryKey(Resourceid);// èŽ·å–ç©ºé—´æœåŠ¡ä¿¡æ¯
            if(resExtSpaceServerWithBLOBs != null && resExtSpaceServerWithBLOBs.getHelpurl() != null){
                resExtSpaceServerWithBLOBs.setHelpurl(htmlDecodeByRegExp(resExtSpaceServerWithBLOBs.getHelpurl()));
            }
            ResExtInfo += JSONObject.toJSONString(resExtSpaceServerWithBLOBs);
            break;
        case "KJ_ZTDT":// ä¸“题地图
            Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(Resourceid);// èŽ·å–ä¸“é¢˜åœ°å›¾ä¿¡æ¯
            ResExtInfo += JSONObject.toJSONString(resExtThemeMap);
            break;
        case "YWJC":// ä¸šåŠ¡é›†æˆ
            Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(Resourceid);// èŽ·å–ä¸šåŠ¡é›†æˆä¿¡æ¯
            ResExtInfo += JSONObject.toJSONString(resExtIntegrate);
            break;
        case "SJWJ":// æ–‡æ¡£æ•°æ®
            Res_ExtFileSource resExtFileSource = resExtFileSourceService.selectByPrimaryKey(Resourceid);// èŽ·å–æ–‡æ¡£æ•°æ®ä¿¡æ¯
            ResExtInfo += JSONObject.toJSONString(resExtFileSource);
            break;
        case "SJKB":// æ•°æ®åº“表
            Res_ExtDataBase res_extDataBase = resExtDataBaseService.selectByMainInfoId(Resourceid);
            if(res_extDataBase!=null && res_extDataBase.getDatasourceid() != null) {
                Res_ExtDataSource resExtDataSource = resExtDataSourceService.selectByPrimaryKey(res_extDataBase.getDatasourceid()); //add ykm
                JSONObject obj = JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(res_extDataBase,"YYYY-MM-dd HH:mm:ss"));
                obj.put("DataSourceInfo", JSONObject.parseObject(JSONObject.toJSONStringWithDateFormat(resExtDataSource,"YYYY-MM-dd HH:mm:ss")));
                ResExtInfo += obj.toJSONString();
            }
            else {
                ResExtInfo += JSONObject.toJSONString(res_extDataBase);
            }
            break;
        case "JKFW":// æŽ¥å£æœåŠ¡
            Res_ExtInterFaceService res_extInterFaceService = resExtInterFaceService.selectByPrimaryKey(Resourceid);
            if(res_extInterFaceService != null && res_extInterFaceService.getHelpurl() != null) {
                res_extInterFaceService.setHelpurl(htmlDecodeByRegExp(res_extInterFaceService.getHelpurl()));
            }
            ResExtInfo += JSONObject.toJSONString(res_extInterFaceService);
            break;
//        case "KJ_SWMX":// ä¸‰ç»´æ¨¡åž‹
        case "KJ_SW":// ä¸‰ç»´ç±»åž‹ï¼Œä¸‰ç»´æ¨¡åž‹ï¼Œä¸‰ç»´åœ°å½¢ï¼Œä¸‰ç»´å½±åƒ
            Res_Ext3D res_ext3D = resExt3DService.selectByPrimaryKey(Resourceid);
            ResExtInfo += JSONObject.toJSONString(res_ext3D);
            break;
        default:
            ResExtInfo += "{}";
            break;
        }
        return ResExtInfo;
    }
    public String htmlDecodeByRegExp(String str){
        String s = "";
        if(str.equals("")) return "";
        s = str.replace("&amp;","&");
        s = s.replace("&lt;","<");
        s = s.replace("&gt;",">");
        s = s.replace("&nbsp;"," ");
        s = s.replace("&#39;","\'");
        s = s.replace("&quot;","\"");
        s = s.replace("\\","");
        return s;
    }
//    /**
//     * @Description: èŽ·å–èµ„æºæœåŠ¡åœ°å€ä¿¡æ¯
//     * @Author: xiaoxuan.xie
//     * @Date: 09:30 2018/3/31
//     * @return: String
//     * @see Res_MainInfo
//     */
//    @ResponseBody
//    @GetMapping(path = "Server/getLayerObject/{resourceid}/{userid}")
//    @ApiOperation(value = "获取资源服务地址信息", notes = "")
//    public String GetLayerObject(
//            @ApiParam(name = "resourceid", value = "资源Id", required = true) @PathVariable(name = "resourceid") int resourceid,
//            @ApiParam(name = "userid", value = "用户Id", required = true) @PathVariable(name = "userid") Integer userid,
//            HttpServletRequest request) {
//        String Json = "";
//        if (resourceid > 0) {
//            Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid);// èŽ·å–èµ„æºä¸»è¡¨ä¿¡æ¯
//            if (resMainInfo != null) {
//                String resourceType = resMainInfo.getResourceclass();// èŽ·å–èµ„æºç±»åž‹
//                if (resourceType == null)
//                    resourceType = "";
//                LayerObject layer = null;
//                switch (resourceType) {
//                case "KJ_YWTC":
//                case "KJ_JCDT":
//                    String username = request.getRemoteUser();
//                    Boolean GuanLian = false;//业务关联
//                    Boolean ZhouBian = false;//周边查询
//                    if(resourceType.equals("KJ_YWTC")) {
//                        Res_BusinessRef res_businessRef = new Res_BusinessRef();
//                        res_businessRef.setResourceid(resourceid);
//                        List<Res_BusinessRef> resBusinessRefList = resBusinessRefService.selectResBusinesssRef(res_businessRef);//获取业务图层关联分析信息
//                        if(resBusinessRefList.size() > 0) GuanLian = true;
//                        List<Res_QueryAround> resQueryAroundList = resQueryAroundService.getZhouBianList(resourceid);//获取资源周边查询列表
//                        if(resQueryAroundList.size() > 0) ZhouBian = true;
//                    }
//                    // èŽ·å–ç”¨æˆ·å®šä¹‰JSON
//                    Res_DiyLayerInfo resDiyLayerInfo = resDiyLayerInfoService.queryUserObject(userid, resourceid);
//                    if (resDiyLayerInfo != null) {
//                        Json = "{ diyId: " + resDiyLayerInfo.getDiyid() + ", resourceId: " + resourceid + ", title: '"
//                                + resDiyLayerInfo.getTitle() + "', content: " + resDiyLayerInfo.getContent() + ", GuanLian: " + GuanLian + ", ZhouBian: " + ZhouBian + "}";
//                    } else {
//                        // èŽ·å–ç®¡ç†å‘˜å®šä¹‰JSON
//                        resDiyLayerInfo = resDiyLayerInfoService.queryUserObject(0, resourceid);
//                        if (resDiyLayerInfo != null) {
//                            Json = "{ diyId: " + resDiyLayerInfo.getDiyid() + ", resourceId: " + resourceid
//                                    + ", title: '" + resDiyLayerInfo.getTitle() + "', content: "
//                                    + resDiyLayerInfo.getContent() + ", GuanLian: " + GuanLian + ", ZhouBian: " + ZhouBian + " }";
//                        } else {
//                            // èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
//                            Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.queryFirstOrderByResId(resourceid);
//                            if (resExtMapUrl != null) {
//                                // èŽ·å–token
//                                //String token = "";// token
//                                //String urlEncode = "";
//                                //if (resMainInfo.getEspproxy() == 1) {
//                                //    try {
//                                //        urlEncode = java.net.URLEncoder.encode(resExtMapUrl.getServerurl(), "UTF-8");
//                                //        String getTokenUrl = sysConfig.getTokenWebRoot() + "?loginName=" + username
//                                //                + "&resourceId=" + resourceid + "&resourceUrl=" + urlEncode
//                                //                + "&expireSeconds=360000&clientIp=" + request.getRemoteAddr();// token获取地址
//                                //        String TokenResponse = HttpOperateUtils.httpGet(getTokenUrl);// è¯·æ±‚token
//                                //        if (!TokenResponse.isEmpty()) {
//                                //            JSONObject object = JSONObject.parseObject(TokenResponse);// è½¬æ¢è¿”回JSON字符串
//                                //            token = object.getString("token");// èŽ·å–è¿”å›žtoken
//                                //        }
//                                //        Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                //                + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                                //                + resExtMapUrl.getServerurl() + "?token=" + token + "' }";
//                                //    } catch (java.io.IOException e) {
//                                //        Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                //                + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                                //                + resExtMapUrl.getServerurl() + "?token=" + token + "' }";
//                                //    }
//                                //} else {
//                                //    Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                //            + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                                //            + resExtMapUrl.getServerurl() + "' }";
//                                //}
//                                OrgUser orgUser = orgUserService.queryObject(Long.parseLong(userid.toString()));
//                                Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                        + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                                        + EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getLoginname(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig)
//                                        + "', GuanLian: " + GuanLian + ", ZhouBian: " + ZhouBian + " }";
//                            } else {
//                                Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                        + "', typeandurl: '', serverUrl: '' , GuanLian: " + GuanLian + ", ZhouBian: " + ZhouBian + "}";
//                            }
//                        }
//                    }
//                    break;
//                case "KJ_ZTDT":
//                    Res_ExtThemeMap resExtThemeMap = resExtThemeMapService.selectByPrimaryKey(resourceid);// èŽ·å–ä¸“é¢˜åœ°å›¾æ‹“å±•ä¿¡æ¯
//                    if (resExtThemeMap != null && resExtThemeMap.getMapjson() != null
//                            && !resExtThemeMap.getMapjson().isEmpty()) {
//                        Json = "{resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle() + "', mapjson: "
//                                + resExtThemeMap.getMapjson() + "}";
//                    } else {
//                        Json = "{resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                                + "', mapjson: null}";
//                    }
//                    break;
//                }
//            }
//        }
//
//        return Json;
//    }
//
//    /**
//     * @Description: èŽ·å–èµ„æºæœåŠ¡åè®®ä¸Žåœ°å€ä¿¡æ¯
//     * @Author: xiaoxuan.xie
//     * @Date: 09:30 2018/4/2
//     * @return: String
//     * @see Res_MainInfo
//     */
//    @ResponseBody
//    @GetMapping(path = "Server/getMapUrlObject/{userid}/{resourceid}/{type}/{id}")
//    @ApiOperation(value = "获取资源服务协议与地址信息", notes = "")
//    public String GetMapUrlObject(
//            @ApiParam(name = "userid", value = "用户ID", required = true) @PathVariable(name = "userid") Long userid,
//            @ApiParam(name = "resourceid", value = "资源Id", required = true) @PathVariable(name = "resourceid") Integer resourceid,
//            @ApiParam(name = "type", value = "type", required = true) @PathVariable(name = "type") String type,
//            @ApiParam(name = "id", value = "id", required = true) @PathVariable(name = "id") Integer id,
//            HttpServletRequest request) {
//        String Json = "";
//        if (type.equals("Url")) {
//            Res_ExtMapUrl resExtMapUrl = resExtMapUrlService.selectByPrimaryKey(id);// èŽ·å–èµ„æºæ”¯æŒåè®®ä¸Žåœ°å€
//            Res_MainInfo resMainInfo = resMainInfoService.selectByPrimaryKey(resourceid);// èŽ·å–èµ„æºä¸»è¡¨ä¿¡æ¯
//            if (resExtMapUrl != null) {
//                // èŽ·å–token
//                //String token = "";// token
//                //String urlEncode = "";
//                //if (resMainInfo.getEspproxy() == 1) {
//                //    try {
//                //        urlEncode = java.net.URLEncoder.encode(resExtMapUrl.getServerurl(), "UTF-8");
//                //        String getTokenUrl = sysConfig.getTokenWebRoot() + "?resourceId=" + resourceid
//                //                + "&resourceUrl=" + urlEncode + "&expireSeconds=360000&clientIp="
//                //                + request.getRemoteAddr();// token获取地址
//                //        String TokenResponse = HttpOperateUtils.httpGet(getTokenUrl);// è¯·æ±‚token
//                //        JSONObject object = JSONObject.parseObject(TokenResponse);// è½¬æ¢è¿”回JSON字符串
//                //        token = object.getString("token");// èŽ·å–è¿”å›žtoken
//                //        Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                //                + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                //                + resExtMapUrl.getServerurl() + "?token=" + token + "' }";
//                //    } catch (UnsupportedEncodingException e) {
//                //        Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                //                + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                //                + resExtMapUrl.getServerurl() + "?token=" + token + "' }";
//                //    } catch (Exception e) {
//                //        Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                //                + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                //                + resExtMapUrl.getServerurl() + "?token=" + token + "' }";
//                //    }
//                //} else {
//                //    Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle() + "', typeandurl: '"
//                //            + resExtMapUrl.getTypeandurl() + "', serverUrl: '" + resExtMapUrl.getServerurl() + "' }";
//                //}
//                OrgUser orgUser = orgUserService.queryObject(userid);
//                Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                        + "', typeandurl: '" + resExtMapUrl.getTypeandurl() + "', serverUrl: '"
//                        + EsbToken.getEsbUrl(resExtMapUrl.getServerurl(), orgUser.getLoginname(), request.getRemoteAddr(), resourceid, resMainInfo.getEspproxy(), sysConfig) + "' }";
//            } else {
//                Json = "{ resourceId: " + resourceid + ", title: '" + resMainInfo.getTitle()
//                        + "', typeandurl: '', serverUrl: '' }";
//            }
//        } else {
//            Res_DiyLayerInfo resDiyLayerInfo = resDiyLayerInfoService.getById(id);// èŽ·å–è‡ªå®šä¹‰é£Žæ ¼ä¿¡æ¯
//            if (resDiyLayerInfo != null) {
//                Json = "{ diyId: " + resDiyLayerInfo.getDiyid() + ", resourceId: " + resourceid + ", title: '"
//                        + resDiyLayerInfo.getTitle() + "', content: " + resDiyLayerInfo.getContent() + " }";
//            } else {
//                Json = "{ diyId: " + id + ", resourceId: " + resourceid + ", title: '', content: null }";
//            }
//        }
//
//        return Json;
//    }
//
//    /**
//     * @Description: èŽ·å–ä¸šåŠ¡é›†æˆ-页面集成-Iframe区块目录树
//     */
//    @ResponseBody
//    @GetMapping(path = "Server/getYWJCTreeData/{id}")
//    @ApiOperation(value = "获取业务集成-页面集成-Iframe区块目录树", notes = "")
//    public String getYWJCTreeData(
//            @ApiParam(name = "id", value = "id", required = true) @PathVariable(name = "id") String id,
//            HttpServletRequest request) {
//        StringBuilder resCatalogJson = new StringBuilder();
//        String leixiId = "YWJC";
//        Res_MainInfo resMainInfoTWO = new Res_MainInfo();
//        resMainInfoTWO.setResourceclass(leixiId);
//        resMainInfoTWO.setCParentid(Integer.parseInt(id));
//        resMainInfoTWO.setCatlogid(Integer.parseInt(id));
//        List<Res_Catalog> resCatalogList = resCatalogService.getYWJCMuLuTree(Integer.parseInt(id));// èŽ·å–å­ç›®å½•åˆ—è¡¨
//        // å¾ªçŽ¯æž„é€ å­ç›®å½•èŠ‚ç‚¹
//        for (Res_Catalog resCatalog : resCatalogList) {
//            if (!"".equals(resCatalogJson.toString())) {
//                resCatalogJson.append(',');
//            }
//            resCatalogJson.append(
//                    "{id: " + resCatalog.getCatlogid() + ",name:'" + resCatalog.getTitle() + "', isParent: true}");
//        }
//        // èŽ·å–èµ„æºç±»åž‹åˆ—è¡¨
//        List<Res_MainInfo> resMainInfo = resMainInfoService.getYWJCTreeData(resMainInfoTWO); // èŽ·å–ç›®å½•ä¸‹ä¸šåŠ¡é›†æˆ--页面集成--Iframe区块资源列表
//        // å¾ªçŽ¯æž„é€ èµ„æºèŠ‚ç‚¹
//        for (Res_MainInfo resMainInfo1 : resMainInfo) {
//            Res_ExtIntegrate res_extIntegrate = resExtIntegrateService.selectByPrimaryKey(resMainInfo1.getResourceid());// èŽ·å–ä¸šåŠ¡é›†æˆæ‹“å±•ä¿¡æ¯
//            if (!"".equals(resCatalogJson.toString())) {
//                resCatalogJson.append(',');
//            }
//
//            String title = resMainInfo1.getTitle();
//            if (resMainInfo1.getTitle().length() > 16) {
//                title = resMainInfo1.getTitle().substring(0, 16) + "..";
//            }
//
//            String serverUrl = res_extIntegrate.getServerurl();
//            if (serverUrl == null)
//                serverUrl = "";
//
//            resCatalogJson.append("{id: 'ZiYuan_" + resMainInfo1.getResourceid() + "',name:'" + title + "', title: '"
//                    + resMainInfo1.getTitle() + "',isParent:false, ServerUrl: '" + serverUrl + "'}");
//        }
//        return "[" + resCatalogJson.toString() + "]";
//    }
    /**
     * @Description: æŸ¥è¯¢èµ„源是否存在
     * @Author: dengshuhua
     * @return: Boolean
     */
    @ResponseBody
    @GetMapping(path = "/cheackZYIsExist")
    @ApiOperation(value = "查询服务列表", notes = "")
    public Boolean getServerList(@ApiParam(name = "resourceid", value = "资源ID") @RequestParam(name = "resourceid", required = true) Integer resourceid) {
        Boolean result = false;
        Res_MainInfo mainInfo =  resMainInfoService.selectByPrimaryKey(resourceid);
        if(mainInfo != null) result = true;
        return result;
    }
    @ResponseBody
    @GetMapping(path = "/GetStationDataSearch")
    @ApiOperation(value = "海洋站监测数据数据信息检索", notes = "")
    public Result GetStationDataSearch(Integer stationCode,String startDate,String endDate,String factorCode) {
        String data = "";
        String path = sysConfig.getUploadPath() + "cache\\"+"Search.txt";
        try {
            String url = "http://192.168.4.124:8100/stations/data/search?stationCode=" + stationCode + "&startDate=" + startDate + "&endDate=" + endDate + "&factorCode=" + factorCode;
            data = HttpOperateUtils.httpGet(url);
            File file = new File(path);
            file.createNewFile();
            FileWriter writer = new FileWriter(file);
            BufferedWriter out = new BufferedWriter(writer);
            out.write(data);
            out.flush();
        } catch (Exception ex) {
        }
        return Result.ok().put("path",sysConfig.getUploadRootPath()+"cache/"+"Search.txt");
    }
    @ResponseBody
    @GetMapping(path = "/GetCXDataByTaiZhanNameAndTime")
    @ApiOperation(value = "获取台站预报数据", notes = "")
    public Result GetCXDataByTaiZhanNameAndTime(String name,String timeStr) {
        String ycdata = "";
        String parpath = sysConfig.getUploadPath() + "cache\\yc";
        String date = DateTime.now().toString().substring(0,10);
        String todayData = parpath +"\\"+date+".txt";
        try {
            File parentDir = new File(parpath);
            if(parentDir.isDirectory()){
                File[] files = parentDir.listFiles();
                //是否存在当天的预测数据
                boolean isExits = false;
                for(File f : files){
                    String n = f.getName();
                    if(f.getName().equals(date+".txt")){
                        isExits = true;
                        break;
                    }
                }
                //不存在则从接口获取数据写入当天缓存
                if(!isExits){
                    //删除文件夹下的文件
                    for(File f : files){
                        f.delete();
                    }
                    String url = "http://192.168.20.106/Ocean/WebServices/ElecTable/X_CWYG_Server.asmx/GetCXDataByTaiZhanNameAndTime";
                    SearchZscg searchZscg = new SearchZscg();
                    searchZscg.setName(URLDecoder.decode(name));
                    searchZscg.setTimeStr(timeStr);
                    ycdata = HttpOperateUtils.httpPost(url,searchZscg);
                    File newfile = new File(todayData);
                    newfile.createNewFile();
                    FileWriter writer = new FileWriter(newfile);
                    BufferedWriter out = new BufferedWriter(writer);
                    out.write(ycdata);
                    out.flush();
                }
            }
        } catch (Exception ex) {
        }
        return Result.ok().put("path",sysConfig.getUploadRootPath()+"cache/yc/"+date+".txt");
    }
    public class SearchZscg{
         private String name;
         private String timeStr;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getTimeStr() {
            return timeStr;
        }
        public void setTimeStr(String timeStr) {
            this.timeStr = timeStr;
        }
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/ResDiyLayerInfoApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
//package com.landtool.lanbase.modules.api.controller;
//
//import com.landtool.lanbase.modules.res.entity.Res_DiyLayerInfo;
//import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
//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.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import java.sql.Timestamp;
//import java.util.List;
//import java.util.Date;
//
//@Controller
//@RequestMapping("/api/res/diylayerinfo")
//@Api(value = "", tags = {"自定义图层信息"})
//public class ResDiyLayerInfoApiController {
//    @Autowired
//    private ResDiyLayerInfoService resDiyLayerInfoService;
//
//    /**
//     * æ–°å¢ž/修改自定义图层信息
//     */
//    @PostMapping(path = "/addDiyLayerInfo")
//    @ApiOperation(value = "自定义图层信息 æ–°å¢ž/修改", notes = "")
//    @ResponseBody
//    public String addDiyLayerInfo(
//            @ApiParam(name = "userid", value = "用户Id", required = true) @RequestParam(name = "userid") int userid,
//            @ApiParam(name = "resourceid", value = "信息资源Id", required = true) @RequestParam(name = "resourceid") int resourceid,
//            @ApiParam(name = "title", value = "标题", required = true) @RequestParam(name = "title") String title,
//            @ApiParam(name = "typename", value = "信息类型", required = true) @RequestParam(name = "typename") String typename,
//            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content) {
//        // æ˜¯å¦å­˜åœ¨è®°å½•,存在则修改
//        Res_DiyLayerInfo info = resDiyLayerInfoService.queryObjectByUseridAndResid(userid, resourceid, title);
//        if (info == null) {// æ–°å¢ž
//            info = new Res_DiyLayerInfo();
//            info.setResourceid(resourceid);
//            info.setContent(content);
//            info.setTitle(title);
//            info.setTypename(typename);
//            info.setDiyuserid(userid);
//            Timestamp audittime = new Timestamp(new Date().getTime());
//            info.setDiytime(audittime);
//            resDiyLayerInfoService.insert(info);
//            return "添加成功";
//        } else {// ä¿®æ”¹
//            info.setTitle(title);
//            info.setTypename(typename);
//            info.setContent(content);
//            Timestamp audittime = new Timestamp(new Date().getTime());
//            info.setDiytime(audittime);
//            resDiyLayerInfoService.updateByPrimaryKeySelective(info);
//            return "修改成功";
//        }
//    }
//
//    /**
//     * ç¼–辑自定义图层信息风格内容
//     */
//    @PostMapping(path = "/updateDiyLayerInfo")
//    @ApiOperation(value = "编辑自定义图层信息风格内容", notes = "")
//    @ResponseBody
//    public String updateDiyLayerInfo(
//            @ApiParam(name = "diyid", value = "Id", required = true) @RequestParam(name = "diyid") int diyid,
//            @ApiParam(name = "title", value = "标题") String title,
//            @ApiParam(name = "typename", value = "信息类型") String typename,
//            @ApiParam(name = "content", value = "内容", required = true) @RequestParam(name = "content") String content) {
//        Res_DiyLayerInfo info = new Res_DiyLayerInfo();
//        if (content.length() != 0) {
//            info.setContent(content);
//        }
//        if (title != null && title.length() != 0) {
//            info.setTitle(title);
//        }
//        if (typename != null && typename.length() != 0) {
//            info.setTypename(typename);
//        }
//        info.setDiyid(diyid);
//        info.setDiyuserid(1); // å…ˆå†™æ­»id,后续改成读取当前登录人id
//        resDiyLayerInfoService.updateContentApi(info);
//        return "编辑成功";
//    }
//
//    /**
//     * æŸ¥è¯¢è‡ªå®šä¹‰å›¾å±‚信息列表
//     */
//    @ResponseBody
//    @GetMapping("/queryDiyLayerInfo")
//    @ApiOperation(value = "自定义图层信息列表", notes = "")
//    public List<Res_DiyLayerInfo> queryListByUserId(@ApiParam(name = "resourceid", value = "信息资源Id") Integer resourceid,
//            @ApiParam(name = "title", value = "标题") String title,
//            @ApiParam(name = "typename", value = "信息类型") String typename,
//            @ApiParam(name = "diyid", value = "diyid") Integer diyid) {
//        Res_DiyLayerInfo record = new Res_DiyLayerInfo();
//        record.setResourceid(resourceid);
//        record.setTitle(title);
//        record.setTypename(typename);
//        record.setDiyid(diyid);
//        ;
//        return resDiyLayerInfoService.queryApiList(record);
//    }
//
//    /**
//     * åˆ é™¤è‡ªå®šä¹‰å›¾å±‚信息
//     */
//    @PostMapping(path = "/deleteDiyLayerInfo")
//    @ApiOperation(value = "删除自定义图层信息", notes = "")
//    @ResponseBody
//    public String deleteDiyLayerInfo(
//            @ApiParam(name = "diyid", value = "diyid", required = true) @RequestParam(name = "diyid") Long diyid) {
//        resDiyLayerInfoService.deleteDiyLayerInfo(diyid);
//        return "删除成功";
//    }
//}
src/main/java/com/landtool/lanbase/modules/api/controller/ResExtBaseMapApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
/*package com.landtool.lanbase.modules.api.controller;
import com.landtool.lanbase.common.map.EsbToken;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.org.entity.OrgUser;
import com.landtool.lanbase.modules.org.service.OrgUserService;
import com.landtool.lanbase.modules.res.service.ResExtBaseMapService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ZhuanTiZhiTuService;
import com.landtool.lanbase.modules.sys.entity.*;
import com.landtool.lanbase.modules.res.entity.Res_ExtBaseMap;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.UserDefined.UserDef_BaseMap;
import com.landtool.lanbase.modules.sys.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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 javax.servlet.http.HttpServletRequest;
import java.util.List;
@Controller
@RequestMapping("/api/res/extbasemap")
@Api(value = "", tags = { "系统资源扩展(基础地图)" })
public class ResExtBaseMapApiController {
    *//**
     * æŸ¥è¯¢åŸºç¡€åº•图列表
     *//*
    @ResponseBody
    @GetMapping("/queryExtBaseMapList")
    @ApiOperation(value = "基础地图列表", notes = "")
    public List<Res_ExtBaseMap> queryExtBaseMapList(
            @ApiParam(name = "resourceid", value = "信息资源Id") Integer resourceid,
            @ApiParam(name = "publishsoft", value = "发布平台") String publishsoft,
            @ApiParam(name = "basemaptype", value = "底图类型") String basemaptype,
            @ApiParam(name = "imageaccuracy", value = "影像精度") String imageaccuracy,
            @ApiParam(name = "displaylev", value = "显示比例") String displaylev,
            @ApiParam(name = "refmarkinfid", value = "关联标注图资源ID") Integer refmarkinfid,
            @ApiParam(name = "extproperty", value = "扩展属性") String extproperty) {
        Res_ExtBaseMap record = new Res_ExtBaseMap();
        record.setResourceid(resourceid);
        record.setPublishsoft(publishsoft);
        record.setBasemaptype(basemaptype);
        record.setImageaccuracy(imageaccuracy);
        record.setDisplaylev(displaylev);
        record.setRefmarkinfid(refmarkinfid);
        record.setExtproperty(extproperty);
        List<Res_ExtBaseMap> mapList = resExtBaseMapService.queryApiList(record);
        for (Res_ExtBaseMap item : mapList) {
            List<Res_ExtMapUrl> urlList = resExtMapUrlService.selectByCondition(item.getResourceid());
            item.setUrllist(urlList);
        }
        return mapList;
    }
}*/
src/main/java/com/landtool/lanbase/modules/api/controller/ResExtThemeMapApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
//package com.landtool.lanbase.modules.api.controller;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.landtool.lanbase.common.utils.JpinyinUtils;
//import com.landtool.lanbase.config.SysTemPropertyConfig;
//import com.landtool.lanbase.modules.res.entity.Res_ExtThemeMap;
//import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
//import com.landtool.lanbase.modules.res.service.ResExtThemeMapService;
//import com.landtool.lanbase.modules.res.service.ResMainInfoService;
//import com.landtool.lanbase.modules.sys.entity.*;
//import com.landtool.lanbase.modules.sys.service.*;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import io.swagger.annotations.ApiParam;
//
//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.PathVariable;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import java.util.List;
//import java.util.Date;
//import java.math.BigDecimal;
//import java.sql.Timestamp;
//
//@Controller
//@RequestMapping("/api/res/extthememap")
//@Api(value = "", tags = { "系统资源扩展(专题地图)" })
//public class ResExtThemeMapApiController {
//
//
//}
src/main/java/com/landtool/lanbase/modules/api/controller/ResMapApiController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,370 @@
package com.landtool.lanbase.modules.api.controller;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.res.entity.Res_Catalog;
import com.landtool.lanbase.modules.res.entity.Res_DiyLayerInfo;
import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate;
import com.landtool.lanbase.modules.res.entity.Res_ExtMapUrl;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
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.ResCatalogService;
import com.landtool.lanbase.modules.res.service.ResDiyLayerInfoService;
import com.landtool.lanbase.modules.res.service.ResExtIntegrateService;
import com.landtool.lanbase.modules.res.service.ResExtMapUrlService;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
import com.landtool.lanbase.modules.res.service.ResThemeModuleService;
import com.landtool.lanbase.modules.res.service.ResThemeRelationService;
import com.landtool.lanbase.modules.res.service.ResThemeService;
import com.landtool.lanbase.modules.sys.service.SysFieldvalueService;
import io.swagger.annotations.Api;
@Controller
@RequestMapping("/api/res")
@Api(value = "", tags = { "地图相关接口" })
public class ResMapApiController {
    @Autowired
    private ResMainInfoService resMainInfoService;
    @Autowired
    private ResCatalogService resCatalogService;
    @Autowired
    private ResExtMapUrlService resExtMapUrlService;
    @Autowired
    private ResDiyLayerInfoService resDiyLayerInfoService;
    @Autowired
    private ResExtIntegrateService resExtIntegrateService;
    @Autowired
    private ResThemeService resThemeService;
    @Autowired
    private ResThemeModuleService resThemeModuleService;
    @Autowired
    private ResThemeRelationService resThemeRelationService;
    @Autowired
    private SysFieldvalueService FieldUtils;
    @Autowired
    private SysTemPropertyConfig sysConfig;
    // æŸ¥è¯¢ä¸“题地图对应的title
    @ResponseBody
    @GetMapping("selectZTDTList")
    public List<Res_MainInfo> selectZTDTList(Integer userid, PageBean pageBean) {
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());
        Map<String, Object> map = new HashMap<>();
        map.put("leixiId", "KJ_ZTDT");
        map.put("userid", userid);
        List<Res_MainInfo> res_mainInfos = resMainInfoService.selectZTDTList(map);
        int countNums = (int) ((Page) res_mainInfos).getTotal();
        PageBean<Res_MainInfo> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(res_mainInfos);
        // æŸ¥è¯¢åŸºç¡€åº•图
        return res_mainInfos;
    }
    // æŸ¥è¯¢èµ„源目录对应的资源
    @ResponseBody
    @GetMapping("selectTitlefromZiYuan")
    public String selectTitlefromZiYuan(String parentid, Res_MainInfo info) {
        StringBuilder resCatalogJson = new StringBuilder();
        if (parentid.indexOf("ZiYuan_") == -1) {
            String leixiId = "KJ_YWTC";
            Res_MainInfo resMainInfoTWO = new Res_MainInfo();
            resMainInfoTWO.setResourceclass(leixiId);
            resMainInfoTWO.setCParentid(Integer.parseInt(parentid));
            resMainInfoTWO.setCatlogid(Integer.parseInt(parentid));
            resMainInfoTWO.setTitle(info.getTitle());
            resMainInfoTWO.setCreateuserid(info.getCreateuserid());
            resMainInfoTWO.setPubdateBegin(info.getPubdateBegin());
            resMainInfoTWO.setPubdatefinish(info.getPubdatefinish());
            resMainInfoTWO.setIscollect(info.getIscollect());
            List<Res_Catalog> resCatalogList = resCatalogService.selectFilterResCatalogToParentid(resMainInfoTWO);// èŽ·å–å­ç›®å½•åˆ—è¡¨
            // å¾ªçŽ¯æž„é€ å­ç›®å½•èŠ‚ç‚¹
            for (Res_Catalog resCatalog : resCatalogList) {
                if (!"".equals(resCatalogJson.toString())) {
                    resCatalogJson.append(',');
                }
                resCatalogJson.append(
                        "{id: " + resCatalog.getCatlogid() + ",name:'" + resCatalog.getTitle() + "', isParent: true}");
            }
            // èŽ·å–èµ„æºç±»åž‹åˆ—è¡¨
            List<Res_MainInfo> resMainInfo = resMainInfoService.selectTwtcForZiYuan(resMainInfoTWO); // èŽ·å–ç›®å½•ä¸‹ä¸šåŠ¡å›¾å±‚èµ„æºåˆ—è¡¨
            // å¾ªçŽ¯æž„é€ èµ„æºèŠ‚ç‚¹
            for (Res_MainInfo resMainInfo1 : resMainInfo) {
                if (!"".equals(resCatalogJson.toString())) {
                    resCatalogJson.append(',');
                }
                List<Res_ExtMapUrl> urlList = resExtMapUrlService.selectByCondition(resMainInfo1.getResourceid());
                boolean isMapUrl = urlList.size() == 0 ? false : true;
                String title = resMainInfo1.getTitle();
                if (resMainInfo1.getTitle().length() > 16) {
                    title = resMainInfo1.getTitle().substring(0, 16) + "..";
                }
                resCatalogJson.append("{icon:'./images/classicons/" + resMainInfo1.getResourceclass()
                        + ".png',id: 'ZiYuan_" + resMainInfo1.getResourceid() + "',name:'" + title + "', title: '"
                        + resMainInfo1.getTitle() + "',isParent:false, hidtxt: '', isMapUrl: " + isMapUrl + "}");
            }
        } else {
            String idstr = parentid.substring(parentid.indexOf("_") + 1, parentid.length());
            List<Res_ExtMapUrl> urlList = resExtMapUrlService.selectByCondition(Integer.parseInt(idstr));
            if (urlList.size() != 0) {
                LinkedHashMap<String, String> TypeAndURLList = FieldUtils.getFieldListByKey("TypeAndURL");
                for (Res_ExtMapUrl urlitem : urlList) {
                    if (!"".equals(resCatalogJson.toString())) {
                        resCatalogJson.append(',');
                    }
                    String name = TypeAndURLList.get(urlitem.getTypeandurl());
                    resCatalogJson.append("{id: 'Url_" + urlitem.getUrlid() + "', resourceId: " + idstr + ",name:'"
                            + name + "', hidtxt: ''}");
                }
            }
            Res_DiyLayerInfo resDiyLayerInfo = new Res_DiyLayerInfo();
            resDiyLayerInfo.setResourceid(Integer.parseInt(idstr));
            resDiyLayerInfo.setIsshare(1);
            resDiyLayerInfo.setResourceid(Integer.parseInt(idstr));
            List<Res_DiyLayerInfo> resDiyLayerInfoList = resDiyLayerInfoService.queryApiList(resDiyLayerInfo);// èŽ·å–åˆ¶å›¾ä¿¡æ¯åˆ—è¡¨
            if (resDiyLayerInfoList.size() > 0) {
                for (Res_DiyLayerInfo item : resDiyLayerInfoList) {
                    if (!"".equals(resCatalogJson.toString())) {
                        resCatalogJson.append(',');
                    }
                    resCatalogJson.append("{id: 'Diy_" + item.getDiyid() + "', resourceId: " + idstr + ",name:'"
                            + item.getTitle() + "', hidtxt: " + item.getContent() + "}");
                }
            }
        }
        return "[" + resCatalogJson.toString() + "]";
    }
    /**
     * èŽ·å–ä¸šåŠ¡é›†æˆå®šåˆ¶ç›®å½•æ ‘
     * @param id  ç›®å½•ID
     * @return
     */
    @ResponseBody
    @GetMapping("getYWJCCustomTreeData")
    public String getYWJCCustomTreeData(String id) {
        StringBuilder resCatalogJson = new StringBuilder();
        Res_MainInfo resMainInfoTWO = new Res_MainInfo();
        resMainInfoTWO.setResourceclass("YWJC");
        resMainInfoTWO.setCParentid(Integer.parseInt(id));
        resMainInfoTWO.setCatlogid(Integer.parseInt(id));
        List<Res_Catalog> resCatalogList = resCatalogService.getYWJCMuLuTree(Integer.parseInt(id));// èŽ·å–å­ç›®å½•åˆ—è¡¨
        // å¾ªçŽ¯æž„é€ å­ç›®å½•èŠ‚ç‚¹
        for (Res_Catalog resCatalog : resCatalogList) {
            if (!"".equals(resCatalogJson.toString())) {
                resCatalogJson.append(',');
            }
            resCatalogJson.append(
                    "{id: " + resCatalog.getCatlogid() + ",name:'" + resCatalog.getTitle() + "', isParent: true}");
        }
        // èŽ·å–èµ„æºç±»åž‹åˆ—è¡¨
        List<Res_MainInfo> resMainInfo = resMainInfoService.getYWJCTreeData(resMainInfoTWO); // èŽ·å–ç›®å½•ä¸‹ä¸šåŠ¡é›†æˆ--页面集成--Iframe区块资源列表
        // å¾ªçŽ¯æž„é€ èµ„æºèŠ‚ç‚¹
        for (Res_MainInfo resMainInfo1 : resMainInfo) {
            Res_ExtIntegrate res_extIntegrate = resExtIntegrateService.selectByPrimaryKey(resMainInfo1.getResourceid());// èŽ·å–ä¸šåŠ¡é›†æˆæ‹“å±•ä¿¡æ¯
            if (!"".equals(resCatalogJson.toString())) {
                resCatalogJson.append(',');
            }
            String title = resMainInfo1.getTitle();
            if (resMainInfo1.getTitle().length() > 16) {
                title = resMainInfo1.getTitle().substring(0, 16) + "..";
            }
            String serverUrl = res_extIntegrate.getServerurl();
            if (serverUrl == null)
                serverUrl = "";
            resCatalogJson.append("{id: 'ZiYuan_" + resMainInfo1.getResourceid() + "',name:'" + title + "', title: '"
                    + resMainInfo1.getTitle() + "',isParent:false, ServerUrl: '" + serverUrl + "'}");
        }
        return "[" + resCatalogJson.toString() + "]";
    }
    /**
     * èŽ·å–ä¸“é¢˜åˆ—è¡¨ï¼ˆä¸šåŠ¡ä¸“é¢˜ï¼‰
     */
    @ResponseBody
    @GetMapping("getAllThemeList")
    public String getAllThemeList(Integer userId,PageBean pageBean) {
        pageBean.setLimit(10);
        PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数
        List<Res_Theme> resThemeList = resThemeService.getAllThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜åˆ—è¡¨ï¼Œä¸´æ—¶åŽ»é™¤ç”¨æˆ·è¿‡æ»¤
        int countNums = (int) ((Page) resThemeList).getTotal();//获取记录总数
        PageBean<Res_Theme> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resThemeList);
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (Res_Theme resTheme : resThemeList) {
            if (sb.toString().length() > 0)
                sb.append(",");
            sb.append("{");
            sb.append("id: " + resTheme.getThemeid());
            sb.append(", title: '" + resTheme.getTitle() + "'");
            sb.append("}");
        }
        sb.append("]");
        StringBuilder rsb1 = new StringBuilder();
        rsb1.append("{");
        rsb1.append("Count:"+countNums);
        rsb1.append(",Page:"+pageBean.getPage());
        rsb1.append(",ShuJu:"+sb.toString());
        rsb1.append("}");
        return "(" + rsb1.toString() + ")";
    }
    /**
     * èŽ·å–ä¸šåŠ¡ä¸“é¢˜æ‰€é€‰æ¨¡å—åˆ—è¡¨ï¼ˆå‰4个)
     * @param themeId
     * ä¸šåŠ¡ä¸“é¢˜Id
     * @return
     */
    @ResponseBody
    @GetMapping("getThemeModuleList")
    public String getThemeModuleList(Integer themeId) {
        Map<String, Object> map = new HashMap<>();
        map.put("themeid", themeId);
        List<Res_Theme_Module> resThemeModuleList = resThemeModuleService.getThemeModuleList(map);
        StringBuilder rsb = new StringBuilder();
        for (int i = 0; i < resThemeModuleList.size(); i++) {
            if (i != 0) {
                rsb.append(",");
            }
            rsb.append("{'moduleid':'" + resThemeModuleList.get(i).getModuleid() + "'"); // æ¨¡å—ID
            rsb.append(",'title':'" + resThemeModuleList.get(i).getTitle() + "'"); // æ¨¡å—名称
            rsb.append(",'mapresid':'" + resThemeModuleList.get(i).getMapresid() + "'"); // åœ°å›¾èµ„源ID
            rsb.append(",'panelresid':'" + resThemeModuleList.get(i).getPanelresid() + "'"); // é¢æ¿ID
            Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resThemeModuleList.get(i).getPanelresid());
            if (resExtIntegrate != null) {
                rsb.append(",'serverurl':'" + resExtIntegrate.getServerurl() + "'"); // å‘布单位id
            } else {
                rsb.append(",'serverurl':''"); // å‘布单位id
            }
            rsb.append("}");
        }
        return "[" + rsb.toString() + "]";
    }
    /**
     * èŽ·å–æ¨¡å—åˆ—è¡¨(排除业务专题已选择模块)
     * @param themeid       ä¸šåŠ¡ä¸“é¢˜Id
     * @param title         æ¨¡å—名称
     * @param moduleIdList  ä¸šåŠ¡ä¸“é¢˜å·²å±•ç¤ºæ¨¡å—ID
     * @return
     */
    @ResponseBody
    @GetMapping("getModuleList")
    public String getModuleList(Integer themeid, String title, String moduleIdList, PageBean pageBean) {
        Page<Res_Theme_Module> page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());
        Map<String, Object> map = new HashMap<>();
        map.put("themeid", themeid);
        map.put("title", title);
        map.put("moduleIdList", moduleIdList);
        List<Res_Theme_Module> resThemeModuleList1 = resThemeModuleService.getIgnoreThemeModuleList(map);
        int countNums = (int) ((Page) resThemeModuleList1).getTotal();
        PageBean<Res_Theme_Module> pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums);
        pageData.setItems(resThemeModuleList1);
        StringBuilder rsb = new StringBuilder();
        rsb.append("{'totalCount':'" + countNums);
        rsb.append("','topics':[");
        for (int i = 0; i < resThemeModuleList1.size(); i++) {
            if (i != 0) {
                rsb.append(",");
            }
            rsb.append("{'moduleid':'" + resThemeModuleList1.get(i).getModuleid() + "'"); // æ¨¡å—ID
            rsb.append(",'title':'" + resThemeModuleList1.get(i).getTitle() + "'"); // æ¨¡å—名称
            rsb.append("}");
        }
        rsb.append("]}");
        return rsb.toString();
    }
    /**
     * å®šåˆ¶ä¸šåŠ¡ä¸“é¢˜æ¨¡å—
     * @param new_moduleId      æ–°æ¨¡å—ID
     * @return
     */
    @ResponseBody
    @GetMapping("ThemeModuleEdit")
    public String ThemeModuleEdit(Integer new_moduleId) {
        //resThemeRelationService.deleteByThemeIdAndModuleId(resThemeRelation); // åˆ é™¤æ—§æ¨¡å—关联记录
        // æ–°å¢žæ–°æ¨¡å—关联记录
        //Res_Theme_Relation resThemeRelation1 = new Res_Theme_Relation();
        //resThemeRelation1.setThemeid(resThemeRelation.getThemeid());
        //resThemeRelation1.setModuleid(new_moduleId);
        //resThemeRelationService.insert(resThemeRelation1);
        // æŸ¥è¯¢æ–°æ¨¡å—信息
        Res_Theme_Module resThemeModule = resThemeModuleService.selectByid(new_moduleId);
        StringBuilder rsb = new StringBuilder();
        if(resThemeModule != null) {
            rsb.append("{'moduleid':'" + resThemeModule.getModuleid() + "'"); // æ¨¡å—ID
            rsb.append(",'title':'" + resThemeModule.getTitle() + "'"); // æ¨¡å—名称
            rsb.append(",'mapresid':'" + resThemeModule.getMapresid() + "'"); // åœ°å›¾èµ„源ID
            rsb.append(",'panelresid':'" + resThemeModule.getPanelresid() + "'"); // é¢æ¿ID
            Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resThemeModule.getPanelresid());
            if (resExtIntegrate != null) {
                rsb.append(",'serverurl':'" + resExtIntegrate.getServerurl() + "'"); // å‘布单位id
            } else {
                rsb.append(",'serverurl':''"); // å‘布单位id
            }
            rsb.append("}");
        }
        return rsb.toString();
    }
    /**
     * èŽ·å–ç¬¬ä¸€ä¸ªé»˜è®¤ä¸“é¢˜ï¼ˆä¸šåŠ¡ä¸“é¢˜ï¼‰
     */
    @ResponseBody
    @GetMapping("getFirstDefaultTheme")
    public String getFirstDefaultTheme(Integer userId) {
        List<Res_Theme> resThemeList = resThemeService.getDefaultThemeList(userId);// èŽ·å–ä¸šåŠ¡ä¸“é¢˜é»˜è®¤ä¸“é¢˜ï¼Œä¸´æ—¶åŽ»é™¤ç”¨æˆ·è¿‡æ»¤
        StringBuilder sb = new StringBuilder();
        int i = 0;
        for (Res_Theme resTheme : resThemeList) {
            if(i == 0) {
                sb.append("{");
                sb.append("id: " + resTheme.getThemeid());
                sb.append(", title: '" + resTheme.getTitle() + "'");
                sb.append("}");
                i += 1;
            }
        }
        return "(" + sb.toString() + ")";
    }
}
src/main/java/com/landtool/lanbase/modules/api/controller/RoleResController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.landtool.lanbase.modules.api.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.landtool.lanbase.modules.api.utils.PageBean;
import com.landtool.lanbase.modules.res.entity.Res_Catalog;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.entity.Role_ResCatalog;
import com.landtool.lanbase.modules.res.service.ResCatalogService;
import com.landtool.lanbase.modules.res.service.RoleResCatalogService;
import com.landtool.lanbase.modules.sys.controller.AbstractController;
@Controller
@RequestMapping("/api/res")
public class RoleResController extends AbstractController {
         @Autowired
        RoleResCatalogService roleResCatalogService;
         @Autowired
         ResCatalogService resCatalogService;
        //插入角色-资源 ç®¡ç†
        @ResponseBody
        @GetMapping("insert")
        public String insertRoleResCatalogRel(Role_ResCatalog bean) {
             boolean result=roleResCatalogService.insertRoleResCatalogRel(bean);
            return result?"插入成功":"插入失败";
        }
        @ResponseBody
        @GetMapping("query")
        public String queryRoleResCatalogRel(Role_ResCatalog bean) {
             List<Role_ResCatalog> list=roleResCatalogService.queryRoleResCatalogRel(bean);
            return JSONObject.toJSONStringWithDateFormat(list, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat);
        }
        @ResponseBody
        @GetMapping("update")
        public String updateRoleResCatalogRel(Role_ResCatalog bean) {
             boolean result=roleResCatalogService.updateRoleResCatalogRel(bean);
             return result?"更新成功":"更新失败";
        }
}
src/main/java/com/landtool/lanbase/modules/api/controller/ThymeleafDemoController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
//package com.landtool.lanbase.modules.api.controller;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Controller;
//import org.springframework.ui.Model;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestMethod;
//
//@Controller
//public class ThymeleafDemoController {
//
//    private Logger logger = LoggerFactory.getLogger(getClass());
//    /**
//     * ä½¿ç”¨æ¨¡æ¿å¼•擎的示例
//     * @return
//     */
//    @RequestMapping(value = "/api/demo",method = RequestMethod.GET)
//    public String demo(Model model) {
//        model.addAttribute("name", "模板引擎测试");
//        return "demo";  //若html文件放在example文件夹下: return "example/demo";
//    }
//
//    /**
//     *
//     * å¼•用模板页示例
//     * @return
//     */
//    @RequestMapping(value = "/api/MasterDemo", method = RequestMethod.GET)
//    public String MasterDemo(Model model){
//        return "MasterDemo";
//    }
//}
src/main/java/com/landtool/lanbase/modules/api/intercept/ApiInterceptor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
package com.landtool.lanbase.modules.api.intercept;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.landtool.lanbase.common.exception.LanbaseException;
import com.landtool.lanbase.modules.api.annotation.Login;
import com.landtool.lanbase.modules.api.utils.JwtUtils;
import io.jsonwebtoken.Claims;
/**
 * @author lanbase
 * @Description: TODO(api interceptor)
 * @date 2017-9-27 14:41
 */
@Component
public class ApiInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    private JwtUtils jwtUtils;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //接口方法如果没有Login注解,则不需要校验token
        Login annotation;
        if(handler instanceof HandlerMethod) {
            annotation = ((HandlerMethod) handler).getMethodAnnotation(Login.class);
        }else{
            return true;
        }
        if(annotation == null){
            return true;
        }
        //获取token
        String token = request.getHeader(jwtUtils.getHeader());
        if(StringUtils.isBlank(token)){
            token = request.getParameter(jwtUtils.getHeader());
        }
        //校验token
        if(StringUtils.isBlank(token)){
            throw new LanbaseException(jwtUtils.getHeader() + "不能为空", HttpStatus.UNAUTHORIZED.value());
        }
        Claims claims = jwtUtils.getClaimByToken(token);
        if(claims == null || jwtUtils.isTokenExpired(claims.getExpiration())){
            throw new LanbaseException(jwtUtils.getHeader() + "已经失效", HttpStatus.UNAUTHORIZED.value());
        }
        return true;
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/CoderUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,181 @@
package com.landtool.lanbase.modules.api.utils;
import java.security.MessageDigest;
import java.util.Base64;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
//import sun.misc.BASE64Decoder;
//import sun.misc.BASE64Encoder;
/**
 * åŸºç¡€åŠ å¯†ç»„ä»¶
 * @author TanBin
 */
public abstract class CoderUtils {
    public static final String KEY_SHA = "SHA";
    public static final String KEY_MD5 = "MD5";
    /**
     * MAC算法可选以下多种算法
     * <pre>
     * HmacMD5
     * HmacSHA1
     * HmacSHA256
     * HmacSHA384
     * HmacSHA512
     * </pre>
     */
    public static final String KEY_MAC = "HmacMD5";
    /**
     * BASE64加密
     * @param key
     * @return
     * @throws Exception
     */
    public static String encryptBASE64(byte[] data) {
        //text.getBytes("UTF-8"); new String(decoder.decode(encodedText), "UTF-8")
        //法1:使用sun.misc套件。1.6之前, æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//        return (new BASE64Encoder()).encodeBuffer(data);
        //法2:使用Apache Commons Codec。
//        return (new Base64()).encodeToString(data);
        //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
        return Base64.getEncoder().encodeToString(data);
    }
    /**
     * BASE64解密
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptBASE64(String key) {
        //法1:使用sun.misc套件。 æ•ˆçŽ‡ä¸å¥½ï¼Œæ–°JDK不支持
//        return (new BASE64Decoder()).decodeBuffer(key);
        //法2:使用Apache Commons Codec。
//      return (new Base64()).decode(key);
      //法3:使用Java 8的java.util套件。  æ•ˆçŽ‡æ˜¯1的11倍,是2的3倍以上。
      return Base64.getDecoder().decode(key);
    }
    /**
     * MD5加密
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptMD5(byte[] data) throws Exception{
        MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
        md5.update(data);
        return md5.digest();
    }
    /**
     * è“å›¾çš„MD5加密算法
     * @param text
     * @return
     * @throws Exception
     */
    public static String lantuEncryptMD5(String text) throws Exception{
        byte[] b = encryptMD5(text.getBytes("UTF-8"));
        String key = convertToHexString(b);
        //转为大写
        key = key.toUpperCase();
        //倒序
        char[] array = key.toCharArray();
        String reverseKey = "";
        for (int i = array.length-1; i >= 0; i--) {
            reverseKey += array[i];
        }
        return reverseKey;
    }
    /**
     * å­—节数组转为32位字符串
     * @param data
     * @return
     */
    private static String convertToHexString(byte data[]) {
        StringBuffer strBuffer = new StringBuffer();
        for (int i = 0; i < data.length; i++) {
            //strBuffer.append(Integer.toHexString(0xff & data[i]));    //30bit
            String haxHex = Integer.toHexString(data[i] & 0xFF);
            if(haxHex.length() < 2){
                strBuffer.append("0");
            }
            strBuffer.append(haxHex);
        }
        return strBuffer.toString();
    }
    /**
     * SHA加密
     * @param data
     * @return
     * @throws Exception
     */
    public static byte[] encryptSHA(byte[] data) throws Exception{
        MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
        sha.update(data);
        return sha.digest();
    }
    /**
     * åˆå§‹åŒ–HMAC密钥
     * @return
     * @throws Exception
     */
    public static String initMacKey() throws Exception{
        KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
        SecretKey secretKey = keyGenerator.generateKey();
        return encryptBASE64(secretKey.getEncoded());
    }
    /**
     * HMAC加密
     * @param data
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] encryptHMAC(byte[] data, String key) throws Exception{
        SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
        Mac mac = Mac.getInstance(secretKey.getAlgorithm());
        mac.init(secretKey);
        return mac.doFinal(data);
    }
    public static void main(String[] args) {
        String inputStr = "123456";
        System.err.println("原文:" + inputStr);
        try {
            String codeBASE64 = encryptBASE64(inputStr.getBytes("UTF-8"));
            String codeMD5 = lantuEncryptMD5(inputStr);
            byte[] codeSHA = encryptSHA(inputStr.getBytes("UTF-8"));
            String key = initMacKey();
            System.err.println("Mac密钥:" + key);
            byte[] codeHMAC = encryptHMAC(inputStr.getBytes("UTF-8"), key);
            System.err.println("\nBASE64:" + codeBASE64);
            System.err.println("BASE64解密:" + new String(decryptBASE64(codeBASE64),"UTF-8"));
            System.err.println("MD5:" + codeMD5);
            System.err.println("SHA:" + codeSHA);
            System.err.println("HMAC:" + codeHMAC);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/DBConnection.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.landtool.lanbase.modules.api.utils;
import java.sql.Connection;
import java.sql.DriverManager;
/**
 * æµ‹è¯•数据库连接
 * @author Administrator
 */
public class DBConnection {
    public static boolean TestOracleConnection(String serveraddress, String databasename, String username, String password, String port){
        String url =  "jdbc:oracle:thin:@"+serveraddress+":"+port+"/"+databasename+"";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn = DriverManager.getConnection(url,username,password);
            if(conn!=null){
                return true;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }
    public static boolean TestSQLServerConnection(String serveraddress, String databasename, String username,String password, String port) {
        String url =  "jdbc:sqlserver://"+serveraddress+";database="+databasename+"";
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection conn = DriverManager.getConnection(url,username,password);
            if(conn!=null){
                return true;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }
    public static boolean TestMySQLConnection(String serveraddress, String databasename, String username,String password, String port) {
        String url =  "jdbc:mysql://"+serveraddress+":"+port+"/"+databasename;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url,username,password);
            if(conn!=null){
                return true;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/DOMUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,361 @@
package com.landtool.lanbase.modules.api.utils;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.lang3.StringUtils;
import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.landtool.lanbase.modules.res.entity.WebService.SchemaDefaultType;
/**
 * DOM解析工具类
 *
 * @author sjw
 * @version [版本号, 2017å¹´12月17日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class DOMUtil {
    /**
     * Serialise the supplied W3C DOM subtree.
     * <p/>
     * The output is unformatted.
     *
     * @param nodeList The DOM subtree as a NodeList.
     * @return The subtree in serailised form.
     * @throws DOMException Unable to serialise the DOM.
     */
    public static String serialize(NodeList nodeList) throws DOMException {
        return serialize(nodeList, false);
    }
    /**
     * Serialise the supplied W3C DOM subtree.
     *
     * @param node   The DOM node to be serialized.
     * @param format Format the output.
     * @return The subtree in serailised form.
     * @throws DOMException Unable to serialise the DOM.
     */
    public static String serialize(final Node node, boolean format) throws DOMException {
        StringWriter writer = new StringWriter();
        serialize(node, format, writer);
        return writer.toString();
    }
    /**
     * the supplied W3C DOM subtree.
     *
     * @param node   The DOM node to be serialized.
     * @param format Format the output.
     * @param writer The target writer for serialization.
     * @throws DOMException Unable to serialise the DOM.
     */
    public static void serialize(final Node node, boolean format, Writer writer) throws DOMException {
        if (node.getNodeType() == Node.DOCUMENT_NODE) {
            serialize(node.getChildNodes(), format, writer);
        } else {
            serialize(new NodeList() {
                @Override
                public Node item(int index) {
                    return node;
                }
                @Override
                public int getLength() {
                    return 1;
                }
            }, format, writer);
        }
    }
    /**
     * Serialise the supplied W3C DOM subtree.
     *
     * @param nodeList The DOM subtree as a NodeList.
     * @param format   Format the output.
     * @return The subtree in serailised form.
     * @throws DOMException Unable to serialise the DOM.
     */
    public static String serialize(NodeList nodeList, boolean format) throws DOMException {
        StringWriter writer = new StringWriter();
        serialize(nodeList, format, writer);
        return writer.toString();
    }
    /**
     * Serialise the supplied W3C DOM subtree.
     *
     * @param nodeList The DOM subtree as a NodeList.
     * @param format   Format the output.
     * @param writer   The target writer for serialization.
     * @throws DOMException Unable to serialise the DOM.
     */
    public static void serialize(NodeList nodeList, boolean format, Writer writer) throws DOMException {
        try {
            // nodeList为空
            if (nodeList == null) {
                throw new IllegalArgumentException(
                        "XmlUtil.serialize(NodeList nodeList, boolean format, Writer writer)中参数nodeList为");
            }
            TransformerFactory factory = TransformerFactory.newInstance();
            // è®¾ç½®æ ¼å¼åŒ–
            if (format) {
                try {
                    // (用于jdk1.5)设置缩进,如果运行在1.4上会抛出异常
                    factory.setAttribute("indent-number", new Integer(4));
                } catch (Exception e) {
                    throw new RuntimeException("设置TransformerFactory的缩进量为4失败:" + e.getMessage());
                }
            }
            // å–å¾—transformer
            Transformer transformer = factory.newTransformer();
            // è®¾ç½®ç¼–码格式
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            // è®¾ç½®æ˜¯å¦å¿½ç•¥xml声明片段
            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
            if (format) {
                // è®¾ç½®xml是否进行缩进处理
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                // (用于jdk1.4)也可以这样写http://xml.apache.org/xslt}indent-amount,区别只是命名空间不一样
                transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "4");
            }
            // å¤„理所有的结点
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node node = nodeList.item(i);
                if (isTextNode(node)) {
                    // å¦‚果是文本结点,则直接输出
                    writer.write(node.getNodeValue());
                } else if (node.getNodeType() == Node.ATTRIBUTE_NODE) {
                    writer.write(((Attr) node).getValue());
                } else if (node.getNodeType() == Node.ELEMENT_NODE) {
                    transformer.transform(new DOMSource(node), new StreamResult(writer));
                }
            }
        } catch (Exception e) {
            DOMException domExcep = new DOMException(DOMException.INVALID_ACCESS_ERR,
                    "Unable to serailise DOM subtree.");
            domExcep.initCause(e);
            throw domExcep;
        }
    }
    /**
     * åˆ¤æ–­node是否为文本结点
     *
     * @param node
     * @return
     */
    public static boolean isTextNode(Node node) {
        short nodeType;
        if (node == null) {
            return false;
        }
        nodeType = node.getNodeType();
        return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
    }
    /**
     * åˆ¤æ–­ç»“点的属性是否存在
     *
     * @param node
     * @param attributeName
     * @return
     */
    public static boolean assertNodeAttributeExist(Node node, String attributeName) {
        boolean result = false;
        if (node != null) {
            NamedNodeMap attributeMap = node.getAttributes();
            Node attributeNode = attributeMap.getNamedItem(attributeName);
            if (attributeNode != null) {
                if (StringUtils.isNotEmpty(attributeNode.getNodeValue())) {
                    result = true;
                }
            }
        }
        return result;
    }
    /**
     * å°†NodeList转换为List<Node>
     *
     * @param nodeList
     * @return
     * @throws Exception
     */
    public static List<Node> covertNodeListToList(NodeList nodeList) throws Exception {
        List<Node> list = new ArrayList<Node>();
        if (nodeList != null) {
            for (int i = 0; i < nodeList.getLength(); i++) {
                list.add(nodeList.item(i));
            }
        }
        return list;
    }
    /**
     * å¾—到结点的属性值
     *
     * @param node
     * @param attributeName
     * @return
     * @throws Exception
     */
    public static String getAttributeValue(Node node, String attributeName) throws Exception {
        String attributeValue = "";
        if (node != null) {
            NamedNodeMap attributeMap = node.getAttributes();
            Node attributeNode = attributeMap.getNamedItem(attributeName);
            if (attributeNode != null) {
                attributeValue = attributeNode.getNodeValue();
            }
        }
        return attributeValue;
    }
    /**
     * å¾—到结点的name属性值
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static String getNodeName(Node node) throws Exception {
        return getAttributeValue(node, "name");
    }
    /**
     * å¾—到结点的type属性值
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static String getNodeType(Node node) throws Exception {
        String type = getAttributeValue(node, "type");
        if (StringUtils.isNotEmpty(type)) {
            if (type.indexOf(":") >= 0) {
                return type.split(":")[1];
            } else {
                return type;
            }
        }
        return "";
    }
    /**
     * å¾—到结点的base属性值,目前仅用于simpletype结点下restriction结点
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static String getNodeBase(Node node) throws Exception {
        String type = getAttributeValue(node, "base");
        if (StringUtils.isNotEmpty(type)) {
            if (type.indexOf(":") >= 0) {
                return type.split(":")[1];
            } else {
                return type;
            }
        }
        return "";
    }
    /**
     * å¾—到结点的maxOccurs属性值
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static String getNodeMaxOccurs(Node node) throws Exception {
        return getAttributeValue(node, "maxOccurs");
    }
    /**
     * å¾—到结点的minOccurs属性值
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static String getNodeMinOccurs(Node node) throws Exception {
        return getAttributeValue(node, "minOccurs");
    }
    /**
     * åˆ¤æ–­type是否为schema默认的类型
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static boolean isDefaultType(Node node) throws Exception {
        boolean result = false;
        if (node != null) {
            String type = DOMUtil.getNodeType(node);
            SchemaDefaultType[] defaultTypes = SchemaDefaultType.values();
            for (int i = 0; i < defaultTypes.length; i++) {
                SchemaDefaultType defaultType = defaultTypes[i];
                if (type.equals(defaultType.getType())) {
                    result = true;
                    break;
                }
            }
        }
        return result;
    }
    /**
     * åˆ¤æ–­element是否为数组类型
     *
     * @param node
     * @return
     * @throws Exception
     */
    public static boolean isArray(Node node) throws Exception {
        boolean result = false;
        if (node != null) {
            String minOccurs = DOMUtil.getNodeMinOccurs(node);
            String maxOccurs = DOMUtil.getNodeMaxOccurs(node);
            boolean marker = maxOccurs != null && !"".equals(maxOccurs)
                    && ("unbounded".equals(maxOccurs) || Integer.valueOf(maxOccurs) > 1);
            if (marker) {
                result = true;
            }
        }
        return result;
    }
    public static void removeTextNode(Node root) {
        if (root.hasChildNodes()) {
            NodeList children = root.getChildNodes();
            int count = children.getLength();
            for (int i = count - 1; i >= 0; i--) {
                // éœ€è¦ä»ŽåŽå¾€å‰åˆ é™¤ï¼Œé˜²æ­¢å‡ºçŽ°æ²™æ¼æ•ˆåº”
                Node child = children.item(i);
                if (child.getNodeType() == Node.TEXT_NODE || child.getNodeType() == Node.COMMENT_NODE) {
                    child.getParentNode().removeChild(child);
                } else {
                    removeTextNode(child);
                }
            }
        }
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/DeleteFileUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package com.landtool.lanbase.modules.api.utils;
import java.io.File;
/**
* @Description: åˆ é™¤æ–‡ä»¶
* @author ykm
 * @param
* @return
* @date 2018/4/19 16:42
*/
public class DeleteFileUtils {
    public static boolean deletefile(String filePath) {
        File file = new File(filePath);
        if(file.exists() && file.isFile()) {
            if(file.delete()) {
                System.out.println("删除文件成功");
                return true;
            }
            else  {
                System.out.println("删除文件失败");
                return false;
            }
        }
        else  {
            System.out.println(filePath + "此路径不存在文件");
            return false;
        }
    }
    public static boolean deleteDiretory(String dirPath) {
        if(!dirPath.endsWith(File.separator)) {
            dirPath = dirPath + File.separator;
            File file = new File(dirPath);
            boolean flag = false;
            if(file.exists() && file.isDirectory()) {
                File[] files = file.listFiles();
                for (int i=0;i<files.length;i++) {
                    if(files[i].isFile()) {
                        flag = DeleteFileUtils.deletefile(files[i].getAbsolutePath());
                        if(!flag) break;
                    }
                    else if(files[i].isDirectory()) {
                        flag = DeleteFileUtils.deleteDiretory(files[i].getAbsolutePath());
                        if(!flag) break;
                    }
                }
            }
            if(!flag) {
                System.out.println("删除文件夹失败");
                return false;
            }
            if(file.delete()) {
                System.out.println("删除文件夹成功");
                return true;
            }
            else {
                System.out.println("删除文件及失败");
                return false;
            }
        }
        else {
            System.out.println("文件夹不存在");
            return false;
        }
    }
    public static boolean deletefileUtils(String filepath) {
        File file = new File(filepath);
        if(file.exists()) {
            if(file.isFile()) {
                return DeleteFileUtils.deletefile(filepath);
            }
            else if (file.isDirectory()) {
                return DeleteFileUtils.deleteDiretory(filepath);
            }
            else {
                System.out.println("无法判断类型");
                return false;
            }
        }
        else {
            System.out.println("文件不存在");
            return false;
        }
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/Excel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,458 @@
package com.landtool.lanbase.modules.api.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class Excel {
    //Route:读取配置文件的上传路径
    public static String going(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("资源表");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
        JSONArray topics = JSON.parseArray(json);
//        JSONArray topics = obj.getJSONArray("topics");
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("mulu"));
            row.createCell(3).setCellValue(obj1.getString("resourceclass"));
            row.createCell(4).setCellValue(obj1.getString("sharprotocol"));
            row.createCell(5).setCellValue(obj1.getString("serverurl"));
            row.createCell(6).setCellValue(obj1.getString("pubdate"));
            row.createCell(7).setCellValue(obj1.getString("pubunitid"));
            row.createCell(8).setCellValue(obj1.getString("createuserid"));
        }
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        // alert ykm 2019/03/04
        name = name + "-" + topics.size();
        File fileDir = new File(Route);
        if(!fileDir.exists()){
            fileDir.mkdirs();
        }
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        return name +".xls";
    }
    public static String FWPHgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("访问排行表");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
//        JSONObject obj = JSON.parseObject(json);
        JSONArray topics = JSON.parseArray(json);
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("resourceclass"));
            row.createCell(3).setCellValue(obj1.getString("pubunitid"));
            row.createCell(4).setCellValue(obj1.getString("pubdate"));
            row.createCell(5).setCellValue(obj1.getString("fangwenpaihang"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String SCgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("收藏表");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
        JSONArray topics = JSON.parseArray(json);
//        JSONArray topics = obj.getJSONArray("topics");
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("resourceclass"));
            row.createCell(3).setCellValue(obj1.getString("pubunitname"));
            row.createCell(4).setCellValue(obj1.getString("shoucangdate"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String ZXgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("最新资源");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
//        JSONObject obj = JSON.parseObject(json);
        JSONArray topics = JSON.parseArray(json);
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("resourceclass"));
            row.createCell(3).setCellValue(obj1.getString("pubunitid"));
            row.createCell(4).setCellValue(obj1.getString("pubdate"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String SQgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("申请资源表");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
//        JSONObject obj = JSON.parseObject(json);
//        JSONArray topics = obj.getJSONArray("topics");
        JSONArray topics = JSON.parseArray(json);
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("resourceclass"));
            row.createCell(3).setCellValue(obj1.getString("pubunitid"));
            row.createCell(4).setCellValue(obj1.getString("shenqingdate"));
            row.createCell(5).setCellValue(obj1.getString("shenqingstatus"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String TJgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("资源统计");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
        JSONObject obj = JSON.parseObject(json);
        JSONArray topics = obj.getJSONArray("topics");
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("mulu"));
            row.createCell(3).setCellValue(obj1.getString("resourceclass"));
            row.createCell(4).setCellValue(obj1.getString("pubdate"));
            row.createCell(5).setCellValue(obj1.getString("pubunitid"));
            row.createCell(6).setCellValue(obj1.getString("datasources"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String ShuJuKugoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("数据库表");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
        JSONObject obj = JSON.parseObject(json);
        JSONArray topics = obj.getJSONArray("topics");
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
           for (int j = 0; j < biaoti.length; j++) {
                row.createCell(j).setCellValue(obj1.getString(biaoti[j]));
            }
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
    public static String SystemUrlgoing(HttpServletResponse response,String[] biaoti,String json,String Route) throws IOException {
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("资源地址");
        sheet.setDefaultColumnWidth(30);
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
//        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
//        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, æˆªè‡³åˆ—
//        sheet.addMergedRegion(new CellRangeAddress(0,0, 0,3));
        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(0);
        //创建单元格并设置单元格内容
        //获取标题的长度
        for (int i = 0; i < biaoti.length; i++) {
            row2.createCell(i).setCellValue(biaoti[i]);
        }
        //将传入的string转换为json
//        JSONObject obj = JSON.parseObject(json);
//        JSONArray topics = obj.getJSONArray("topics");
        JSONArray topics = JSON.parseArray(json);
        //在sheet里创建第N行
        for (int i = 0; i < topics.size(); i++) {
            JSONObject obj1 = JSON.parseObject(topics.getString(i));
            HSSFRow row = sheet.createRow((int) i + 1);
            row.createCell(0).setCellValue(obj1.getString("resourceid"));
            row.createCell(1).setCellValue(obj1.getString("title"));
            row.createCell(2).setCellValue(obj1.getString("firstMapUrl"));
            row.createCell(3).setCellValue(obj1.getString("token"));
        }
        //.....省略部分代码
        //输出Excel文件
        SimpleDateFormat sFormat=new SimpleDateFormat("yyyyMMddHHmmss");
        Calendar calendar=Calendar.getInstance();
        //获取系统当前时间并将其转换为string类型
        String name=sFormat.format(calendar.getTime());
        FileOutputStream output=new FileOutputStream(Route+name+".xls");
        wb.write(output);
        output.flush();
        System.out.println( name+".xls");
        return name+".xls";
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/GetUserInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
//package com.landtool.lanbase.modules.api.utils;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//
//import com.landtool.lanbase.common.utils.HttpContextUtils;
//import com.landtool.lanbase.common.utils.HttpOperateUtils;
//import com.landtool.lanbase.config.SysTemPropertyConfig;
//import com.landtool.lanbase.modules.org.entity.OrgUnitJoinRegion;
//import com.landtool.lanbase.modules.org.entity.OrgUserJoinUnit;
//import com.landtool.lanbase.modules.sys.entity.SysFieldvalue;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//
//
///**
// * èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
// * @return Json å­—符串
// */
//
//public class GetUserInfo {
//
//    //查询用户信息
//    public static OrgUserJoinUnit getUser(SysTemPropertyConfig sysConfig, String username) {
//        String url = sysConfig.getApiServer() + "/api/org/user/getInfoByName/" + username;
//        return getOrgUserJoinUnit(url);
//    }
//
//    //后台查询用户信息
//    private static OrgUserJoinUnit getOrgUserJoinUnit(String url) {
//        OrgUserJoinUnit user = null;
//        try {
//            user = HttpOperateUtils.getJsonObject(url, OrgUserJoinUnit.class);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return user;
//    }
//
//    //根据用户id来查询
//    public static OrgUserJoinUnit getUserId(SysTemPropertyConfig sysConfig, String id) {
//        String url = sysConfig.getApiServer() + "/api/org/user/getInfoById/" + id;
//        return getOrgUserJoinUnit(url);
//    }
//
//    //后台查询用户信息
//    private static OrgUnitJoinRegion getOrgUnitJoinRegion(String url) {
//        OrgUnitJoinRegion unit = null;
//        try {
//            unit = HttpOperateUtils.getJsonObject(url, OrgUnitJoinRegion.class);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return unit;
//    }
//
//    //查询单位id对应的单位
//    public static OrgUnitJoinRegion getUnitname(SysTemPropertyConfig sysConfig, int unitid) {
//        String url = sysConfig.getApiServer() + "/api/org/unit/getInfoById/" + unitid;
//        return getOrgUnitJoinRegion(url);
//    }
//
//
//    //获取当前登录人id name è¿˜æœ‰å¯¹åº”的单位id name
//
//    public static String getUserAndUnid(SysTemPropertyConfig sysConfig) {
//        OrgUserJoinUnit user = getUser(sysConfig);
//        String unid = user.getOrguserunits().get(0).getUnitid().toString(); //((JSONObject) jsarr.get(0)).get("unitid").toString();
//        String unitname = user.getOrguserunits().get(0).getUnitname(); //obj1.getString("unitname");
//        return "{'userid': '" + user.getUserid() + "','loginname': '" + user.getChinesename() + "','unid': '" + unid + "','unitname': '" + unitname + "'}";
//
//    }
//
//    public static String findUserByWord(String RootUrl, String keyWord) {
//
//
//        FieldUtils fieldUtils = new FieldUtils();
//        String url = RootUrl + "api/org/user/findUserByWord/" + keyWord;
//        String username = null;
//        try {
//            username = HttpOperateUtils.httpGet(url);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        StringBuilder Json = new StringBuilder();
//        Json.append(username);
//        System.out.print("test:==============" + Json.toString());
//
//        return Json.toString();
//    }
//}
src/main/java/com/landtool/lanbase/modules/api/utils/GetWebProUrl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package com.landtool.lanbase.modules.api.utils;
import java.net.Inet4Address;
import java.net.InetAddress;
public class GetWebProUrl {
    public static String getLocalHostIP(){
        String result = null;
        try {
            InetAddress IP = Inet4Address.getLocalHost();
            String ip = IP.toString();
            int index = ip.indexOf('/');
            result = ip.substring(index+1, ip.length());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    public static String getProjectURL(String IP){
        String result = "http://";
        result += IP;
        result += ":8080/";
        String proPath = System.getProperty("user.dir");
        String proName = proPath.substring(proPath.lastIndexOf("\\")+1, proPath.length());
        result += proName;
        return result;
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/JDBCUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,209 @@
package com.landtool.lanbase.modules.api.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.LinkedHashMap;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
 * @Author: lizhao
 * @Date: 2018-04-17 17:17
 * @param:连接多个数据库的工具类(Oracle,sqlserver)
 * @Description:
 *
 */
public class JDBCUtils {
    public static void main(String[] args) {
    }
    /**
     * @Author: lizhao
     * @Date: 2018-04-17 15:58
     * @param hostName :服务器地址;sid:数据库名称;user:用户名;password:密码;port:端口
     * @Description:
     *
     */
    public static String OracleConnUtils(String hostName, String sid, String user, String password, String port, String sql){
        //声明Connection对象
        Connection con;
        //驱动程序名
        String driver = "oracle.jdbc.driver.OracleDriver";
        //URL指向要访问的数据库名
        String url =  "jdbc:oracle:thin:@"+hostName+":"+port+"/"+sid+"";
        System.out.println(url);
        //遍历查询结果集
        return getString(user, password, sql, driver, url);
    }
    public static String SqlServerConnUtils(String hostName, String sid, String user, String password,  String sql){
        //声明Connection对象
        Connection con;
        //驱动程序名
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        //URL指向要访问的数据库名
        String url = "jdbc:sqlserver://"+hostName+";database="+sid+"";
        //遍历查询结果集
        return getString(user, password, sql, driver, url);
    }
    public static String MysqlConnUtils(String hostName, String sid, String user, String password, String port,String sql){
        String driver = "com.mysql.jdbc.Driver";
        String url =  "jdbc:mysql://"+hostName+":"+port+"/"+sid;
      //遍历查询结果集
        return getString(user, password, sql, driver, url);
    }
    private static String getString(String user, String password, String sql, String driver, String url) {
        Connection con;
        try {
            //加载驱动程序
            Class.forName(driver);
            //1.getConnection()方法,连接数据库!!
            con = DriverManager.getConnection(url,user,password);
            if(!con.isClosed())
                System.out.println("Succeeded connecting to the Database!");
            //2.创建statement类对象,用来执行SQL语句!!
            Statement statement = con.createStatement();
            //要执行的SQL语句
            //3.ResultSet类,用来存放获取的结果集!!
            try {
                ResultSet rs = statement.executeQuery(sql);
                String res=resultSetToJson(rs);
                rs.close();
                con.close();
                return "[{success: true, data: '" + res + "'}]";
            }catch (Exception e){
                return "[{success: false, msg: '" + e.getMessage().replace("'","") + "'}]";
            }
//            return res;
        } catch(ClassNotFoundException e) {
            //数据库驱动类异常处理
            System.out.println("Sorry,can`t find the Driver!");
            return "[{success: false, msg: '" + e.getMessage() + "'}]";
        } catch(SQLException e) {
            //数据库连接失败异常处理
            e.printStackTrace();
            return "[{success: false, msg: '" + e.getMessage() + "'}]";
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            return "[{success: false, msg: '" + e.getMessage() + "'}]";
        }
    }
    public static String htmlEncodeByRegExp(String str){
        String s = "";
        if(str.equals("")) return "";
        s = str.replace("&", "&amp;");
        s = s.replace("<", "&lt;");
        s = s.replace(">", "&gt;");
        s = s.replace("\'", "&#39;");
        s = s.replace("\"", "&quot;");
        return s;
    }
    public static String resultSetToJson(ResultSet rs) throws SQLException,JSONException
    {
        // json数组
        JSONArray array = new JSONArray();
        // èŽ·å–åˆ—æ•°
        ResultSetMetaData metaData = rs.getMetaData();
        Map result = new LinkedHashMap();
        int columnCount = metaData.getColumnCount();
        // éåކResultSet中的每条数据
        while (rs.next()) {
            JSONObject jsonObj = new JSONObject();
            // éåŽ†æ¯ä¸€åˆ—
            for (int i = 1; i <= columnCount; i++) {
                String columnName =metaData.getColumnLabel(i);
                if(rs.getObject(columnName) == null) {
                    jsonObj.put(columnName, rs.getObject(columnName));
                }
                else {
                    jsonObj.put(columnName, htmlEncodeByRegExp(rs.getObject(columnName).toString()));
                }
                int type = metaData.getColumnType(i); // èŽ·å–åˆ—çš„ç±»åž‹
                if(type == Types.INTEGER) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName,rs.getInt(columnName));
                }
                if(type == Types.ARRAY) { // å¦‚果是rs.getArray
                    jsonObj.put(columnName, rs.getArray(columnName));
                }
                if(type == Types.BIGINT) {
                    jsonObj.put(columnName, rs.getInt(columnName));
                }
                if(type == Types.BOOLEAN) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getBoolean(columnName));
                }
                if(type == Types.BLOB) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, htmlEncodeByRegExp(rs.getBlob(columnName).toString()));
                }
                if(type == Types.DOUBLE) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getDouble(columnName));
                }
                if(type == Types.FLOAT) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getFloat(columnName));
                }
                if(type == Types.NVARCHAR) { // å¦‚果是rs.getInt
                    if(rs.getNString(columnName)==null){
                        jsonObj.put(columnName, "");
                    //包含特殊字符无法转换json
                    }else if(rs.getNString(columnName).contains("\\") || rs.getNString(columnName).contains("\"") || rs.getNString(columnName).contains("'")){
                        jsonObj.put(columnName, htmlEncodeByRegExp(rs.getNString(columnName)));
                    }else {
                        jsonObj.put(columnName, rs.getNString(columnName));
                    }
                }
                if(type == Types.VARCHAR) {// å¦‚果是rs.getInt
                    if(rs.getString(columnName)==null){
                        jsonObj.put(columnName, "");
                    //包含特殊字符无法转换json
                    }else if(rs.getString(columnName).contains("\\") || rs.getString(columnName).contains("\"") || rs.getString(columnName).contains("'")){
                        jsonObj.put(columnName, htmlEncodeByRegExp(rs.getString(columnName)));
                    }else {
                        jsonObj.put(columnName, rs.getString(columnName));
                    }
                }
                if(type == Types.TINYINT) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getInt(columnName));
                }
                if(type == Types.SMALLINT) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getInt(columnName));
                }
                if(type == Types.DATE) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getDate(columnName));
                }
                if(type == Types.TIMESTAMP) { // å¦‚果是rs.getInt
                    jsonObj.put(columnName, rs.getTimestamp(columnName));
                }
            }
            array.put(jsonObj);
        }
        return array.toString();
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/JwtUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.landtool.lanbase.modules.api.utils;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
/**
 * @author lanbase
 * @Description: TODO(jwt工具类)
 * @date 2017-9-27 14:33
 */
@ConfigurationProperties(prefix = "sys.jwt")
@Component
public class JwtUtils {
    private Logger logger = LoggerFactory.getLogger(getClass());
    private String secret;
    private int expire;
    private String header;
    /**
     * ç”Ÿæˆjwt token
     * @param userId
     * @return
     */
    public String generateToken(long userId) {
        Date nowDate = new Date();
        //过期时间
        Date expireDate = new Date(nowDate.getTime() + expire * 1000);
        return Jwts.builder()
                .setHeaderParam("typ", "JWT")
                .setSubject(userId+"")
                .setIssuedAt(nowDate)
                .setExpiration(expireDate)
                .signWith(SignatureAlgorithm.HS512, secret)
                .compact();
    }
    public Claims getClaimByToken(String token) {
        try {
            return Jwts.parser()
                    .setSigningKey(secret)
                    .parseClaimsJws(token)
                    .getBody();
        }catch (Exception e){
            //logger.error("validate is token error", e.toString());
            return null;
        }
    }
    /**
     * token是否过期
     * @param expiration
     * @return
     */
    public boolean isTokenExpired(Date expiration) {
        return expiration.before(new Date());
    }
    public String getSecret() {
        return secret;
    }
    public void setSecret(String secret) {
        this.secret = secret;
    }
    public int getExpire() {
        return expire;
    }
    public void setExpire(int expire) {
        this.expire = expire;
    }
    public String getHeader() {
        return header;
    }
    public void setHeader(String header) {
        this.header = header;
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/PageBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
package com.landtool.lanbase.modules.api.utils;
import java.util.List;
public class PageBean<T> {
    // å½“前页
    private Integer currentPage = 1;
    // æ¯é¡µæ˜¾ç¤ºçš„æ€»æ¡æ•°
    private Integer pageSize = 10;
    // æ€»æ¡æ•°
    private Integer totalNum;
    // æ˜¯å¦æœ‰ä¸‹ä¸€é¡µ
    private Integer isMore;
    // æ€»é¡µæ•°
    private Integer totalPage;
    // å¼€å§‹ç´¢å¼•
    private Integer startIndex;
    // åˆ†é¡µç»“æžœ
    private List<T> items;
    //Ext插件传递页数
    private Integer page = 1;
    //Ext插件传递当前页起始序号
    private Integer start = 0;
    //Ext插件传递每页记录数
    private Integer limit = 10;
    public PageBean() {
        super();
    }
    public PageBean(Integer currentPage, Integer pageSize, Integer totalNum) {
        super();
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalNum = totalNum;
        this.totalPage = (this.totalNum + this.pageSize-1) / this.pageSize;
        this.startIndex = (this.currentPage - 1) * this.pageSize;
        this.isMore = this.currentPage >= this.totalPage ? 0 : 1;
    }
    public Integer getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(Integer currentPage) {
        this.currentPage = currentPage;
    }
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Integer getTotalNum() {
        return totalNum;
    }
    public void setTotalNum(Integer totalNum) {
        this.totalNum = totalNum;
    }
    public Integer getIsMore() {
        return isMore;
    }
    public void setIsMore(Integer isMore) {
        this.isMore = isMore;
    }
    public Integer getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }
    public Integer getStartIndex() {
        return startIndex;
    }
    public void setStartIndex(Integer startIndex) {
        this.startIndex = startIndex;
    }
    public Integer getPage() {
        return page;
    }
    public void setPage(Integer page) {
        this.page = page;
    }
    public Integer getStart() {
        return start;
    }
    public void setStart(Integer start) {
        this.start = start;
    }
    public Integer getLimit() {
        return limit;
    }
    public void setLimit(Integer limit) {
        this.limit = limit;
    }
    public List<T> getItems() {
        return items;
    }
    public void setItems(List<T> items) {
        this.items = items;
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/UpDate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.landtool.lanbase.modules.api.utils;
import java.sql.Timestamp;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import com.landtool.lanbase.modules.res.entity.Res_MainInfo;
import com.landtool.lanbase.modules.res.service.ResMainInfoService;
/**
 * @Author: lizhao
 * @Date: 2018-04-12 16:34
 * @param
 * @Description:更新
 *
 */
public class UpDate {
    @Autowired
    private ResMainInfoService resMainInfoService;
    public void lasteditdate(int id){
        Res_MainInfo resMainInfo=new Res_MainInfo();
        Timestamp audittime = new Timestamp(new Date().getTime());//获取当前时间
        resMainInfo.setLasteditdate(audittime);
        resMainInfo.setResourceid(id);
        resMainInfoService.updateByPrimaryKeySelective(resMainInfo);
    }
}
src/main/java/com/landtool/lanbase/modules/api/utils/fileSizeTest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.landtool.lanbase.modules.api.utils;
public class fileSizeTest {
    public static String getPrintSize(long size) {
        //如果字节数少于1024,则直接以B为单位,否则先除于1024,后3位因太少无意义
        if (size < 1024) {
            return String.valueOf(size) + "B";
        } else {
            size = size / 1024;
        }
        //如果原字节数除于1024之后,少于1024,则可以直接以KB作为单位
        //因为还没有到达要使用另一个单位的时候
        //接下去以此类推
        if (size < 1024) {
            return String.valueOf(size) + "KB";
        } else {
            size = size / 1024;
        }
        if (size < 1024) {
            //因为如果以MB为单位的话,要保留最后1位小数,
            //因此,把此数乘以100之后再取余
            size = size * 100;
            return String.valueOf((size / 100)) + "."
                    + String.valueOf((size % 100)) + "MB";
        } else {
            //否则如果要以GB为单位的,先除于1024再作同样的处理
            size = size * 100 / 1024;
            return String.valueOf((size / 100)) + "."
                    + String.valueOf((size % 100)) + "GB";
        }
    }
}
src/main/java/com/landtool/lanbase/modules/log/entity/LogAction.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,223 @@
package com.landtool.lanbase.modules.log.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(系统模块操作日志表)
 * @date 2018-01-16 09:18:41
 */
public class LogAction implements Serializable {
    // æ“ä½œID
    private Long actionid;
    // ç³»ç»Ÿç”¨æˆ·ID
    private Long userid;
    // åº”用程序ID
    private Long appid;
    // æ“ä½œæ—¶é—´
    private Date dodate;
    // æ‰€å±žå¤§æ¨¡å—名称
    private String largemodel;
    // å…·ä½“模块名称
    private String smallmodel;
    // è¯·æ±‚网址
    private String requesturl;
    // è¯·æ±‚客户端IP地址
    private String requestip;
    // æ“ä½œè¯´æ˜Ž
    private String remark;
    // æ“ä½œç±»åž‹
    private String actiontype;
    private String appfullname;
    private String loginname;
    private String chinesename;
    private Integer resourceid;
    private String title;
    public String getAppfullname() {
        return appfullname;
    }
    public void setAppfullname(String appfullname) {
        this.appfullname = appfullname;
    }
    public String getLoginname() {
        return loginname;
    }
    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œID
     */
    public void setActionid(Long actionid) {
        this.actionid = actionid;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œID
     */
    public Long getActionid() {
        return actionid;
    }
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }
    /**
     * èŽ·å–ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public Long getUserid() {
        return userid;
    }
    /**
     * è®¾ç½®ï¼šåº”用程序ID
     */
    public void setAppid(Long appid) {
        this.appid = appid;
    }
    /**
     * èŽ·å–ï¼šåº”ç”¨ç¨‹åºID
     */
    public Long getAppid() {
        return appid;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œæ—¶é—´
     */
    public void setDodate(Date dodate) {
        this.dodate = dodate;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œæ—¶é—´
     */
    public Date getDodate() {
        return dodate;
    }
    /**
     * è®¾ç½®ï¼šæ‰€å±žå¤§æ¨¡å—名称
     */
    public void setLargemodel(String largemodel) {
        this.largemodel = largemodel;
    }
    /**
     * èŽ·å–ï¼šæ‰€å±žå¤§æ¨¡å—åç§°
     */
    public String getLargemodel() {
        return largemodel;
    }
    /**
     * è®¾ç½®ï¼šå…·ä½“模块名称
     */
    public void setSmallmodel(String smallmodel) {
        this.smallmodel = smallmodel;
    }
    /**
     * èŽ·å–ï¼šå…·ä½“æ¨¡å—åç§°
     */
    public String getSmallmodel() {
        return smallmodel;
    }
    /**
     * è®¾ç½®ï¼šè¯·æ±‚网址
     */
    public void setRequesturl(String requesturl) {
        this.requesturl = requesturl;
    }
    /**
     * èŽ·å–ï¼šè¯·æ±‚ç½‘å€
     */
    public String getRequesturl() {
        return requesturl;
    }
    /**
     * è®¾ç½®ï¼šè¯·æ±‚客户端IP地址
     */
    public void setRequestip(String requestip) {
        this.requestip = requestip;
    }
    /**
     * èŽ·å–ï¼šè¯·æ±‚å®¢æˆ·ç«¯IP地址
     */
    public String getRequestip() {
        return requestip;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œè¯´æ˜Ž
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œè¯´æ˜Ž
     */
    public String getRemark() {
        return remark;
    }
    public String getChinesename() {
        return chinesename;
    }
    public void setChinesename(String chinesename) {
        this.chinesename = chinesename;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œç±»åž‹
     */
    public String getActiontype() {
        return actiontype;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œç±»åž‹
     */
    public void setActiontype(String actiontype) {
        this.actiontype = actiontype;
    }
    public Integer getResourceid() {
        return resourceid;
    }
    public void setResourceid(Integer resourceid) {
        this.resourceid = resourceid;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
}
src/main/java/com/landtool/lanbase/modules/log/entity/LogLogininfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
package com.landtool.lanbase.modules.log.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(登录及身份校验日志)
 * @date 2018-01-16 09:18:41
 */
public class LogLogininfo implements Serializable {
    //登录ID
    private Long loginid;
    //系统用户ID
    private Long userid;
    //应用程序ID
    private Long appid;
    //登录名
    private String loginname;
    //请求IP地址
    private String loginip;
    //操作时间
    private Date logindate;
    //操作类型1:登入/2:登出/3:Token校验
    private Long logintype;
    //操作状态0:成功/1:失败
    private Long rstatus;
    //用户访问浏览器版本
    private String broserversion;
    private String appfullname;
    private String chinesename;
    /**
     * è®¾ç½®ï¼šç™»å½•ID
     */
    public void setLoginid(Long loginid) {
        this.loginid = loginid;
    }
    /**
     * èŽ·å–ï¼šç™»å½•ID
     */
    public Long getLoginid() {
        return loginid;
    }
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }
    /**
     * èŽ·å–ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public Long getUserid() {
        return userid;
    }
    /**
     * è®¾ç½®ï¼šåº”用程序ID
     */
    public void setAppid(Long appid) {
        this.appid = appid;
    }
    /**
     * èŽ·å–ï¼šåº”ç”¨ç¨‹åºID
     */
    public Long getAppid() {
        return appid;
    }
    /**
     * è®¾ç½®ï¼šç™»å½•名
     */
    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }
    /**
     * èŽ·å–ï¼šç™»å½•å
     */
    public String getLoginname() {
        return loginname;
    }
    /**
     * è®¾ç½®ï¼šè¯·æ±‚IP地址
     */
    public void setLoginip(String loginip) {
        this.loginip = loginip;
    }
    /**
     * èŽ·å–ï¼šè¯·æ±‚IP地址
     */
    public String getLoginip() {
        return loginip;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œæ—¶é—´
     */
    public void setLogindate(Date logindate) {
        this.logindate = logindate;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œæ—¶é—´
     */
    public Date getLogindate() {
        return logindate;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œç±»åž‹1:登入/2:登出/3:Token校验
     */
    public void setLogintype(Long logintype) {
        this.logintype = logintype;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œç±»åž‹1:登入/2:登出/3:Token校验
     */
    public Long getLogintype() {
        return logintype;
    }
    /**
     * è®¾ç½®ï¼šæ“ä½œçŠ¶æ€0:成功/1:失败
     */
    public void setRstatus(Long rstatus) {
        this.rstatus = rstatus;
    }
    /**
     * èŽ·å–ï¼šæ“ä½œçŠ¶æ€0:成功/1:失败
     */
    public Long getRstatus() {
        return rstatus;
    }
    /**
     * è®¾ç½®ï¼šç”¨æˆ·è®¿é—®æµè§ˆå™¨ç‰ˆæœ¬
     */
    public void setBroserversion(String broserversion) {
        this.broserversion = broserversion;
    }
    /**
     * èŽ·å–ï¼šç”¨æˆ·è®¿é—®æµè§ˆå™¨ç‰ˆæœ¬
     */
    public String getBroserversion() {
        return broserversion;
    }
    public String getAppfullname() {
        return appfullname;
    }
    public void setAppfullname(String appfullname) {
        this.appfullname = appfullname;
    }
    public String getChinesename() {
        return chinesename;
    }
    public void setChinesename(String chinesename) {
        this.chinesename = chinesename;
    }
}
src/main/java/com/landtool/lanbase/modules/log/service/LogActionService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.landtool.lanbase.modules.log.service;
import com.landtool.lanbase.modules.log.entity.LogAction;
/**
 * @author lanbase
 * @Description: TODO(系统模块操作日志表)
 * @date 2018-01-16 09:18:41
 */
public interface LogActionService {
    void save(LogAction action);
    void saveLogAction(String action);
}
src/main/java/com/landtool/lanbase/modules/log/service/LogLogininfoService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.landtool.lanbase.modules.log.service;
import com.landtool.lanbase.modules.log.entity.LogLogininfo;
/**
 * @author lanbase
 * @Description: TODO(登录及身份校验日志)
 * @date 2018-01-16 09:18:41
 */
public interface LogLogininfoService {
     void save(LogLogininfo logininfo);
}
src/main/java/com/landtool/lanbase/modules/log/service/impl/LogActionServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.landtool.lanbase.modules.log.service.impl;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.landtool.lanbase.common.utils.HttpContextUtils;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.common.utils.IPUtils;
import com.landtool.lanbase.config.LoginConfigProperties;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.log.entity.LogAction;
import com.landtool.lanbase.modules.log.service.LogActionService;
import com.landtool.lanbase.modules.org.entity.OrgUser;
@Service("actionService")
public class LogActionServiceImpl implements LogActionService {
    @Autowired
    private SysTemPropertyConfig  tokenConfig;
    @Autowired
    private LoginConfigProperties loginConfig;
    @Override
    public void save(LogAction action){
        String url = tokenConfig.getApiServer()+"/api/log/action/addAction";
        try{
            HttpOperateUtils.httpPost(url,action);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void saveLogAction(String action) {
        String url = tokenConfig.getApiServer()+"/api/log/action/addAction";
        LogAction logAction = new LogAction();
        String[] list = action.split(",");
        logAction.setLargemodel(list[0]); //大模块
        logAction.setSmallmodel(list[1]);//小模块
        logAction.setRemark(list[2]);    //备注
        logAction.setActiontype(list[3]);//操作类型
        if(list.length == 5) {
            logAction.setUserid(Long.parseLong(list[4]));
        }
        else if(list.length == 4) {
            Long userid = ((OrgUser) SecurityUtils.getSubject().getPrincipal()).getUserid();
            logAction.setUserid(userid);
        }
        if(list.length == 6){
            logAction.setResourceid(Integer.valueOf(list[4]));
            logAction.setTitle(list[5]);
        }
        //获取request
        HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
        String ipurl = request.getServletPath();
        logAction.setRequesturl(ipurl);
        //设置IP地址
        logAction.setRequestip(IPUtils.getIpAddr(request));
        logAction.setAppid(loginConfig.getAppId());
        try{
            HttpOperateUtils.httpPost(url,logAction);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/modules/log/service/impl/LogLogininfoServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.landtool.lanbase.modules.log.service.impl;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.landtool.lanbase.common.utils.HttpOperateUtils;
import com.landtool.lanbase.config.SysTemPropertyConfig;
import com.landtool.lanbase.modules.log.entity.LogLogininfo;
import com.landtool.lanbase.modules.log.service.LogLogininfoService;
@Service("logininfoService")
public class LogLogininfoServiceImpl implements LogLogininfoService {
    @Autowired
    private SysTemPropertyConfig  tokenConfig;
    @Override
    public void save(LogLogininfo logininfo){
        String url = tokenConfig.getApiServer()+"/api/log/logininfo/addLoginInfo";
        try{
            HttpOperateUtils.httpPost(url,logininfo);
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,457 @@
package com.landtool.lanbase.modules.org.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(单位管理表)
 * @date 2018-01-16 08:47:23
 */
public class OrgUnit implements Serializable {
    //单位或部门ID
    private Long unitid;
    //单位父ID(顶级为0)
    private Long parentid;
    //单位名称
    private String unitname;
    //单位编码
    private String unidcode;
    //单位组织机构代码
    private String unidorgcode;
    //单位名称拼音首字母
    private String spellfirst;
    //单位简称
    private String unitshort;
    //单位类型(A:行政单位、B:监测单位、C信息中心)字典
    private String unittype;
    //记录排序
    private Long rorder;
    //联系电话
    private String contactnumber;
    //传真
    private String faxnumber;
    //E-Mail地址
    private String email;
    //单位地址
    private String address;
    //邮政编码
    private String postalcode;
    //图片路径
    private String photourl;
    //网站地址
    private String websiteurl;
    //机构状态1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
    private Long status;
    //地图比例尺
    private String mapscales;
    //X坐标
    private String mapcenterpointx;
    //Y坐标
    private String mapcenterpointy;
    //记录添加时间
    private Date rcreatedate;
    //记录添加人id
    private Long rcreateuser;
    //记录修改时间戳
    private Date rlasteditdate;
    //备注
    private String remark;
    //是否为部门 0单位 1部门
    private Long isdept;
    //非表中字段,列表展示用
    private String unittypetext;
    //区划id
    private String regionid;
    //区划名称
    private String regionname;
    //单位管理员ids
    private String managerids;
    //单位管理员names
    private String managernames;
    // ztree属性
    private Boolean open;
    public OrgUnit(){
    }
    public OrgUnit(Long unitid){
        this.unitid = unitid;
    }
    /**
     * è®¾ç½®ï¼šå•位或部门ID
     */
    public void setUnitid(Long unitid) {
        this.unitid = unitid;
    }
    /**
     * èŽ·å–ï¼šå•ä½æˆ–éƒ¨é—¨ID
     */
    public Long getUnitid() {
        return unitid;
    }
    /**
     * è®¾ç½®ï¼šå•位父ID(顶级为0)
     */
    public void setParentid(Long parentid) {
        this.parentid = parentid;
    }
    /**
     * èŽ·å–ï¼šå•ä½çˆ¶ID(顶级为0)
     */
    public Long getParentid() {
        return parentid;
    }
    /**
     * è®¾ç½®ï¼šå•位名称
     */
    public void setUnitname(String unitname) {
        this.unitname = unitname;
    }
    /**
     * èŽ·å–ï¼šå•ä½åç§°
     */
    public String getUnitname() {
        return unitname;
    }
    /**
     * è®¾ç½®ï¼šå•位编码
     */
    public void setUnidcode(String unidcode) {
        this.unidcode = unidcode;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç¼–ç 
     */
    public String getUnidcode() {
        return unidcode;
    }
    /**
     * è®¾ç½®ï¼šå•位组织机构代码
     */
    public void setUnidorgcode(String unidorgcode) {
        this.unidorgcode = unidorgcode;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç»„ç»‡æœºæž„ä»£ç 
     */
    public String getUnidorgcode() {
        return unidorgcode;
    }
    /**
     * è®¾ç½®ï¼šä¸­æ–‡æ‹¼éŸ³é¦–字母
     */
    public void setSpellfirst(String spellfirst) {
        this.spellfirst = spellfirst;
    }
    /**
     * èŽ·å–ï¼šä¸­æ–‡æ‹¼éŸ³é¦–å­—æ¯
     */
    public String getSpellfirst() {
        return spellfirst;
    }
    /**
     * è®¾ç½®ï¼šå•位简称
     */
    public void setUnitshort(String unitshort) {
        this.unitshort = unitshort;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç®€ç§°
     */
    public String getUnitshort() {
        return unitshort;
    }
    /**
     * è®¾ç½®ï¼šå•位类型(A:行政单位、B:监测单位、C信息中心)字典
     */
    public void setUnittype(String unittype) {
        this.unittype = unittype;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç±»åž‹(A:行政单位、B:监测单位、C信息中心)字典
     */
    public String getUnittype() {
        return unittype;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•排序
     */
    public void setRorder(Long rorder) {
        this.rorder = rorder;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æŽ’åº
     */
    public Long getRorder() {
        return rorder;
    }
    /**
     * è®¾ç½®ï¼šè”系电话
     */
    public void setContactnumber(String contactnumber) {
        this.contactnumber = contactnumber;
    }
    /**
     * èŽ·å–ï¼šè”ç³»ç”µè¯
     */
    public String getContactnumber() {
        return contactnumber;
    }
    /**
     * è®¾ç½®ï¼šä¼ çœŸ
     */
    public void setFaxnumber(String faxnumber) {
        this.faxnumber = faxnumber;
    }
    /**
     * èŽ·å–ï¼šä¼ çœŸ
     */
    public String getFaxnumber() {
        return faxnumber;
    }
    /**
     * è®¾ç½®ï¼šE-Mail地址
     */
    public void setEmail(String email) {
        this.email = email;
    }
    /**
     * èŽ·å–ï¼šE-Mail地址
     */
    public String getEmail() {
        return email;
    }
    /**
     * è®¾ç½®ï¼šå•位地址
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /**
     * èŽ·å–ï¼šå•ä½åœ°å€
     */
    public String getAddress() {
        return address;
    }
    /**
     * è®¾ç½®ï¼šé‚®æ”¿ç¼–码
     */
    public void setPostalcode(String postalcode) {
        this.postalcode = postalcode;
    }
    /**
     * èŽ·å–ï¼šé‚®æ”¿ç¼–ç 
     */
    public String getPostalcode() {
        return postalcode;
    }
    /**
     * è®¾ç½®ï¼šå›¾ç‰‡è·¯å¾„
     */
    public void setPhotourl(String photourl) {
        this.photourl = photourl;
    }
    /**
     * èŽ·å–ï¼šå›¾ç‰‡è·¯å¾„
     */
    public String getPhotourl() {
        return photourl;
    }
    /**
     * è®¾ç½®ï¼šç½‘站地址
     */
    public void setWebsiteurl(String websiteurl) {
        this.websiteurl = websiteurl;
    }
    /**
     * èŽ·å–ï¼šç½‘ç«™åœ°å€
     */
    public String getWebsiteurl() {
        return websiteurl;
    }
    /**
     * è®¾ç½®ï¼šæœºæž„状态1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
     */
    public void setStatus(Long status) {
        this.status = status;
    }
    /**
     * èŽ·å–ï¼šæœºæž„çŠ¶æ€1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
     */
    public Long getStatus() {
        return status;
    }
    /**
     * è®¾ç½®ï¼šåœ°å›¾æ¯”例尺
     */
    public void setMapscales(String mapscales) {
        this.mapscales = mapscales;
    }
    /**
     * èŽ·å–ï¼šåœ°å›¾æ¯”ä¾‹å°º
     */
    public String getMapscales() {
        return mapscales;
    }
    /**
     * è®¾ç½®ï¼šX坐标
     */
    public void setMapcenterpointx(String mapcenterpointx) {
        this.mapcenterpointx = mapcenterpointx;
    }
    /**
     * èŽ·å–ï¼šX坐标
     */
    public String getMapcenterpointx() {
        return mapcenterpointx;
    }
    /**
     * è®¾ç½®ï¼šY坐标
     */
    public void setMapcenterpointy(String mapcenterpointy) {
        this.mapcenterpointy = mapcenterpointy;
    }
    /**
     * èŽ·å–ï¼šY坐标
     */
    public String getMapcenterpointy() {
        return mapcenterpointy;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Date getRcreatedate() {
        return rcreatedate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人id
     */
    public void setRcreateuser(Long rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººid
     */
    public Long getRcreateuser() {
        return rcreateuser;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•修改时间戳
     */
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•ä¿®æ”¹æ—¶é—´æˆ³
     */
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
    /**
     * è®¾ç½®ï¼šå¤‡æ³¨
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
    /**
     * èŽ·å–ï¼šå¤‡æ³¨
     */
    public String getRemark() {
        return remark;
    }
    /**
     * è®¾ç½®ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public void setIsdept(Long isdept) {
        this.isdept = isdept;
    }
    /**
     * èŽ·å–ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public Long getIsdept() {
        return isdept;
    }
    /**
     * è®¾ç½®ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public void setunittypetext(String unittypetext) {
        this.unittypetext = unittypetext;
    }
    /**
     * èŽ·å–ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public String getunittypetext() {
        return unittypetext;
    }
    /**
     * è®¾ç½®ï¼šåŒºåˆ’id
     */
    public void setRegionid(String regionid) {
        this.regionid = regionid;
    }
    /**
     * èŽ·å–ï¼šåŒºåˆ’id
     */
    public String getRegionid() {
        return regionid;
    }
    /**
     * è®¾ç½®ï¼šå•位管理员ids
     */
    public void setmanagerids(String managerids) {
        this.managerids = managerids;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç®¡ç†å‘˜ids
     */
    public String getmanagerids() {
        return managerids;
    }
    /**
     * è®¾ç½®ï¼šå•位管理员names
     */
    public void setmanagernames(String managernames) {
        this.managernames = managernames;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç®¡ç†å‘˜names
     */
    public String getmanagernames() {
        return managernames;
    }
    /**
     * è®¾ç½®ï¼šåŒºåˆ’名称
     */
    public void setRegionname(String regionname) {
        this.regionname = regionname;
    }
    /**
     * èŽ·å–ï¼šåŒºåˆ’åç§°
     */
    public String getRegionname() {
        return regionname;
    }
    /**
     * è®¾ç½®ï¼šztree属性
     */
    public void setOpen(Boolean open) {
        this.open = open;
    }
    /**
     * èŽ·å–ï¼šztree属性
     */
    public Boolean getOpen() {
        return open;
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnitJoinRegion.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,374 @@
package com.landtool.lanbase.modules.org.entity;
import java.util.Date;
import java.util.List;
/**
 * @Description: å•位关联行政的POJO{@link OrgUnit}{@link OrgRegion}
 * @Author: bing.guo
 * @Date: 15:46 2018/1/31
 *
 */
public class OrgUnitJoinRegion {
    //单位或部门ID
    private Long unitid;
    //单位父ID(顶级为0)
    private Long parentid;
    //单位名称
    private String unitname;
    //单位编码
    private String unidcode;
    //单位组织机构代码
    private String unidorgcode;
    //单位名称拼音首字母
    private String spellfirst;
    //单位简称
    private String unitshort;
    //单位类型(A:行政单位、B:监测单位、C信息中心)字典
    private String unittype;
    //记录排序
    private String rorder;
    //联系电话
    private String contactnumber;
    //传真
    private String faxnumber;
    //E-Mail地址
    private String email;
    //单位地址
    private String address;
    //邮政编码
    private String postalcode;
    //图片路径
    private String photourl;
    //网站地址
    private String websiteurl;
    //机构状态1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
    private Long status;
    //地图比例尺
    private String mapscales;
    //X坐标
    private String mapcenterpointx;
    //Y坐标
    private String mapcenterpointy;
    //记录添加时间
    private Date rcreatedate;
    //记录添加人中文名
    private Long rcreateuser;
    //记录修改时间戳
    private Date rlasteditdate;
    //备注
    private String remark;
    //是否为部门 0单位 1部门
    private Long isdept;
     //所属行政对象
    private List<OrgUnitRegion> orgunitregion;
    /**
     * è®¾ç½®ï¼šå•位或部门ID
     */
    public void setUnitid(Long unitid) {
        this.unitid = unitid;
    }
    /**
     * èŽ·å–ï¼šå•ä½æˆ–éƒ¨é—¨ID
     */
    public Long getUnitid() {
        return unitid;
    }
    /**
     * è®¾ç½®ï¼šå•位父ID(顶级为0)
     */
    public void setParentid(Long parentid) {
        this.parentid = parentid;
    }
    /**
     * èŽ·å–ï¼šå•ä½çˆ¶ID(顶级为0)
     */
    public Long getParentid() {
        return parentid;
    }
    /**
     * è®¾ç½®ï¼šå•位名称
     */
    public void setUnitname(String unitname) {
        this.unitname = unitname;
    }
    /**
     * èŽ·å–ï¼šå•ä½åç§°
     */
    public String getUnitname() {
        return unitname;
    }
    /**
     * è®¾ç½®ï¼šå•位编码
     */
    public void setUnidcode(String unidcode) {
        this.unidcode = unidcode;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç¼–ç 
     */
    public String getUnidcode() {
        return unidcode;
    }
    /**
     * è®¾ç½®ï¼šå•位组织机构代码
     */
    public void setUnidorgcode(String unidorgcode) {
        this.unidorgcode = unidorgcode;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç»„ç»‡æœºæž„ä»£ç 
     */
    public String getUnidorgcode() {
        return unidorgcode;
    }
    /**
     * è®¾ç½®ï¼šå•位名称拼音首字母
     */
    public void setSpellfirst(String spellfirst) {
        this.spellfirst = spellfirst;
    }
    /**
     * èŽ·å–ï¼šå•ä½åç§°æ‹¼éŸ³é¦–å­—æ¯
     */
    public String getSpellfirst() {
        return spellfirst;
    }
    /**
     * è®¾ç½®ï¼šå•位简称
     */
    public void setUnitshort(String unitshort) {
        this.unitshort = unitshort;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç®€ç§°
     */
    public String getUnitshort() {
        return unitshort;
    }
    /**
     * è®¾ç½®ï¼šå•位类型(A:行政单位、B:监测单位、C信息中心)字典
     */
    public void setUnittype(String unittype) {
        this.unittype = unittype;
    }
    /**
     * èŽ·å–ï¼šå•ä½ç±»åž‹(A:行政单位、B:监测单位、C信息中心)字典
     */
    public String getUnittype() {
        return unittype;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•排序
     */
    public void setRorder(String rorder) {
        this.rorder = rorder;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æŽ’åº
     */
    public String getRorder() {
        return rorder;
    }
    /**
     * è®¾ç½®ï¼šè”系电话
     */
    public void setContactnumber(String contactnumber) {
        this.contactnumber = contactnumber;
    }
    /**
     * èŽ·å–ï¼šè”ç³»ç”µè¯
     */
    public String getContactnumber() {
        return contactnumber;
    }
    /**
     * è®¾ç½®ï¼šä¼ çœŸ
     */
    public void setFaxnumber(String faxnumber) {
        this.faxnumber = faxnumber;
    }
    /**
     * èŽ·å–ï¼šä¼ çœŸ
     */
    public String getFaxnumber() {
        return faxnumber;
    }
    /**
     * è®¾ç½®ï¼šE-Mail地址
     */
    public void setEmail(String email) {
        this.email = email;
    }
    /**
     * èŽ·å–ï¼šE-Mail地址
     */
    public String getEmail() {
        return email;
    }
    /**
     * è®¾ç½®ï¼šå•位地址
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /**
     * èŽ·å–ï¼šå•ä½åœ°å€
     */
    public String getAddress() {
        return address;
    }
    /**
     * è®¾ç½®ï¼šé‚®æ”¿ç¼–码
     */
    public void setPostalcode(String postalcode) {
        this.postalcode = postalcode;
    }
    /**
     * èŽ·å–ï¼šé‚®æ”¿ç¼–ç 
     */
    public String getPostalcode() {
        return postalcode;
    }
    /**
     * è®¾ç½®ï¼šå›¾ç‰‡è·¯å¾„
     */
    public void setPhotourl(String photourl) {
        this.photourl = photourl;
    }
    /**
     * èŽ·å–ï¼šå›¾ç‰‡è·¯å¾„
     */
    public String getPhotourl() {
        return photourl;
    }
    /**
     * è®¾ç½®ï¼šç½‘站地址
     */
    public void setWebsiteurl(String websiteurl) {
        this.websiteurl = websiteurl;
    }
    /**
     * èŽ·å–ï¼šç½‘ç«™åœ°å€
     */
    public String getWebsiteurl() {
        return websiteurl;
    }
    /**
     * è®¾ç½®ï¼šæœºæž„状态1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
     */
    public void setStatus(Long status) {
        this.status = status;
    }
    /**
     * èŽ·å–ï¼šæœºæž„çŠ¶æ€1 è¡¨ç¤ºæ­£å¸¸ã€2 åˆ é™¤ã€9 è¡¨ç¤ºæ³¨é”€
     */
    public Long getStatus() {
        return status;
    }
    /**
     * è®¾ç½®ï¼šåœ°å›¾æ¯”例尺
     */
    public void setMapscales(String mapscales) {
        this.mapscales = mapscales;
    }
    /**
     * èŽ·å–ï¼šåœ°å›¾æ¯”ä¾‹å°º
     */
    public String getMapscales() {
        return mapscales;
    }
    /**
     * è®¾ç½®ï¼šX坐标
     */
    public void setMapcenterpointx(String mapcenterpointx) {
        this.mapcenterpointx = mapcenterpointx;
    }
    /**
     * èŽ·å–ï¼šX坐标
     */
    public String getMapcenterpointx() {
        return mapcenterpointx;
    }
    /**
     * è®¾ç½®ï¼šY坐标
     */
    public void setMapcenterpointy(String mapcenterpointy) {
        this.mapcenterpointy = mapcenterpointy;
    }
    /**
     * èŽ·å–ï¼šY坐标
     */
    public String getMapcenterpointy() {
        return mapcenterpointy;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Date getRcreatedate() {
        return rcreatedate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人中文名
     */
    public void setRcreateuser(Long rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººä¸­æ–‡å
     */
    public Long getRcreateuser() {
        return rcreateuser;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•修改时间戳
     */
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•ä¿®æ”¹æ—¶é—´æˆ³
     */
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
    /**
     * è®¾ç½®ï¼šå¤‡æ³¨
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
    /**
     * èŽ·å–ï¼šå¤‡æ³¨
     */
    public String getRemark() {
        return remark;
    }
    /**
     * è®¾ç½®ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public void setIsdept(Long isdept) {
        this.isdept = isdept;
    }
    /**
     * èŽ·å–ï¼šæ˜¯å¦ä¸ºéƒ¨é—¨ 0单位 1部门
     */
    public Long getIsdept() {
        return isdept;
    }
    public List<OrgUnitRegion> getOrgunitregion() {
        return orgunitregion;
    }
    public void setOrgunitregion(List<OrgUnitRegion> orgunitregion) {
        this.orgunitregion = orgunitregion;
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUnitRegion.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.landtool.lanbase.modules.org.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(单位管辖范围,对应行政区划表,单位管辖范围变化时,修改单位时间戳信息)
 * @date 2018-01-16 09:26:18
 */
public class OrgUnitRegion implements Serializable {
    //区划自编码
    private String regionid;
    //单位ID
    private Long unitid;
    //记录添加人中文名
    private Date rcreatedate;
    //记录添加时间
    private Long rcreateuser;
    //记录修改时间戳
    private Date rlasteditdate;
    /**
     * è®¾ç½®ï¼šåŒºåˆ’自编码
     */
    public void setRegionid(String regionid) {
        this.regionid = regionid;
    }
    /**
     * èŽ·å–ï¼šåŒºåˆ’è‡ªç¼–ç 
     */
    public String getRegionid() {
        return regionid;
    }
    /**
     * è®¾ç½®ï¼šå•位ID
     */
    public void setUnitid(Long unitid) {
        this.unitid = unitid;
    }
    /**
     * èŽ·å–ï¼šå•ä½ID
     */
    public Long getUnitid() {
        return unitid;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人中文名
     */
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººä¸­æ–‡å
     */
    public Date getRcreatedate() {
        return rcreatedate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setRcreateuser(Long rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Long getRcreateuser() {
        return rcreateuser;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•修改时间戳
     */
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•ä¿®æ”¹æ—¶é—´æˆ³
     */
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,357 @@
package com.landtool.lanbase.modules.org.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(用户管理表)
 * @date 2018-01-17 09:37:59
 */
public class OrgUser  implements Serializable {
    //系统用户ID
    private Long userid;
    //系统登录名
    private String loginname;
    //密码MD5加密并反转
    private String password;
    //中文名
    private String chinesename;
    //中文拼音首字母
    private String spellfirst;
    //状态 0 æ­£å¸¸ 1 ç¦ç”¨ 2 åˆ é™¤ 3申请 4拒批
    private Long userstatus;
    //手机号
    private String mobileno;
    //是否接收短信
    private Long isreceivemsg;
    //办公室电话
    private String officetel;
    //EMAIL地址
    private String email;
    //通讯地址
    private String address;
    //身份证号
    private String idcard;
    //籍贯
    private String nativeplace;
    //性别
    private Long sex;
    //照片路径
    private String photourl;
    //学历
    private String education;
    //所学专业
    private String speciality;
    //职称名称(高级、中级、助理)字典
    private Long jobtitle;
    //职务级别(部长/厅长/处长/科长/科员)字典
    private String joblevel;
    //记录添加人id
    private Long rcreateuser;
    //记录添加时间
    private Date rcreatedate;
    //记录修改时间戳
    private Date rlasteditdate;
    //备注
    private String remark;
    //附件
    private String certificateurl;
    public OrgUser(){}
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }
    /**
     * èŽ·å–ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public Long getUserid() {
        return userid;
    }
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç™»å½•名
     */
    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }
    /**
     * èŽ·å–ï¼šç³»ç»Ÿç™»å½•å
     */
    public String getLoginname() {
        return loginname;
    }
    /**
     * è®¾ç½®ï¼šå¯†ç MD5加密并反转
     */
    public void setPassword(String password) {
        this.password = password;
    }
    /**
     * èŽ·å–ï¼šå¯†ç MD5加密并反转
     */
    public String getPassword() {
        return password;
    }
    /**
     * è®¾ç½®ï¼šä¸­æ–‡å
     */
    public void setChinesename(String chinesename) {
        this.chinesename = chinesename;
    }
    /**
     * èŽ·å–ï¼šä¸­æ–‡å
     */
    public String getChinesename() {
        return chinesename;
    }
    /**
     * è®¾ç½®ï¼šä¸­æ–‡æ‹¼éŸ³é¦–字母
     */
    public void setSpellfirst(String spellfirst) {
        this.spellfirst = spellfirst;
    }
    /**
     * èŽ·å–ï¼šä¸­æ–‡æ‹¼éŸ³é¦–å­—æ¯
     */
    public String getSpellfirst() {
        return spellfirst;
    }
    /**
     * è®¾ç½®ï¼šçŠ¶æ€ 0 æ­£å¸¸ 1 ç¦ç”¨ 2 åˆ é™¤ 3申请 4拒批
     */
    public void setUserstatus(Long userstatus) {
        this.userstatus = userstatus;
    }
    /**
     * èŽ·å–ï¼šçŠ¶æ€ 0 æ­£å¸¸ 1 ç¦ç”¨ 2 åˆ é™¤ 3申请 4拒批
     */
    public Long getUserstatus() {
        return userstatus;
    }
    /**
     * è®¾ç½®ï¼šæ‰‹æœºå·
     */
    public void setMobileno(String mobileno) {
        this.mobileno = mobileno;
    }
    /**
     * èŽ·å–ï¼šæ‰‹æœºå·
     */
    public String getMobileno() {
        return mobileno;
    }
    /**
     * è®¾ç½®ï¼šæ˜¯å¦æŽ¥æ”¶çŸ­ä¿¡
     */
    public void setIsreceivemsg(Long isreceivemsg) {
        this.isreceivemsg = isreceivemsg;
    }
    /**
     * èŽ·å–ï¼šæ˜¯å¦æŽ¥æ”¶çŸ­ä¿¡
     */
    public Long getIsreceivemsg() {
        return isreceivemsg;
    }
    /**
     * è®¾ç½®ï¼šåŠžå…¬å®¤ç”µè¯
     */
    public void setOfficetel(String officetel) {
        this.officetel = officetel;
    }
    /**
     * èŽ·å–ï¼šåŠžå…¬å®¤ç”µè¯
     */
    public String getOfficetel() {
        return officetel;
    }
    /**
     * è®¾ç½®ï¼šEMAIL地址
     */
    public void setEmail(String email) {
        this.email = email;
    }
    /**
     * èŽ·å–ï¼šEMAIL地址
     */
    public String getEmail() {
        return email;
    }
    /**
     * è®¾ç½®ï¼šé€šè®¯åœ°å€
     */
    public void setAddress(String address) {
        this.address = address;
    }
    /**
     * èŽ·å–ï¼šé€šè®¯åœ°å€
     */
    public String getAddress() {
        return address;
    }
    /**
     * è®¾ç½®ï¼šèº«ä»½è¯å·
     */
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    /**
     * èŽ·å–ï¼šèº«ä»½è¯å·
     */
    public String getIdcard() {
        return idcard;
    }
    /**
     * è®¾ç½®ï¼šç±è´¯
     */
    public void setNativeplace(String nativeplace) {
        this.nativeplace = nativeplace;
    }
    /**
     * èŽ·å–ï¼šç±è´¯
     */
    public String getNativeplace() {
        return nativeplace;
    }
    /**
     * è®¾ç½®ï¼šæ€§åˆ«
     */
    public void setSex(Long sex) {
        this.sex = sex;
    }
    /**
     * èŽ·å–ï¼šæ€§åˆ«
     */
    public Long getSex() {
        return sex;
    }
    /**
     * è®¾ç½®ï¼šç…§ç‰‡è·¯å¾„
     */
    public void setPhotourl(String photourl) {
        this.photourl = photourl;
    }
    /**
     * èŽ·å–ï¼šç…§ç‰‡è·¯å¾„
     */
    public String getPhotourl() {
        return photourl;
    }
    /**
     * è®¾ç½®ï¼šå­¦åކ
     */
    public void setEducation(String education) {
        this.education = education;
    }
    /**
     * èŽ·å–ï¼šå­¦åŽ†
     */
    public String getEducation() {
        return education;
    }
    /**
     * è®¾ç½®ï¼šæ‰€å­¦ä¸“业
     */
    public void setSpeciality(String speciality) {
        this.speciality = speciality;
    }
    /**
     * èŽ·å–ï¼šæ‰€å­¦ä¸“ä¸š
     */
    public String getSpeciality() {
        return speciality;
    }
    /**
     * è®¾ç½®ï¼šèŒç§°åç§°(高级、中级、助理)字典
     */
    public void setJobtitle(Long jobtitle) {
        this.jobtitle = jobtitle;
    }
    /**
     * èŽ·å–ï¼šèŒç§°åç§°(高级、中级、助理)字典
     */
    public Long getJobtitle() {
        return jobtitle;
    }
    /**
     * è®¾ç½®ï¼šèŒåŠ¡çº§åˆ«ï¼ˆéƒ¨é•¿/厅长/处长/科长/科员)字典
     */
    public void setJoblevel(String joblevel) {
        this.joblevel = joblevel;
    }
    /**
     * èŽ·å–ï¼šèŒåŠ¡çº§åˆ«ï¼ˆéƒ¨é•¿/厅长/处长/科长/科员)字典
     */
    public String getJoblevel() {
        return joblevel;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人id
     */
    public void setRcreateuser(Long rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººid
     */
    public Long getRcreateuser() {
        return rcreateuser;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Date getRcreatedate() {
        return rcreatedate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•修改时间戳
     */
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•ä¿®æ”¹æ—¶é—´æˆ³
     */
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
    /**
     * è®¾ç½®ï¼šå¤‡æ³¨
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
    /**
     * èŽ·å–ï¼šå¤‡æ³¨
     */
    public String getRemark() {
        return remark;
    }
    /**
     * è®¾ç½®ï¼šé™„ä»¶
     */
    public void setCertificateurl(String certificateurl) {
        this.certificateurl = certificateurl;
    }
    /**
     * èŽ·å–ï¼šé™„ä»¶
     */
    public String getCertificateurl() {
        return certificateurl;
    }
    @Override
    public String toString() {
        return getLoginname();
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserGroup.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
package com.landtool.lanbase.modules.org.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author zimao.guo
 * @Description: TODO(用户与群组关联表)
 * @date 2018-03-14 16:35:05
 */
public class OrgUserGroup implements Serializable {
    //用户id
    private Long userId;
    //群组ID
    private Long groupId;
    //角色分配单位ID
    private Long createUnitId;
    //记录添加时间
    private Date rCreateDate;
    //记录添加人中文名
    private Long rCreateUser;
    /**
     * è®¾ç½®ï¼šç”¨æˆ·id
     */
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    /**
     * èŽ·å–ï¼šç”¨æˆ·id
     */
    public Long getUserId() {
        return userId;
    }
    /**
     * è®¾ç½®ï¼šç¾¤ç»„ID
     */
    public void setGroupId(Long groupId) {
        this.groupId = groupId;
    }
    /**
     * èŽ·å–ï¼šç¾¤ç»„ID
     */
    public Long getGroupId() {
        return groupId;
    }
    /**
     * è®¾ç½®ï¼šè§’色分配单位ID
     */
    public void setCreateUnitId(Long createUnitId) {
        this.createUnitId = createUnitId;
    }
    /**
     * èŽ·å–ï¼šè§’è‰²åˆ†é…å•ä½ID
     */
    public Long getCreateUnitId() {
        return createUnitId;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setrCreateDate(Date rCreateDate) {
        this.rCreateDate = rCreateDate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Date getrCreateDate() {
        return rCreateDate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人中文名
     */
    public void setrCreateUser(Long rCreateUser) {
        this.rCreateUser = rCreateUser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººä¸­æ–‡å
     */
    public Long getrCreateUser() {
        return rCreateUser;
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserJoinUnit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,288 @@
package com.landtool.lanbase.modules.org.entity;
import java.util.Date;
import java.util.List;
/**
 * @Description: ç”¨æˆ·å…³è”单位的POJO {@link OrgUser}{@link OrgUnit}
 * @Author: zimao.guo
 * @Date: 15:46 2018/1/31
 *
 */
public class OrgUserJoinUnit {
    //系统用户ID
    private int userid;
    //系统登录名
    private String loginname;
    //密码MD5加密并反转
    private String password;
    //中文名
    private String chinesename;
    //中文拼音首字母
    private String spellfirst;
    //状态 0 æ­£å¸¸ 1 ç¦ç”¨ 2 åˆ é™¤ 3申请 4拒批
    private Long userstatus;
    //手机号
    private String mobileno;
    //是否接收短信
    private Long isreceivemsg;
    //办公室电话
    private String officetel;
    //EMAIL地址
    private String email;
    //通讯地址
    private String address;
    //身份证号
    private String idcard;
    //籍贯
    private String nativeplace;
    //性别
    private Long sex;
    //照片路径
    private String photourl;
    //学历
    private String education;
    //所学专业
    private String speciality;
    //职称名称(高级、中级、助理)字典
    private Long jobtitle;
    //职务级别(部长/厅长/处长/科长/科员)字典
    private String joblevel;
    //记录添加人中文名
    private String rcreateuser;
    //记录添加时间
    private Date rcreatedate;
    //记录修改时间戳
    private Date rlasteditdate;
    //备注
    private String remark;
    //附件
      private String certificateurl;
    //盐 ç”¨äºŽåŠ å¯†æ—¶å¢žåŠ ç ´è§£éš¾åº¦
//    private String salt;
    //所属单位对象列表
    private List<OrgUserunit> orguserunits;
    //所属群组对象列表
    private List<OrgUserGroup> orgusergroup;
    public int getUserid() {
        return userid;
    }
    public void setUserid(int userid) {
        this.userid = userid;
    }
    public String getLoginname() {
        return loginname;
    }
    public void setLoginname(String loginname) {
        this.loginname = loginname;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getChinesename() {
        return chinesename;
    }
    public void setChinesename(String chinesename) {
        this.chinesename = chinesename;
    }
    public String getPinyinfirst() {
        return spellfirst;
    }
    public void setPinyinfirst(String spellfirst) {
        this.spellfirst = spellfirst;
    }
    public Long getUserstatus() {
        return userstatus;
    }
    public void setUserstatus(Long userstatus) {
        this.userstatus = userstatus;
    }
    public String getMobileno() {
        return mobileno;
    }
    public void setMobileno(String mobileno) {
        this.mobileno = mobileno;
    }
    public Long getIsreceivemsg() {
        return isreceivemsg;
    }
    public void setIsreceivemsg(Long isreceivemsg) {
        this.isreceivemsg = isreceivemsg;
    }
    public String getOfficetel() {
        return officetel;
    }
    public void setOfficetel(String officetel) {
        this.officetel = officetel;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getIdcard() {
        return idcard;
    }
    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }
    public String getNativeplace() {
        return nativeplace;
    }
    public void setNativeplace(String nativeplace) {
        this.nativeplace = nativeplace;
    }
    public Long getSex() {
        return sex;
    }
    public void setSex(Long sex) {
        this.sex = sex;
    }
    public String getPhotourl() {
        return photourl;
    }
    public void setPhotourl(String photourl) {
        this.photourl = photourl;
    }
    public String getEducation() {
        return education;
    }
    public void setEducation(String education) {
        this.education = education;
    }
    public String getSpeciality() {
        return speciality;
    }
    public void setSpeciality(String speciality) {
        this.speciality = speciality;
    }
    public Long getJobtitle() {
        return jobtitle;
    }
    public void setJobtitle(Long jobtitle) {
        this.jobtitle = jobtitle;
    }
    public String getJoblevel() {
        return joblevel;
    }
    public void setJoblevel(String joblevel) {
        this.joblevel = joblevel;
    }
    public String getRcreateuser() {
        return rcreateuser;
    }
    public void setRcreateuser(String rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    public Date getRcreatedate() {
        return rcreatedate;
    }
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
//    public String getSalt() {
//        return salt;
//    }
//
//    public void setSalt(String salt) {
//        this.salt = salt;
//    }
    public List<OrgUserunit> getOrguserunits() {
        return orguserunits;
    }
    public void setOrguserunits(List<OrgUserunit> orguserunits) {
        this.orguserunits = orguserunits;
    }
    public List<OrgUserGroup> getOrgusergroup() {
        return orgusergroup;
    }
    public void setOrgusergroup(List<OrgUserGroup> orgusergroup) {
        this.orgusergroup = orgusergroup;
    }
    /**
     * è®¾ç½®ï¼šé™„ä»¶
     */
    public void setCertificateurl(String certificateurl) {
        this.certificateurl = certificateurl;
    }
    /**
     * èŽ·å–ï¼šé™„ä»¶
     */
    public String getCertificateurl() {
        return certificateurl;
    }
}
src/main/java/com/landtool/lanbase/modules/org/entity/OrgUserunit.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,266 @@
package com.landtool.lanbase.modules.org.entity;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lanbase
 * @Description: TODO(用户单位关联表,用户与单位关联信息修改时,同步修改用户时间戳信息。)
 * @date 2018-01-16 09:43:06
 */
public class OrgUserunit implements Serializable {
    //系统用户ID
    private Long userid;
    //单位ID
    private Long unitid;
    //记录排序
    private String rorder;
    //职务名称
    private String posname;
    //从事本职工作时间
    private Date workseasdate;
    //在职情况1 è¡¨ç¤ºåœ¨èŒã€3 è¡¨ç¤ºå€Ÿè°ƒã€5 è¡¨ç¤ºç¦»èŒ
    private String worktype;
    //到职日期
    private Date workstartdate;
    //离职日期
    private Date workenddate;
    //记录添加人ID
    private Long rcreateuser;
    //记录添加时间
    private Date rcreatedate;
    //记录修改时间戳
    private Date rlasteditdate;
    //单位名称
    private String unitname;
    //用户中文名
    private String username;
    //编号
    private Long rn;
    //从事本职工作时间
    private String workseasdatestr;
    //到职日期
    private String workstartdatestr;
    //离职日期
    private String workenddatestr;
    //旧单位id
    private Long oldunitid;
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public Long getUserid() {
        return userid;
    }
    /**
     * è®¾ç½®ï¼šç³»ç»Ÿç”¨æˆ·ID
     */
    public void setUserid(Long userid) {
        this.userid = userid;
    }
    /**
     * è®¾ç½®ï¼šå•位ID
     */
    public void setUnitid(Long unitid) {
        this.unitid = unitid;
    }
    /**
     * èŽ·å–ï¼šå•ä½ID
     */
    public Long getUnitid() {
        return unitid;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•排序
     */
    public void setRorder(String rorder) {
        this.rorder = rorder;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æŽ’åº
     */
    public String getRorder() {
        return rorder;
    }
    /**
     * è®¾ç½®ï¼šèŒåŠ¡åç§°
     */
    public void setPosname(String posname) {
        this.posname = posname;
    }
    /**
     * èŽ·å–ï¼šèŒåŠ¡åç§°
     */
    public String getPosname() {
        return posname;
    }
    /**
     * è®¾ç½®ï¼šä»Žäº‹æœ¬èŒå·¥ä½œæ—¶é—´
     */
    public void setWorkseasdate(Date workseasdate) {
        this.workseasdate = workseasdate;
    }
    /**
     * èŽ·å–ï¼šä»Žäº‹æœ¬èŒå·¥ä½œæ—¶é—´
     */
    public Date getWorkseasdate() {
        return workseasdate;
    }
    /**
     * è®¾ç½®ï¼šåœ¨èŒæƒ…况1 è¡¨ç¤ºåœ¨èŒã€3 è¡¨ç¤ºå€Ÿè°ƒã€5 è¡¨ç¤ºç¦»èŒ
     */
    public void setWorktype(String worktype) {
        this.worktype = worktype;
    }
    /**
     * èŽ·å–ï¼šåœ¨èŒæƒ…å†µ1 è¡¨ç¤ºåœ¨èŒã€3 è¡¨ç¤ºå€Ÿè°ƒã€5 è¡¨ç¤ºç¦»èŒ
     */
    public String getWorktype() {
        return worktype;
    }
    /**
     * è®¾ç½®ï¼šåˆ°èŒæ—¥æœŸ
     */
    public void setWorkstartdate(Date workstartdate) {
        this.workstartdate = workstartdate;
    }
    /**
     * èŽ·å–ï¼šåˆ°èŒæ—¥æœŸ
     */
    public Date getWorkstartdate() {
        return workstartdate;
    }
    /**
     * è®¾ç½®ï¼šç¦»èŒæ—¥æœŸ
     */
    public void setWorkenddate(Date workenddate) {
        this.workenddate = workenddate;
    }
    /**
     * èŽ·å–ï¼šç¦»èŒæ—¥æœŸ
     */
    public Date getWorkenddate() {
        return workenddate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加人ID
     */
    public void setRcreateuser(Long rcreateuser) {
        this.rcreateuser = rcreateuser;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ äººID
     */
    public Long getRcreateuser() {
        return rcreateuser;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•添加时间
     */
    public void setRcreatedate(Date rcreatedate) {
        this.rcreatedate = rcreatedate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•æ·»åŠ æ—¶é—´
     */
    public Date getRcreatedate() {
        return rcreatedate;
    }
    /**
     * è®¾ç½®ï¼šè®°å½•修改时间戳
     */
    public void setRlasteditdate(Date rlasteditdate) {
        this.rlasteditdate = rlasteditdate;
    }
    /**
     * èŽ·å–ï¼šè®°å½•ä¿®æ”¹æ—¶é—´æˆ³
     */
    public Date getRlasteditdate() {
        return rlasteditdate;
    }
    /**
     * è®¾ç½®ï¼šå•位名称
     */
    public void setUnitname(String unitname) {
        this.unitname = unitname;
    }
    /**
     * èŽ·å–ï¼šå•ä½åç§°
     */
    public String getUnitname() {
        return unitname;
    }
    /**
     * è®¾ç½®ï¼šä¸­æ–‡å
     */
    public void setUsername(String username) {
        this.username = username;
    }
    /**
     * èŽ·å–ï¼šä¸­æ–‡å
     */
    public String getUsername() {
        return username;
    }
    /**
     * è®¾ç½®ï¼šç¼–号
     */
    public void setRn(Long rn) {
        this.rn = rn;
    }
    /**
     * èŽ·å–ï¼šç¼–å·
     */
    public Long getRn() {
        return rn;
    }
    /**
     * è®¾ç½®ï¼šä»Žäº‹æœ¬èŒå·¥ä½œæ—¶é—´
     */
    public void setWorkseasdatestr(String workseasdatestr) {
        this.workseasdatestr = workseasdatestr;
    }
    /**
     * èŽ·å–ï¼šä»Žäº‹æœ¬èŒå·¥ä½œæ—¶é—´
     */
    public String getWorkseasdatestr() {
        return workseasdatestr;
    }
    /**
     * è®¾ç½®ï¼šåˆ°èŒæ—¥æœŸ
     */
    public void setWorkstartdatestr(String workstartdatestr) {
        this.workstartdatestr = workstartdatestr;
    }
    /**
     * èŽ·å–ï¼šåˆ°èŒæ—¥æœŸ
     */
    public String getWorkstartdatestr() {
        return workstartdatestr;
    }
    /**
     * è®¾ç½®ï¼šç¦»èŒæ—¥æœŸ
     */
    public void setWorkenddatestr(String workenddatestr) {
        this.workenddatestr = workenddatestr;
    }
    /**
     * èŽ·å–ï¼šç¦»èŒæ—¥æœŸ
     */
    public String getWorkenddatestr() {
        return workenddatestr;
    }
    /**
     * è®¾ç½®ï¼šæ—§å•位id
     */
    public void setoldUnitid(Long oldunitid) {
        this.oldunitid = oldunitid;
    }
    /**
     * èŽ·å–ï¼šæ—§å•ä½id
     */
    public Long getoldUnitid() {
        return oldunitid;
    }
}
在上述文件截断后对比
src/main/java/com/landtool/lanbase/modules/org/entity/SysSysteminfo.java src/main/java/com/landtool/lanbase/modules/org/redis/OrgUnitRedis.java src/main/java/com/landtool/lanbase/modules/org/redis/OrgUserDefUnitRedis.java src/main/java/com/landtool/lanbase/modules/org/redis/OrgUserRedis.java src/main/java/com/landtool/lanbase/modules/org/redis/SysSystemInfoRedis.java src/main/java/com/landtool/lanbase/modules/org/service/OrgUnitService.java src/main/java/com/landtool/lanbase/modules/org/service/OrgUserService.java src/main/java/com/landtool/lanbase/modules/org/service/impl/OrgUnitServiceImpl.java src/main/java/com/landtool/lanbase/modules/org/service/impl/OrgUserServiceImpl.java src/main/java/com/landtool/lanbase/modules/portlet/controller/IsLandTypeController.java src/main/java/com/landtool/lanbase/modules/portlet/controller/ShuJuZhanShiController.java src/main/java/com/landtool/lanbase/modules/res/controller/CommonController.java src/main/java/com/landtool/lanbase/modules/res/controller/DiTuFuWuController.java src/main/java/com/landtool/lanbase/modules/res/controller/JiChuDiTuController.java src/main/java/com/landtool/lanbase/modules/res/controller/JitmonitorController.java src/main/java/com/landtool/lanbase/modules/res/controller/KeShiHuaFuWuController.java src/main/java/com/landtool/lanbase/modules/res/controller/NewResRegisterController.java src/main/java/com/landtool/lanbase/modules/res/controller/OneMapController.java src/main/java/com/landtool/lanbase/modules/res/controller/PingTaiMenHuController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResActionRecordController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResApplyRecommendController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResAuditController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResBusinessRefController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResCatalogController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResEchartsCofingController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResEvaluationController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExt3DController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtAppController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtBaseMapController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtBusinessLayerController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtDataBaseController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtDataSourceController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtFileSourceController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtIntegrateController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtInterFaceServiceController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtMapUrlController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtSpaceServerController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResExtThemeMapController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResFilesController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResMainInfoController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResMainInfoController_bak20190109.java src/main/java/com/landtool/lanbase/modules/res/controller/ResOnemapCatalogController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResProblemFeedbackController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResQueryAroundController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResRegisterController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResSubscriptionsController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResTemplateController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeModuleController.java src/main/java/com/landtool/lanbase/modules/res/controller/ResThemeRelationController.java src/main/java/com/landtool/lanbase/modules/res/controller/SysteminfoController.java src/main/java/com/landtool/lanbase/modules/res/controller/TestController.java src/main/java/com/landtool/lanbase/modules/res/controller/UploadTemplateController.java src/main/java/com/landtool/lanbase/modules/res/controller/WebServiceController.java src/main/java/com/landtool/lanbase/modules/res/controller/ZhuanTiZhiTuController.java src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanFaBuController.java src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanMuLuController.java src/main/java/com/landtool/lanbase/modules/res/controller/ZiYuanZhongXinController.java src/main/java/com/landtool/lanbase/modules/res/dao/DiTuFuWuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/JiChuDiTuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/JitMonitorMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/KeShiHuaFuWuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/PingTaiMenHuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/ResStorageRelaTionMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ActionRecordMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ApplyRecommendMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_AuditMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_BookMarksMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_BusinessRefMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_BusinessThemeMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_CatalogMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_DiyLayerInfoMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_EchartsCofingMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_EvaluationMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_Ext3DMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtAppMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtBaseMapMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtBusinessLayerMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtDataBaseMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtDataSourceMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtFileSourceMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtIntegrateMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtInterFaceServiceMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtMapUrlMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtMiddleWareMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtSpaceServerMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ExtThemeMapMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_FileSource_WayMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_FilesMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_MainInfoMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_OneMap_CatalogMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_OneMap_CatalogResourceMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ProblemFeedbackMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_QueryAroundMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_SpacesParamMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_StorageConfigMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_SubscriptionsMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_SymbolLibraryMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_TempPrintMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_TemplateDao.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ThemeMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_ThemeTypeMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_Theme_ModuleMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_Theme_RelationMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/Res_User_LayerExtentMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/RoleResCatalogMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/ZhuanTiZhiTuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/ZiYuanFaBuMapper.java src/main/java/com/landtool/lanbase/modules/res/dao/ZiYuanMuLuMapper.java src/main/java/com/landtool/lanbase/modules/res/entity/DataBaseLeftDataSource/DataBaseLeftDataSource.java src/main/java/com/landtool/lanbase/modules/res/entity/GraphicStyle.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/BiaoJieGou.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/DateType.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/FieldMapping.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/NcConfig.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/NcMessage.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/ServiceConfig.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/SqlMapJson.java src/main/java/com/landtool/lanbase/modules/res/entity/JSONModels/ZiDuanPeiZi.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ActionRecord.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ApplyRecommend.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Audit.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_BookMarks.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_BusinessRef.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_BusinessTheme.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Catalog.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_DiyLayerInfo.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_EchartsConfing.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Evaluation.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Ext3D.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtApp.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtBaseMap.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtBusinessLayer.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtDataBase.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtDataSource.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtFileSource.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtIntegrate.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtInterFaceService.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtMapUrl.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtMiddleWare.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtSpaceServer.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtSpaceServerWithBLOBs.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ExtThemeMap.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_FileSource_Way.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Files.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_MainInfo.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_OneMap_Catalog.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_OneMap_CatalogResource.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ProblemFeedback.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_QueryAround.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_SpacesParam.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_SpacesParamWithBLOBs.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_StorageConfig.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Storage_Relation.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Subscriptions.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_SymbolLibrary.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_TempPrint.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Template.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ThemeRelation.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_ThemeType.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme_Module.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_Theme_Relation.java src/main/java/com/landtool/lanbase/modules/res/entity/Res_User_LayerExtent.java src/main/java/com/landtool/lanbase/modules/res/entity/Role_ResCatalog.java src/main/java/com/landtool/lanbase/modules/res/entity/SelectShuJuKu.java src/main/java/com/landtool/lanbase/modules/res/entity/SimpleZiYuan.java src/main/java/com/landtool/lanbase/modules/res/entity/TreeDataByResourceType.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/CatlogJoinActionrecord.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/DingYue.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinActionRecord.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinApplyRecommend.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinApplyRecommendInfo.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinAudit.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinCatalog.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinEvaluation.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinJcdt.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinRegister.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/MainInfoJoinSubscriptions.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ResThemeModuleRequest.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_BaseMap.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_SpaceServer.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/UserDef_ZYML_ChaXunQu.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_DanWeiTongJi.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_GongXiangXieYi.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ShiJianTongJi.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_XingZhengQuHua.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_ShenHeZhuangTai.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_XingZhengQuHua.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZYTJ_ZiYuanLeiXing.java src/main/java/com/landtool/lanbase/modules/res/entity/UserDefined/ZiYuanMuLu/UserDef_ZiYuanLeiXing.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/FileSourceList.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Jcdt.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_MapUrl.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Ywtc.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/LayerObject_Ztdt.java src/main/java/com/landtool/lanbase/modules/res/entity/ViewModels/TuChengView.java src/main/java/com/landtool/lanbase/modules/res/entity/WebService/ParameterInfo.java src/main/java/com/landtool/lanbase/modules/res/entity/WebService/SchemaDefaultType.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByDanWei.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByDataSources.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByGongXiangXieYi.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByMuLu.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByPubDate.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByXingZhengQuHua.java src/main/java/com/landtool/lanbase/modules/res/entity/ZiYuanTongJi/GroupByZiYuanLeiXing.java src/main/java/com/landtool/lanbase/modules/res/redis/ResCatalogRedis.java src/main/java/com/landtool/lanbase/modules/res/service/DiTuFuWuService.java src/main/java/com/landtool/lanbase/modules/res/service/JiChuDiTuService.java src/main/java/com/landtool/lanbase/modules/res/service/JitMonitorService.java src/main/java/com/landtool/lanbase/modules/res/service/KeShiHuaFuWuService.java src/main/java/com/landtool/lanbase/modules/res/service/PingTaiMenHuService.java src/main/java/com/landtool/lanbase/modules/res/service/ResActionRecordService.java src/main/java/com/landtool/lanbase/modules/res/service/ResApplyRecommendService.java src/main/java/com/landtool/lanbase/modules/res/service/ResAuditService.java src/main/java/com/landtool/lanbase/modules/res/service/ResBookMarksService.java src/main/java/com/landtool/lanbase/modules/res/service/ResBusinessRefService.java src/main/java/com/landtool/lanbase/modules/res/service/ResCatalogService.java src/main/java/com/landtool/lanbase/modules/res/service/ResDiyLayerInfoService.java src/main/java/com/landtool/lanbase/modules/res/service/ResEchartsCofingService.java src/main/java/com/landtool/lanbase/modules/res/service/ResEvaluationService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExt3DService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtAppService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtBaseMapService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtBusinessLayerService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtDataBaseService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtDataSourceService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtFileSourceService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtIntegrateService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtInterFaceService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtMapUrlService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtMiddleWareService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtSpaceServerService.java src/main/java/com/landtool/lanbase/modules/res/service/ResExtThemeMapService.java src/main/java/com/landtool/lanbase/modules/res/service/ResFileSourceWayService.java src/main/java/com/landtool/lanbase/modules/res/service/ResFilesService.java src/main/java/com/landtool/lanbase/modules/res/service/ResMainInfoService.java src/main/java/com/landtool/lanbase/modules/res/service/ResOnemapCatalogResourceService.java src/main/java/com/landtool/lanbase/modules/res/service/ResOnemapCatalogService.java src/main/java/com/landtool/lanbase/modules/res/service/ResProblemFeedbackService.java src/main/java/com/landtool/lanbase/modules/res/service/ResQueryAroundService.java src/main/java/com/landtool/lanbase/modules/res/service/ResSpacesParamService.java src/main/java/com/landtool/lanbase/modules/res/service/ResStorageConfigService.java src/main/java/com/landtool/lanbase/modules/res/service/ResStorageRelaTionService.java src/main/java/com/landtool/lanbase/modules/res/service/ResSubscriptionsService.java src/main/java/com/landtool/lanbase/modules/res/service/ResSymbolLibraryService.java src/main/java/com/landtool/lanbase/modules/res/service/ResTempPrintService.java src/main/java/com/landtool/lanbase/modules/res/service/ResTemplateService.java src/main/java/com/landtool/lanbase/modules/res/service/ResThemeModuleService.java src/main/java/com/landtool/lanbase/modules/res/service/ResThemeRelationService.java src/main/java/com/landtool/lanbase/modules/res/service/ResThemeService.java src/main/java/com/landtool/lanbase/modules/res/service/ResThemeTypeService.java src/main/java/com/landtool/lanbase/modules/res/service/ResUserLayerExtentService.java src/main/java/com/landtool/lanbase/modules/res/service/RoleResCatalogService.java src/main/java/com/landtool/lanbase/modules/res/service/ZhuanTiZhiTuService.java src/main/java/com/landtool/lanbase/modules/res/service/ZiYuanFaBuService.java src/main/java/com/landtool/lanbase/modules/res/service/ZiYuanMuLuService.java src/main/java/com/landtool/lanbase/modules/res/service/impl/DiTuFuWuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/JiChuDiTuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/JitMonitorServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/KeShiHuaFuWuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/PingTaiMenHuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResActionRecordServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResApplyRecommendServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResAuditServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResBookMarksServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResBusinessRefServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResCatalogServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResDiyLayerInfoServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResEchartsCofingServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResEvaluationServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExt3DServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtAppServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtBaseMapServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtBusinessLayerServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtDataBaseServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtDataSourceServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtFileSourceServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtIntegrateServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtInterFaceServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtMapUrlServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtMiddleWareServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtSpaceServerServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResExtThemeMapServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResFileSourceWayServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResFilesServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResMainInfoServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResOnemapCatalogResourceServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResOnemapCatalogServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResProblemFeedbackServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResQueryAroundServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSpacesParamServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResStorageConfigServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResStorageRelaTionServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSubscriptionsServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResSymbolLibraryServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResTempPrintServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResTemplateServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeModuleServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeRelationServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResThemeTypeServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ResUserLayerExtentServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/RoleResCatalogServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ZhuanTiZhiTuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ZiYuanFaBuServiceImpl.java src/main/java/com/landtool/lanbase/modules/res/service/impl/ZiYuanMuLuServiceImpl.java src/main/java/com/landtool/lanbase/modules/sys/controller/AbstractController.java src/main/java/com/landtool/lanbase/modules/sys/controller/SysLoginController.java src/main/java/com/landtool/lanbase/modules/sys/controller/SysMenuController.java src/main/java/com/landtool/lanbase/modules/sys/controller/SysUserController.java src/main/java/com/landtool/lanbase/modules/sys/dao/BaseDao.java src/main/java/com/landtool/lanbase/modules/sys/dao/SysUserTokenDao.java src/main/java/com/landtool/lanbase/modules/sys/entity/PubNews.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysColumn.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysField.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysFieldvalue.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysMenu.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysResource.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysRole.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysRoleResource.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysSysteminfo.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysTable.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysUser.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserApplist.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserRole.java src/main/java/com/landtool/lanbase/modules/sys/entity/SysUserToken.java src/main/java/com/landtool/lanbase/modules/sys/redis/OnlineUserRedis.java src/main/java/com/landtool/lanbase/modules/sys/redis/SysFieldvalueRedis.java src/main/java/com/landtool/lanbase/modules/sys/redis/SysUserTokenRedis.java src/main/java/com/landtool/lanbase/modules/sys/service/SysFieldvalueService.java src/main/java/com/landtool/lanbase/modules/sys/service/SysUserTokenService.java src/main/java/com/landtool/lanbase/modules/sys/service/impl/SysFieldvalueServiceImpl.java src/main/java/com/landtool/lanbase/modules/sys/service/impl/SysUserTokenServiceImpl.java src/main/java/com/landtool/lanbase/modules/terra/GisService.java src/main/java/com/landtool/lanbase/modules/terra/GisServiceListener.java src/main/java/com/landtool/lanbase/test/NcService.java src/main/resources/application-dev.yml src/main/resources/application-pro.yml src/main/resources/application.yml src/main/resources/banner.txt src/main/resources/cas.keystore src/main/resources/generator.properties src/main/resources/logback-spring.xml src/main/resources/mapper/res/DiTuFuWuMapper.xml src/main/resources/mapper/res/JiChuDiTuMapper.xml src/main/resources/mapper/res/JitMonitorMapper.xml src/main/resources/mapper/res/KeShiHuaFuWuMapper.xml src/main/resources/mapper/res/PingTaiMenHuMapper.xml src/main/resources/mapper/res/Res_ActionRecordMapper.xml src/main/resources/mapper/res/Res_ApplyRecommendMapper.xml src/main/resources/mapper/res/Res_AuditMapper.xml src/main/resources/mapper/res/Res_BookMarksMapper.xml src/main/resources/mapper/res/Res_BusinessRefMapper.xml src/main/resources/mapper/res/Res_BusinessThemeMapper.xml src/main/resources/mapper/res/Res_CatalogMapper.xml src/main/resources/mapper/res/Res_DiyLayerInfoMapper.xml src/main/resources/mapper/res/Res_EchartsConfingMapper.xml src/main/resources/mapper/res/Res_EvaluationMapper.xml src/main/resources/mapper/res/Res_Ext3DMapper.xml src/main/resources/mapper/res/Res_ExtAppMapper.xml src/main/resources/mapper/res/Res_ExtBaseMapMapper.xml src/main/resources/mapper/res/Res_ExtBusinessLayerMapper.xml src/main/resources/mapper/res/Res_ExtDataBaseMapper.xml src/main/resources/mapper/res/Res_ExtDataSourceMapper.xml src/main/resources/mapper/res/Res_ExtFileSourceMapper.xml src/main/resources/mapper/res/Res_ExtIntegrateMapper.xml src/main/resources/mapper/res/Res_ExtInterFaceServiceMapper.xml src/main/resources/mapper/res/Res_ExtMapUrlMapper.xml src/main/resources/mapper/res/Res_ExtMiddleWareMapper.xml src/main/resources/mapper/res/Res_ExtSpaceServerMapper.xml src/main/resources/mapper/res/Res_ExtThemeMapMapper.xml src/main/resources/mapper/res/Res_FileSource_WayMapper.xml src/main/resources/mapper/res/Res_FilesMapper.xml src/main/resources/mapper/res/Res_MainInfoMapper.xml src/main/resources/mapper/res/Res_OneMap_CatalogMapper.xml src/main/resources/mapper/res/Res_OneMap_CatalogResourceMapper.xml src/main/resources/mapper/res/Res_ProblemFeedbackMapper.xml src/main/resources/mapper/res/Res_QueryAroundMapper.xml src/main/resources/mapper/res/Res_SpacesParamMapper.xml src/main/resources/mapper/res/Res_StorageConfigMapper.xml src/main/resources/mapper/res/Res_Storage_RelationMapper.xml src/main/resources/mapper/res/Res_SubscriptionsMapper.xml src/main/resources/mapper/res/Res_SymbolLibraryMapper.xml src/main/resources/mapper/res/Res_TempPrintMapper.xml src/main/resources/mapper/res/Res_TemplateMapper.xml src/main/resources/mapper/res/Res_ThemeMapper.xml src/main/resources/mapper/res/Res_ThemeTypeMapper.xml src/main/resources/mapper/res/Res_Theme_ModuleMapper.xml src/main/resources/mapper/res/Res_Theme_RelationMapper.xml src/main/resources/mapper/res/Res_User_LayerExtentMapper.xml src/main/resources/mapper/res/RoleResCatalogMapper.xml src/main/resources/mapper/res/ZhuanTiZhiTuMapper.xml src/main/resources/mapper/res/ZiYuanFaBuMapper.xml src/main/resources/mapper/res/ZiYuanMuLuMapper.xml src/main/resources/static/ZiYuanIcon/right.gif src/main/resources/static/config/ResourceFlowConfig.json src/main/resources/static/css/AdminLTE.min.css src/main/resources/static/css/Query.css src/main/resources/static/css/TuXinCongif.css src/main/resources/static/css/TuXingConfig.css src/main/resources/static/css/ZiYuanZhongXin/Index.css src/main/resources/static/css/ZiYuanZhongXin/Indexnew.css src/main/resources/static/css/all-skins.min.css src/main/resources/static/css/bootstrap-extract.css src/main/resources/static/css/bootstrap-table.min.css src/main/resources/static/css/bootstrap.css src/main/resources/static/css/bootstrap.min.css src/main/resources/static/css/components.css src/main/resources/static/css/ditufuwu/index.css src/main/resources/static/css/ditufuwu/indexnew.css src/main/resources/static/css/firstebox.css src/main/resources/static/css/font-awesome.min.css src/main/resources/static/css/grid-selfAdaptH.css src/main/resources/static/css/jquery-ui.min.css src/main/resources/static/css/main.css src/main/resources/static/css/mtree.css src/main/resources/static/css/plugins.css src/main/resources/static/css/tagsinput.css src/main/resources/static/css/zTreeCover.css src/main/resources/static/favicon.ico src/main/resources/static/fonts/FontAwesome.otf src/main/resources/static/fonts/fontawesome-webfont.eot src/main/resources/static/fonts/fontawesome-webfont.svg src/main/resources/static/fonts/fontawesome-webfont.ttf src/main/resources/static/fonts/fontawesome-webfont.woff src/main/resources/static/fonts/fontawesome-webfont.woff2 src/main/resources/static/fonts/glyphicons-halflings-regular.eot src/main/resources/static/fonts/glyphicons-halflings-regular.svg src/main/resources/static/fonts/glyphicons-halflings-regular.ttf src/main/resources/static/fonts/glyphicons-halflings-regular.woff src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 src/main/resources/static/image/AnXianChangDuTuLi.jpg src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW.gif src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW2.gif src/main/resources/static/image/Atkas/Atkasbak/JKFW/JKFW3.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT2.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT3.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_JCDT/KJ_JCDT4.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_KJFX/KJ_KJFX.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_KJFX/KJ_KJFX2.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_SWMX/KJ_SWMX.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_SWMX/KJ_SWMX2.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC2.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC3.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC4.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC5.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC6.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC7.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_YWTC/KJ_YWTC8.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT2.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT3.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT4.gif src/main/resources/static/image/Atkas/Atkasbak/KJ_ZTDT/KJ_ZTDT5.gif src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB.gif src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB2.gif src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB3.gif src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB4.gif src/main/resources/static/image/Atkas/Atkasbak/SJKB/SJKB5.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ2.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ3.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ4.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ5.gif src/main/resources/static/image/Atkas/Atkasbak/SJWJ/SJWJ6.gif src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC.gif src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC2.gif src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC3.gif src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC4.gif src/main/resources/static/image/Atkas/Atkasbak/YWJC/YWJC5.gif src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW.gif src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW2.gif src/main/resources/static/image/Atkas/NewAtkas/JKFW/JKFW3.png src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT2.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT3.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_JCDT/KJ_JCDT4.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_KJFX/KJ_KJFX.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_KJFX/KJ_KJFX2.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_SWDX/KJ_SWDX.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_SWMX/KJ_SWMX.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_SWYX/KJ_SWYX.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC2.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC3.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC4.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC5.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC6.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_YWTC/KJ_YWTC7.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT2.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT3.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT4.gif src/main/resources/static/image/Atkas/NewAtkas/KJ_ZTDT/KJ_ZTDT5.gif src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB.gif src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB2.gif src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB3.gif src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB4.gif src/main/resources/static/image/Atkas/NewAtkas/SJKB/SJKB5.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ2.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ3.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ4.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ5.gif src/main/resources/static/image/Atkas/NewAtkas/SJWJ/SJWJ6.gif src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC.gif src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC2.gif src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC3.gif src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC4.gif src/main/resources/static/image/Atkas/NewAtkas/YWJC/YWJC5.gif src/main/resources/static/image/Draw.png src/main/resources/static/image/HYTongJi/right.gif src/main/resources/static/image/HYTongJi/wrong.gif src/main/resources/static/image/MenHuIndex/addPic.gif src/main/resources/static/image/MenHuIndex/fubiaobig.png src/main/resources/static/image/MenHuIndex/fubiaosmall.png src/main/resources/static/image/MenHuIndex/new.gif src/main/resources/static/image/MenHuIndex/shipinbig.png src/main/resources/static/image/MenHuIndex/shipinsmall.png src/main/resources/static/image/NewMenHu/FaBuShenHe.png src/main/resources/static/image/NewMenHu/JiChuDiTu.png src/main/resources/static/image/NewMenHu/KeShiHua.png src/main/resources/static/image/NewMenHu/ShenQingPiFu.png src/main/resources/static/image/NewMenHu/WoDeDingYue.png src/main/resources/static/image/NewMenHu/WoDeFaBu.png src/main/resources/static/image/NewMenHu/WoDeShenQing.png src/main/resources/static/image/NewMenHu/WoDeShouCang.png src/main/resources/static/image/NewMenHu/ZhuanTiZhiTu.png src/main/resources/static/image/NewMenHu/ZiYuanFaBu.png src/main/resources/static/image/NewMenHu/ZiYuanMuLu.png src/main/resources/static/image/NewMenHu/fb_GuZhang.png src/main/resources/static/image/NewMenHu/fb_ZhengChang.png src/main/resources/static/image/NewMenHu/more.png src/main/resources/static/image/NewMenHu/sp_GuZhang.png src/main/resources/static/image/NewMenHu/sp_ZhengChang.png src/main/resources/static/image/NewMenHu/sys.png src/main/resources/static/image/NewMenHu/user.png src/main/resources/static/image/NewMenHu/user_bg.png src/main/resources/static/image/Plus.gif src/main/resources/static/image/PubNews/资讯动态.png src/main/resources/static/image/PubNews/通知公告.png src/main/resources/static/image/QuYuBianHuaTuLi.png src/main/resources/static/image/Systeminfo/First_icon.png src/main/resources/static/image/Systeminfo/IEicon.png src/main/resources/static/image/Systeminfo/haidao.png src/main/resources/static/image/Systeminfo/haiyu.png src/main/resources/static/image/Systeminfo/huangjing.png src/main/resources/static/image/Systeminfo/huanjinganquan.png src/main/resources/static/image/Systeminfo/jingji.png src/main/resources/static/image/Systeminfo/search.png src/main/resources/static/image/Systeminfo/yubaojianzai.png src/main/resources/static/image/Systeminfo/zhifa.png src/main/resources/static/image/Systeminfo/zonghe.png src/main/resources/static/image/TEXT1.png src/main/resources/static/image/TopMenu/10haididianlanguandao.png src/main/resources/static/image/TopMenu/10haididianlanguandao_active.png src/main/resources/static/image/TopMenu/11ditudingweifenxi.png src/main/resources/static/image/TopMenu/11ditudingweifenxi_active.png src/main/resources/static/image/TopMenu/12haiyushiyonglunzheng.png src/main/resources/static/image/TopMenu/12haiyushiyonglunzheng_active.png src/main/resources/static/image/TopMenu/13shujujiaodui.png src/main/resources/static/image/TopMenu/13shujujiaodui_active.png src/main/resources/static/image/TopMenu/1gerenmenhu.png src/main/resources/static/image/TopMenu/1zhzs.png src/main/resources/static/image/TopMenu/1zhzs_active.png src/main/resources/static/image/TopMenu/2shouye.png src/main/resources/static/image/TopMenu/2shouye_active.png src/main/resources/static/image/TopMenu/2zonghezhanshi.png src/main/resources/static/image/TopMenu/3ziyuanmulu.png src/main/resources/static/image/TopMenu/4daohangxitong.png src/main/resources/static/image/TopMenu/4quyuyonghaiguihua.png src/main/resources/static/image/TopMenu/4quyuyonghaiguihua_active.png src/main/resources/static/image/TopMenu/5weitianhaoguihua.png src/main/resources/static/image/TopMenu/5weitianhaoguihua_active.png src/main/resources/static/image/TopMenu/5xitongshezhi.png src/main/resources/static/image/TopMenu/6haiyuquanshuguanli.png src/main/resources/static/image/TopMenu/6haiyuquanshuguanli_active.png src/main/resources/static/image/TopMenu/6yingxiangguanli.png src/main/resources/static/image/TopMenu/7haiyushiyongjinguanli.png src/main/resources/static/image/TopMenu/7haiyushiyongjinguanli_active.png src/main/resources/static/image/TopMenu/8haiyushiyongzhifa.png src/main/resources/static/image/TopMenu/8haiyushiyongzhifa_active.png src/main/resources/static/image/TopMenu/CommonMenu/banner_bg_04.png src/main/resources/static/image/TopMenu/CommonMenu/banner_right.png src/main/resources/static/image/TopMenu/CommonMenu/commontitle.png src/main/resources/static/image/TopMenu/CommonMenu/ditufuwutitle.png src/main/resources/static/image/TopMenu/CommonMenu/jichuditutitle.png src/main/resources/static/image/TopMenu/CommonMenu/mapicon_01.png src/main/resources/static/image/TopMenu/CommonMenu/mapicon_02.png src/main/resources/static/image/TopMenu/CommonMenu/mapicon_03.png src/main/resources/static/image/TopMenu/CommonMenu/mapicon_04.png src/main/resources/static/image/TopMenu/CommonMenu/mapicon_06.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabu.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabutitle-old.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanfabutitle.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulu.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulutitle-old.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanmulutitle.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxin.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxintitle-old.png src/main/resources/static/image/TopMenu/CommonMenu/ziyuanzhongxintitle.png src/main/resources/static/image/TopMenu/NewMenu/admin.png src/main/resources/static/image/TopMenu/NewMenu/btn_01.png src/main/resources/static/image/TopMenu/NewMenu/btn_01_on.png src/main/resources/static/image/TopMenu/NewMenu/btn_02.png src/main/resources/static/image/TopMenu/NewMenu/btn_02_on.png src/main/resources/static/image/TopMenu/NewMenu/btn_03.png src/main/resources/static/image/TopMenu/NewMenu/btn_03_on.png src/main/resources/static/image/TopMenu/NewMenu/btn_04.png src/main/resources/static/image/TopMenu/NewMenu/btn_04_on.png src/main/resources/static/image/TopMenu/NewMenu/btn_05.png src/main/resources/static/image/TopMenu/NewMenu/btn_05_on.png src/main/resources/static/image/TopMenu/NewMenu/top_bg.bak.jpg src/main/resources/static/image/TopMenu/NewMenu/top_bg.jpg src/main/resources/static/image/TopMenu/NewMenu/top_tit.png src/main/resources/static/image/TopMenu/NewMenu/user_bg.png src/main/resources/static/image/TopMenu/ResourceSearch.png src/main/resources/static/image/TopMenu/back.png src/main/resources/static/image/TopMenu/back_btn.png src/main/resources/static/image/TopMenu/back_btn_on.png src/main/resources/static/image/TopMenu/btn_bg.gif src/main/resources/static/image/TopMenu/bz.png src/main/resources/static/image/TopMenu/ditufuwu_Logo.jpg src/main/resources/static/image/TopMenu/ditusearch.bmp src/main/resources/static/image/TopMenu/exit.png src/main/resources/static/image/TopMenu/feature_data.png src/main/resources/static/image/TopMenu/feature_data_active.png src/main/resources/static/image/TopMenu/guangdong_tit_01.jpg src/main/resources/static/image/TopMenu/guangdongxianji_tit.png src/main/resources/static/image/TopMenu/hyqs_main.png src/main/resources/static/image/TopMenu/hyqs_main_active.png src/main/resources/static/image/TopMenu/hyqs_qsdj.png src/main/resources/static/image/TopMenu/hyqs_qsdj_active.png src/main/resources/static/image/TopMenu/hyqs_sjll.png src/main/resources/static/image/TopMenu/hyqs_sjll_active.png src/main/resources/static/image/TopMenu/hyqs_sqsp.png src/main/resources/static/image/TopMenu/hyqs_sqsp_active.png src/main/resources/static/image/TopMenu/hysyj_main.png src/main/resources/static/image/TopMenu/hysyj_main_active.png src/main/resources/static/image/TopMenu/hysytj_main.png src/main/resources/static/image/TopMenu/hysytj_main_active.png src/main/resources/static/image/TopMenu/icon1.png src/main/resources/static/image/TopMenu/jigouzhuangkuang.png src/main/resources/static/image/TopMenu/logo.png src/main/resources/static/image/TopMenu/logo_tit.png src/main/resources/static/image/TopMenu/mapSearch.png src/main/resources/static/image/TopMenu/map_dixing.gif src/main/resources/static/image/TopMenu/map_shiliang.gif src/main/resources/static/image/TopMenu/map_yaogan.gif src/main/resources/static/image/TopMenu/mapicon_01.png src/main/resources/static/image/TopMenu/mapicon_01_on.png src/main/resources/static/image/TopMenu/mapicon_02.png src/main/resources/static/image/TopMenu/mapicon_02_on.png src/main/resources/static/image/TopMenu/mapicon_03.png src/main/resources/static/image/TopMenu/mapicon_03_on.png src/main/resources/static/image/TopMenu/mapicon_04.png src/main/resources/static/image/TopMenu/mapicon_04_on.png src/main/resources/static/image/TopMenu/mapicon_05.png src/main/resources/static/image/TopMenu/mapicon_05_on.png src/main/resources/static/image/TopMenu/mapicon_06.png src/main/resources/static/image/TopMenu/mapicon_06_on.png src/main/resources/static/image/TopMenu/oceanplan.png src/main/resources/static/image/TopMenu/oceanplan_active.png src/main/resources/static/image/TopMenu/peihaoluru.png src/main/resources/static/image/TopMenu/search_02bg.jpg src/main/resources/static/image/TopMenu/search_bg.jpg src/main/resources/static/image/TopMenu/search_btn.png src/main/resources/static/image/TopMenu/shoucang_btn.png src/main/resources/static/image/TopMenu/shujuzhengli.png src/main/resources/static/image/TopMenu/shujuzhengli_active.png src/main/resources/static/image/TopMenu/sjff.png src/main/resources/static/image/TopMenu/small/10haididianlanguandao_active_small.png src/main/resources/static/image/TopMenu/small/10haididianlanguandao_small.png src/main/resources/static/image/TopMenu/small/11ditudingweifenxi_active_small.png src/main/resources/static/image/TopMenu/small/11ditudingweifenxi_small.png src/main/resources/static/image/TopMenu/small/12haiyushiyonglunzheng_active_small.png src/main/resources/static/image/TopMenu/small/12haiyushiyonglunzheng_small.png src/main/resources/static/image/TopMenu/small/13shujujiaodui_active_small.png src/main/resources/static/image/TopMenu/small/13shujujiaodui_small.png src/main/resources/static/image/TopMenu/small/1zhzs_active_small.png src/main/resources/static/image/TopMenu/small/1zhzs_small.png src/main/resources/static/image/TopMenu/small/2shouye_active_small.png src/main/resources/static/image/TopMenu/small/2shouye_small.png src/main/resources/static/image/TopMenu/small/4quyuyonghaiguihua_active_small.png src/main/resources/static/image/TopMenu/small/4quyuyonghaiguihua_small.png src/main/resources/static/image/TopMenu/small/5weitianhaoguihua_active_small.png src/main/resources/static/image/TopMenu/small/5weitianhaoguihua_small.png src/main/resources/static/image/TopMenu/small/6haiyuquanshuguanli_active_small.png src/main/resources/static/image/TopMenu/small/6haiyuquanshuguanli_small.png src/main/resources/static/image/TopMenu/small/7haiyushiyongjinguanli_active_small.png src/main/resources/static/image/TopMenu/small/7haiyushiyongjinguanli_small.png src/main/resources/static/image/TopMenu/small/8haiyushiyongzhifa_active_small.png src/main/resources/static/image/TopMenu/small/8haiyushiyongzhifa_small.png src/main/resources/static/image/TopMenu/small/back_small.png src/main/resources/static/image/TopMenu/small/btn_bg_small.gif src/main/resources/static/image/TopMenu/small/feature_data_active_small.png src/main/resources/static/image/TopMenu/small/feature_data_small.png src/main/resources/static/image/TopMenu/small/hyqs_main_active_small.png src/main/resources/static/image/TopMenu/small/hyqs_main_small.png src/main/resources/static/image/TopMenu/small/hyqs_qsdj_active_small.png src/main/resources/static/image/TopMenu/small/hyqs_qsdj_small.png src/main/resources/static/image/TopMenu/small/hyqs_sjll_active_small.png src/main/resources/static/image/TopMenu/small/hyqs_sjll_small.png src/main/resources/static/image/TopMenu/small/hyqs_sqsp_active_small.png src/main/resources/static/image/TopMenu/small/hyqs_sqsp_small.png src/main/resources/static/image/TopMenu/small/hysyj_main_active_small.png src/main/resources/static/image/TopMenu/small/hysyj_main_small.png src/main/resources/static/image/TopMenu/small/hysytj_main_active_small.png src/main/resources/static/image/TopMenu/small/hysytj_main_small.png src/main/resources/static/image/TopMenu/small/logo_small.png src/main/resources/static/image/TopMenu/small/oceanplan_active_small.png src/main/resources/static/image/TopMenu/small/oceanplan_small.png src/main/resources/static/image/TopMenu/small/shujuzhengli_active_small.png src/main/resources/static/image/TopMenu/small/shujuzhengli_small.png src/main/resources/static/image/TopMenu/small/tongyipeihao_active_small.png src/main/resources/static/image/TopMenu/small/tongyipeihao_small.png src/main/resources/static/image/TopMenu/small/watch_survey_active_small.png src/main/resources/static/image/TopMenu/small/watch_survey_small.png src/main/resources/static/image/TopMenu/small/zhzs_active_small.png src/main/resources/static/image/TopMenu/small/zhzs_small.png src/main/resources/static/image/TopMenu/tongyipeihao.png src/main/resources/static/image/TopMenu/tongyipeihao_active.png src/main/resources/static/image/TopMenu/top_bg_repeat.gif src/main/resources/static/image/TopMenu/top_exit_icon.png src/main/resources/static/image/TopMenu/top_time_icon.png src/main/resources/static/image/TopMenu/top_user_icon.png src/main/resources/static/image/TopMenu/watch_survey.png src/main/resources/static/image/TopMenu/watch_survey_active.png src/main/resources/static/image/TopMenu/xtdh.png src/main/resources/static/image/TopMenu/yidongdanbing.png src/main/resources/static/image/TopMenu/yonghaishenqing.png src/main/resources/static/image/TopMenu/zhzs.png src/main/resources/static/image/TopMenu/zhzs1.png src/main/resources/static/image/TopMenu/zhzs_active.png src/main/resources/static/image/TopMenu/ziyuanicon_01.png src/main/resources/static/image/TopMenu/ziyuanicon_01_on.png src/main/resources/static/image/TopMenu/ziyuanicon_02.png src/main/resources/static/image/TopMenu/ziyuanicon_02_on.png src/main/resources/static/image/TopMenu/ziyuanicon_03.png src/main/resources/static/image/TopMenu/ziyuanicon_03_on.png src/main/resources/static/image/TopMenu/ziyuansearch.bmp src/main/resources/static/image/TopMenu/ziyuanzhongxin_logo.jpg src/main/resources/static/image/TopMenu/zonghezhanshi.png src/main/resources/static/image/TopMenu/zyml.png src/main/resources/static/image/YeWuXiTong/南海电子沙盘.jpg src/main/resources/static/image/YeWuXiTong/地图服务平台.jpg src/main/resources/static/image/YeWuXiTong/数字海洋应用.jpg src/main/resources/static/image/YeWuXiTong/海域动态监管.jpg src/main/resources/static/image/YeWuXiTong/海岛监视监测.jpg src/main/resources/static/image/YeWuXiTong/海洋政务信息.jpg src/main/resources/static/image/YeWuXiTong/海洋数据共享.jpg src/main/resources/static/image/YeWuXiTong/海洋空间规划.jpg src/main/resources/static/image/YeWuXiTong/海洋经济监测.jpg src/main/resources/static/image/YeWuXiTong/海洋预报减灾.jpg src/main/resources/static/image/ZhuanTiZhiTu/navicon.png src/main/resources/static/image/ZhuanTiZhiTu/navicon_new.png src/main/resources/static/image/ZhuanTiZhiTu/search.png src/main/resources/static/image/ZhuanTiZhiTu/search_new.png src/main/resources/static/image/ZhuanTiZhiTu/star.png src/main/resources/static/image/ZhuanTiZhiTu/star_new.png src/main/resources/static/image/ZhuanTiZhiTu/user.png src/main/resources/static/image/ZhuanTiZhiTu/user_new.png src/main/resources/static/image/ZiYuan/btn1.png src/main/resources/static/image/ZiYuan/btn2.png src/main/resources/static/image/ZiYuan/diaoyon.gif src/main/resources/static/image/ZiYuan/diaoyoncishu.png src/main/resources/static/image/ZiYuan/ersanwei-erwei.gif src/main/resources/static/image/ZiYuan/ersanwei-sanwei.gif src/main/resources/static/image/ZiYuan/erweichakan.png src/main/resources/static/image/ZiYuan/liulan_icon.gif src/main/resources/static/image/ZiYuan/liulancishu.png src/main/resources/static/image/ZiYuan/safety.png src/main/resources/static/image/ZiYuan/safetyoff.png src/main/resources/static/image/ZiYuan/sanweichakan.png src/main/resources/static/image/ZiYuan/shenqingcishu.png src/main/resources/static/image/ZiYuan/shoucang.png src/main/resources/static/image/ZiYuan/shoucang_icon.gif src/main/resources/static/image/ZiYuan/shujukubiao.gif src/main/resources/static/image/ZiYuan/star.png src/main/resources/static/image/ZiYuan/staroff.png src/main/resources/static/image/ZiYuan/yisc.png src/main/resources/static/image/ZiYuan/yish.png src/main/resources/static/image/ZiYuan/ywtc.gif src/main/resources/static/image/ZiYuan/ziyuanpingjia.gif src/main/resources/static/image/ZiYuan/ziyuanshoucang.png src/main/resources/static/image/ZiYuanZhongXin/1px.png src/main/resources/static/image/ZiYuanZhongXin/New/jichuditu.png src/main/resources/static/image/ZiYuanZhongXin/New/jiekoufuwu.png src/main/resources/static/image/ZiYuanZhongXin/New/list.png src/main/resources/static/image/ZiYuanZhongXin/New/num1.png src/main/resources/static/image/ZiYuanZhongXin/New/num2.png src/main/resources/static/image/ZiYuanZhongXin/New/num3.png src/main/resources/static/image/ZiYuanZhongXin/New/search.png src/main/resources/static/image/ZiYuanZhongXin/New/search2.png src/main/resources/static/image/ZiYuanZhongXin/New/shoucangicon.png src/main/resources/static/image/ZiYuanZhongXin/New/shujuwenjian.png src/main/resources/static/image/ZiYuanZhongXin/New/weipifu.png src/main/resources/static/image/ZiYuanZhongXin/New/weitongguo.png src/main/resources/static/image/ZiYuanZhongXin/New/wodeshenqing_icon.png src/main/resources/static/image/ZiYuanZhongXin/New/yewutuceng.png src/main/resources/static/image/ZiYuanZhongXin/New/yitongguo.png src/main/resources/static/image/ZiYuanZhongXin/New/zytj_icon.png src/main/resources/static/image/ZiYuanZhongXin/dingxiangtuisong_icon.png src/main/resources/static/image/ZiYuanZhongXin/f_post_pic1.gif src/main/resources/static/image/ZiYuanZhongXin/fangwenpaihang_icon.png src/main/resources/static/image/ZiYuanZhongXin/new.gif src/main/resources/static/image/ZiYuanZhongXin/paihang_icon.png src/main/resources/static/image/ZiYuanZhongXin/shenqing.png src/main/resources/static/image/ZiYuanZhongXin/shenqing_icon.png src/main/resources/static/image/ZiYuanZhongXin/shiyongqingkuang_icon.png src/main/resources/static/image/ZiYuanZhongXin/shoucang_icon.png src/main/resources/static/image/ZiYuanZhongXin/shoucangicon.png src/main/resources/static/image/ZiYuanZhongXin/tongji_icon.png src/main/resources/static/image/ZiYuanZhongXin/top1.png src/main/resources/static/image/ZiYuanZhongXin/top2.png src/main/resources/static/image/ZiYuanZhongXin/top3.png src/main/resources/static/image/ZiYuanZhongXin/top4.png src/main/resources/static/image/ZiYuanZhongXin/top5.png src/main/resources/static/image/ZiYuanZhongXin/top6.png src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon.png src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon2.png src/main/resources/static/image/ZiYuanZhongXin/tuijian_icon3.png src/main/resources/static/image/ZiYuanZhongXin/weipifu.gif src/main/resources/static/image/ZiYuanZhongXin/weitongguo.gif src/main/resources/static/image/ZiYuanZhongXin/wodeshenqing.png src/main/resources/static/image/ZiYuanZhongXin/wodeshenqing_icon.png src/main/resources/static/image/ZiYuanZhongXin/wodeshoucang_icon.png src/main/resources/static/image/ZiYuanZhongXin/wodezuji_icon.png src/main/resources/static/image/ZiYuanZhongXin/yewujicheng_icon.png src/main/resources/static/image/ZiYuanZhongXin/yitongguo.gif src/main/resources/static/image/ZiYuanZhongXin/ywjc.gif src/main/resources/static/image/ZiYuanZhongXin/ywtc.gif src/main/resources/static/image/ZiYuanZhongXin/ziyuan.png src/main/resources/static/image/ZiYuanZhongXin/ziyuantuijian_icon.png src/main/resources/static/image/ZiYuanZhongXin/zuixin_icon.png src/main/resources/static/image/arrow.png src/main/resources/static/image/audio.jpg src/main/resources/static/image/avatar.gif src/main/resources/static/image/chart-icon.png src/main/resources/static/image/chart.png src/main/resources/static/image/classicons/JKFW.png src/main/resources/static/image/classicons/KJ_JCDT.png src/main/resources/static/image/classicons/KJ_KJFX.png src/main/resources/static/image/classicons/KJ_SWMX.png src/main/resources/static/image/classicons/KJ_YWTC.png src/main/resources/static/image/classicons/KJ_ZTDT.png src/main/resources/static/image/classicons/SJKB.png src/main/resources/static/image/classicons/SJWJ.png src/main/resources/static/image/classicons/YWJC.png src/main/resources/static/image/classicons/defaulticon.png src/main/resources/static/image/classicons/folder.png src/main/resources/static/image/classicons/folderOpen.png src/main/resources/static/image/classimg/JKFW.gif src/main/resources/static/image/classimg/KJ_JCDT.gif src/main/resources/static/image/classimg/KJ_KJFX.gif src/main/resources/static/image/classimg/KJ_SWDX.gif src/main/resources/static/image/classimg/KJ_SWMX.gif src/main/resources/static/image/classimg/KJ_SWYX.gif src/main/resources/static/image/classimg/KJ_SWYX.gif.BAK src/main/resources/static/image/classimg/KJ_YWTC.gif src/main/resources/static/image/classimg/KJ_ZTDT.gif src/main/resources/static/image/classimg/SJKB.gif src/main/resources/static/image/classimg/SJWJ.gif src/main/resources/static/image/classimg/YWJC.gif src/main/resources/static/image/classimg/bak/JKFW.gif src/main/resources/static/image/classimg/bak/KJ_JCDT.gif src/main/resources/static/image/classimg/bak/KJ_YWTC.gif src/main/resources/static/image/classimg/bak/SJWJ.gif src/main/resources/static/image/down.gif src/main/resources/static/image/echarts/line-simple.png src/main/resources/static/image/echarts/more.bmp src/main/resources/static/image/edit.gif src/main/resources/static/image/file.jpg src/main/resources/static/image/gongzuotai/01.png src/main/resources/static/image/gongzuotai/02.png src/main/resources/static/image/gongzuotai/03.png src/main/resources/static/image/gongzuotai/04.png src/main/resources/static/image/gongzuotai/05.png src/main/resources/static/image/gongzuotai/06.png src/main/resources/static/image/gongzuotai/07.png src/main/resources/static/image/gongzuotai/08.png src/main/resources/static/image/gongzuotai/09.png src/main/resources/static/image/gongzuotai/FaBuShenHe.png src/main/resources/static/image/gongzuotai/ShenQingPiFu.png src/main/resources/static/image/gongzuotai/WoDeDingYue.png src/main/resources/static/image/gongzuotai/WoDeFaBu.png src/main/resources/static/image/gongzuotai/WoDeShenQing.png src/main/resources/static/image/gongzuotai/WoDeShouCang.png src/main/resources/static/image/gongzuotai/wodedingyue_old.png src/main/resources/static/image/gongzuotai/wodeshenqin_old.png src/main/resources/static/image/gray_down.gif src/main/resources/static/image/left_bg.jpg src/main/resources/static/image/liferay_userinfo/admin.png src/main/resources/static/image/liferay_userinfo/exit.png src/main/resources/static/image/liferay_userinfo/modifypassword.png src/main/resources/static/image/liferay_userinfo/modifyuserinfo.png src/main/resources/static/image/liferay_userinfo/user.png src/main/resources/static/image/linetext1.png src/main/resources/static/image/list.png src/main/resources/static/image/loading.gif src/main/resources/static/image/logo_bg.jpg src/main/resources/static/image/logo_tit.png src/main/resources/static/image/map.png src/main/resources/static/image/primarykey.png src/main/resources/static/image/recource_steps_top_bg.jpg src/main/resources/static/image/right.gif src/main/resources/static/image/sxsj.gif src/main/resources/static/image/text.png src/main/resources/static/image/toc_icons2.png src/main/resources/static/image/translation.png src/main/resources/static/image/txt.png src/main/resources/static/image/up.gif src/main/resources/static/image/video.jpg src/main/resources/static/image/wpf.png src/main/resources/static/image/wrong.gif src/main/resources/static/image/wtg.png src/main/resources/static/image/yellow_down.gif src/main/resources/static/image/ytg.png src/main/resources/static/image/ziyuanfabu/ziyuanfabu_liulang.png src/main/resources/static/image/ziyuanfabu/ziyuanfabu_shenqing.png src/main/resources/static/image/ztree/-second_menu.png src/main/resources/static/image/ztree/first_muen.png src/main/resources/static/image/ztree/firstopen_muen.png src/main/resources/static/image/ztree/tree_hide.png src/main/resources/static/image/ztree/tree_open.png src/main/resources/static/js/Extjs/PingTaiMenHu/SystemInfoList.js src/main/resources/static/js/Extjs/ResTheme/MainInfoSelect.js src/main/resources/static/js/Extjs/ResTheme/ModuleList.js src/main/resources/static/js/Extjs/ResTheme/ResThemeModule.js src/main/resources/static/js/Extjs/ResTheme/restheme.js src/main/resources/static/js/Extjs/ResTheme/selectPanel.js src/main/resources/static/js/Extjs/ZYML/BaseMapSelect.js src/main/resources/static/js/Extjs/ZYML/BiaoZhuTu.js src/main/resources/static/js/Extjs/ZYML/BusinessLayerSelect.js src/main/resources/static/js/Extjs/ZYML/BusinessRefList.js src/main/resources/static/js/Extjs/ZYML/DataSource.js src/main/resources/static/js/Extjs/ZYML/JcdtList.js src/main/resources/static/js/Extjs/ZYML/ProblemFeedback.js src/main/resources/static/js/Extjs/ZYML/ShuJuYuan.js src/main/resources/static/js/Extjs/ZYML/ZYMLZiYuan.js src/main/resources/static/js/Extjs/ZYML/ZiYuanSelect.js src/main/resources/static/js/Extjs/ZYML/resourceList.js src/main/resources/static/js/Extjs/ZYZX/FangWenPaiHangGD.js src/main/resources/static/js/Extjs/ZYZX/SelectZhouBianTCSetBasic.js src/main/resources/static/js/Extjs/ZYZX/ShenQingZiYuanGD.js src/main/resources/static/js/Extjs/ZYZX/WoDeShouCangJiaGD.js src/main/resources/static/js/Extjs/ZYZX/ZiYuanKZ.js src/main/resources/static/js/Extjs/ZYZX/ZiYuanTongJiGD.js src/main/resources/static/js/Extjs/ZYZX/ZuiXinZiYuanGD.js src/main/resources/static/js/Extjs/ZiTuCengSheZHi.js src/main/resources/static/js/Extjs/restemplate/restemplate.js src/main/resources/static/js/FuWuZhiYuan/Index.js src/main/resources/static/js/GrayPhoto.js src/main/resources/static/js/MenHuMore.js src/main/resources/static/js/OperateLogUtil.js src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/app.js src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/bootstrap-responsive.min.css src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/bootstrap.min.css src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery-1.8.3.min.js src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery.easy-pie-chart.css src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/jquery.easy-pie-chart.js src/main/resources/static/js/PingTaiMenHuFile/GongNengQuHua/style.css src/main/resources/static/js/PingTaiMenHuFile/HaiYangJingJi/data-set.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYangJingJi/g2.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/admin.main.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/app.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap-responsive.min.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap.min.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/bootstrap.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/echarts.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/font-awesome.min.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/form-components.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery-1.8.3.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery-ui-1.10.1.custom.min.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/jquery.divresize.js src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style-metro.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style-responsive.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/style.css src/main/resources/static/js/PingTaiMenHuFile/HaiYuShiYong/uniform.default.css src/main/resources/static/js/ResManage/NewResRegister/EditInit.js src/main/resources/static/js/ResManage/NewResRegister/EsbManage.js src/main/resources/static/js/ZiYuanZhongXin/BaseLeftSource.js src/main/resources/static/js/ZiYuanZhongXin/FJGL_Ext.js src/main/resources/static/js/ZiYuanZhongXin/Index.js src/main/resources/static/js/ZiYuanZhongXin/Indexnew.js src/main/resources/static/js/ZiYuanZhongXin/ShenQingZiYuanGD.js src/main/resources/static/js/ZiYuanZhongXin/ziyuantuijian.js src/main/resources/static/js/base.js src/main/resources/static/js/bootstrap-colorpicker.js src/main/resources/static/js/common.js src/main/resources/static/js/common/resource_select.js src/main/resources/static/js/common/resource_set_ChartTemplat.js src/main/resources/static/js/common/resource_set_TuXin.js src/main/resources/static/js/common/resource_set_gltc.js src/main/resources/static/js/common/resource_set_zbcx.js src/main/resources/static/js/copyJs/clipboard.js src/main/resources/static/js/copyJs/clipboard.min.js src/main/resources/static/js/ditufuwu/ShenQingZiYuanGD.js src/main/resources/static/js/ditufuwu/fangwenpaihanggd.js src/main/resources/static/js/ditufuwu/index.js src/main/resources/static/js/ditufuwu/indexnew.js src/main/resources/static/js/ditufuwu/wodeshoucanggd.js src/main/resources/static/js/ditufuwu/ziyuantuijian.js src/main/resources/static/js/ditufuwu/zuixinziyuangd.js src/main/resources/static/js/echarts.min.4.1.js src/main/resources/static/js/esbmanage.js src/main/resources/static/js/esbmanagebak20200810.js src/main/resources/static/js/findPinyinByKeyWord.js src/main/resources/static/js/form-wizard_test.js src/main/resources/static/js/htmlformat.js src/main/resources/static/js/index.js src/main/resources/static/js/jqUI/jquery-ui.min.css src/main/resources/static/js/jqUI/jquery-ui.min.js src/main/resources/static/js/jquery-override.js src/main/resources/static/js/jquery.bootstrap.wizard.min.js src/main/resources/static/js/jsformat.js src/main/resources/static/js/manage/actionrecord.js src/main/resources/static/js/manage/appcount.js src/main/resources/static/js/manage/applyrecommend.js src/main/resources/static/js/manage/applyrecommendbysystem.js src/main/resources/static/js/manage/appreource.js src/main/resources/static/js/manage/apptotalcount.js src/main/resources/static/js/manage/audit.js src/main/resources/static/js/manage/catalog.js src/main/resources/static/js/manage/databasetable.js src/main/resources/static/js/manage/datasource/index.js src/main/resources/static/js/manage/datasource/panel_select.js src/main/resources/static/js/manage/evaluation.js src/main/resources/static/js/manage/onemapcatalog.js src/main/resources/static/js/manage/problemfeedback.js src/main/resources/static/js/manage/subscriptions.js src/main/resources/static/js/manage/subscriptionsaudit.js src/main/resources/static/js/manage/subscriptionslist.js src/main/resources/static/js/manage/symbollibrary.js src/main/resources/static/js/modules/sys/generator.js src/main/resources/static/js/modules/sys/menu.js src/main/resources/static/js/modules/sys/user.js src/main/resources/static/js/openresource.js src/main/resources/static/js/previewCtrl.js src/main/resources/static/js/selectChosen/chosen.jquery.js src/main/resources/static/js/selectChosen/chosen.jquery.min.js src/main/resources/static/js/selectChosen/component-chosen.min.css src/main/resources/static/js/theme/dark.js src/main/resources/static/js/theme/infographic.js src/main/resources/static/js/theme/lt_blue.js src/main/resources/static/js/theme/lt_mapChart.js src/main/resources/static/js/theme/macarons.js src/main/resources/static/js/theme/roma.js src/main/resources/static/js/theme/shine.js src/main/resources/static/js/theme/vintage.js src/main/resources/static/js/validator.js src/main/resources/static/js/ziyuanmulu/index.js src/main/resources/static/libs/ajaxupload.js src/main/resources/static/libs/app.js src/main/resources/static/libs/bootstrap-table.min.js src/main/resources/static/libs/bootstrap.min.js src/main/resources/static/libs/html5shiv.min.js src/main/resources/static/libs/jquery.min.js src/main/resources/static/libs/respond.min.js src/main/resources/static/libs/router.js src/main/resources/static/libs/vue.min.js src/main/resources/static/plugins/jqgrid/grid.locale-cn.js src/main/resources/static/plugins/jqgrid/jquery.jqGrid.min.js src/main/resources/static/plugins/jqgrid/ui.jqgrid-bootstrap-ui.css src/main/resources/static/plugins/jqgrid/ui.jqgrid-bootstrap.css src/main/resources/static/plugins/jqgrid/ui.jqgrid.css src/main/resources/static/plugins/layer/layer.js src/main/resources/static/plugins/layer/mobile/layer.js src/main/resources/static/plugins/layer/mobile/need/layer.css src/main/resources/static/plugins/layer/skin/default/icon-ext.png src/main/resources/static/plugins/layer/skin/default/icon.png src/main/resources/static/plugins/layer/skin/default/layer.css src/main/resources/static/plugins/layer/skin/default/loading-0.gif src/main/resources/static/plugins/layer/skin/default/loading-1.gif src/main/resources/static/plugins/layer/skin/default/loading-2.gif src/main/resources/static/plugins/layer/skin/moon/default.png src/main/resources/static/plugins/layer/skin/moon/style.css src/main/resources/static/plugins/tag/bower.json src/main/resources/static/plugins/tag/demo.html src/main/resources/static/plugins/tag/jquery.caret.min.js src/main/resources/static/plugins/tag/jquery.tag-editor.css src/main/resources/static/plugins/tag/jquery.tag-editor.js src/main/resources/static/plugins/tag/jquery.tag-editor.min.js src/main/resources/static/plugins/tag/readme.md src/main/resources/static/plugins/tag/tag-editor.jquery.json src/main/resources/static/plugins/tinymce/jquery.tinymce.min.js src/main/resources/static/plugins/tinymce/langs/readme.md src/main/resources/static/plugins/tinymce/langs/zh_CN.js src/main/resources/static/plugins/tinymce/license.txt src/main/resources/static/plugins/tinymce/plugins/advlist/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/anchor/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/autolink/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/autoresize/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/autosave/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/bbcode/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/charmap/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/code/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/codesample/css/prism.css src/main/resources/static/plugins/tinymce/plugins/codesample/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/colorpicker/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/contextmenu/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/directionality/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-cool.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-cry.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-embarassed.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-frown.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-innocent.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-kiss.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-laughing.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-money-mouth.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-sealed.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-smile.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-surprised.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-tongue-out.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-undecided.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-wink.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/img/smiley-yell.gif src/main/resources/static/plugins/tinymce/plugins/emoticons/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/fullpage/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/fullscreen/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/help/img/logo.png src/main/resources/static/plugins/tinymce/plugins/help/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/hr/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/image/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/imagetools/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/importcss/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/insertdatetime/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/legacyoutput/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/link/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/lists/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/media/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/nonbreaking/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/noneditable/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/pagebreak/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/paste/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/preview/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/print/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/save/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/searchreplace/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/spellchecker/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/tabfocus/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/table/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/template/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/textcolor/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/textpattern/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/toc/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/visualblocks/css/visualblocks.css src/main/resources/static/plugins/tinymce/plugins/visualblocks/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/visualchars/plugin.min.js src/main/resources/static/plugins/tinymce/plugins/wordcount/plugin.min.js src/main/resources/static/plugins/tinymce/skins/lightgray/content.inline.min.css src/main/resources/static/plugins/tinymce/skins/lightgray/content.min.css src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.eot src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.svg src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.ttf src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce-small.woff src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.eot src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.svg src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.ttf src/main/resources/static/plugins/tinymce/skins/lightgray/fonts/tinymce.woff src/main/resources/static/plugins/tinymce/skins/lightgray/img/anchor.gif src/main/resources/static/plugins/tinymce/skins/lightgray/img/loader.gif src/main/resources/static/plugins/tinymce/skins/lightgray/img/object.gif src/main/resources/static/plugins/tinymce/skins/lightgray/img/trans.gif src/main/resources/static/plugins/tinymce/skins/lightgray/skin.min.css src/main/resources/static/plugins/tinymce/themes/inlite/theme.min.js src/main/resources/static/plugins/tinymce/themes/modern/theme.min.js src/main/resources/static/plugins/tinymce/tinymce.min.js src/main/resources/static/plugins/treegrid/img/collapse.png src/main/resources/static/plugins/treegrid/img/expand.png src/main/resources/static/plugins/treegrid/img/file.png src/main/resources/static/plugins/treegrid/img/folder.png src/main/resources/static/plugins/treegrid/jquery.treegrid.bootstrap3.js src/main/resources/static/plugins/treegrid/jquery.treegrid.css src/main/resources/static/plugins/treegrid/jquery.treegrid.extension.js src/main/resources/static/plugins/treegrid/jquery.treegrid.min.js src/main/resources/static/plugins/treegrid/tree.table.js src/main/resources/static/plugins/ztree/css/awesomeStyle/awesome.css src/main/resources/static/plugins/ztree/css/awesomeStyle/awesome.less src/main/resources/static/plugins/ztree/css/awesomeStyle/fa.less src/main/resources/static/plugins/ztree/css/awesomeStyle/img/loading.gif src/main/resources/static/plugins/ztree/css/metroStyle/img/line_conn.png src/main/resources/static/plugins/ztree/css/metroStyle/img/loading.gif src/main/resources/static/plugins/ztree/css/metroStyle/img/metro.gif src/main/resources/static/plugins/ztree/css/metroStyle/img/metro.png src/main/resources/static/plugins/ztree/css/metroStyle/metroStyle.css src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/1_close.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/1_open.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/2.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/3.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/4.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/5.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/6.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/7.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/8.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/diy/9.png src/main/resources/static/plugins/ztree/css/zTreeStyle/img/line_conn.gif src/main/resources/static/plugins/ztree/css/zTreeStyle/img/loading.gif src/main/resources/static/plugins/ztree/css/zTreeStyle/img/zTreeStandard.gif src/main/resources/static/plugins/ztree/css/zTreeStyle/img/zTreeStandard.png src/main/resources/static/plugins/ztree/css/zTreeStyle/zTreeStyle.css src/main/resources/static/plugins/ztree/jquery.ztree.all.min.js src/main/resources/templates/FuWuZiYuan/Index.html src/main/resources/templates/FuWuZiYuan/JcdtDataList.html src/main/resources/templates/FuWuZiYuan/JcdtList.html src/main/resources/templates/FuWuZiYuan/Left.html src/main/resources/templates/FuWuZiYuan/ZiYuanDataList.html src/main/resources/templates/FuWuZiYuan/ZiYuanList.html src/main/resources/templates/FuWuZiYuan/ZiYuanSelect.html src/main/resources/templates/FuWuZiYuan/ZiYuanSelect_Edit.html src/main/resources/templates/IsLandType/BaoHuIndex.html src/main/resources/templates/IsLandType/JianCeIndex.html src/main/resources/templates/IsLandType/JuMinIndex.html src/main/resources/templates/IsLandType/QuanYiIndex.html src/main/resources/templates/IsLandType/XinXiIndex.html src/main/resources/templates/IsLandTypeTemp/BaoHuIndex.html src/main/resources/templates/IsLandTypeTemp/JianCeIndex.html src/main/resources/templates/IsLandTypeTemp/QuanYiIndex.html src/main/resources/templates/IsLandTypeTemp/XinXiIndex.html src/main/resources/templates/KeShiHuaFuWu/Index.html src/main/resources/templates/MasterDemo.html src/main/resources/templates/MasterPage/CommonPage/Header.html src/main/resources/templates/MasterPage/CommonPage/Layout.html src/main/resources/templates/MasterPage/Header.html src/main/resources/templates/MasterPage/Layout.Empty.html src/main/resources/templates/MasterPage/Layout.html src/main/resources/templates/MasterPage/New/Header.html src/main/resources/templates/MasterPage/New/Layout.html src/main/resources/templates/MasterPage/New/footer.html src/main/resources/templates/MasterPage/footer.html src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_New.html src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewThree.html src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewThree_bak.html src/main/resources/templates/PingTaiMenHu/ChaoXiGuanCe_NewTwo.html src/main/resources/templates/PingTaiMenHu/GongNengQuHua_New.html src/main/resources/templates/PingTaiMenHu/GongNengQuHua_NewTwo.html src/main/resources/templates/PingTaiMenHu/GongZuoTai.html src/main/resources/templates/PingTaiMenHu/GongZuoTai_New.html src/main/resources/templates/PingTaiMenHu/HaiDaoShuLiang_New.html src/main/resources/templates/PingTaiMenHu/HaiDaoTongJi.html src/main/resources/templates/PingTaiMenHu/HaiYangJingJi_New.html src/main/resources/templates/PingTaiMenHu/HaiYangJingJi_NewTwo.html src/main/resources/templates/PingTaiMenHu/HaiYuShiYong_New.html src/main/resources/templates/PingTaiMenHu/HuanJingJianCeFuBiao.html src/main/resources/templates/PingTaiMenHu/JianCeZhanDian.html src/main/resources/templates/PingTaiMenHu/JianCeZhanDian_New.html src/main/resources/templates/PingTaiMenHu/LianJie.html src/main/resources/templates/PingTaiMenHu/LianJie_New.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ChaoXiGuanCe.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ChaoXiGuanCe_bak.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/GongZuoTai.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/PubNews.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/ShiPinJianKong.html src/main/resources/templates/PingTaiMenHu/NewPingTaiMenHu/SystemList.html src/main/resources/templates/PingTaiMenHu/NewPubNews/ZiXunDataList.html src/main/resources/templates/PingTaiMenHu/NewPubNews/ZiXunIndex.html src/main/resources/templates/PingTaiMenHu/ShiPinJianKong.html src/main/resources/templates/PingTaiMenHu/ShiPinJianKong_New.html src/main/resources/templates/PingTaiMenHu/ShowShiPin.html src/main/resources/templates/PingTaiMenHu/SystemInfoList.html src/main/resources/templates/PingTaiMenHu/YonHaiXiangMu.html src/main/resources/templates/PingTaiMenHu/ZiXunDataList.html src/main/resources/templates/PingTaiMenHu/ZiXunDongTai.html src/main/resources/templates/PingTaiMenHu/ZiXunDongTai_New.html src/main/resources/templates/PingTaiMenHu/ZiXunIndex.html src/main/resources/templates/PingTaiMenHu/ZiXunInfo.html src/main/resources/templates/ResActionRecord/ShenQingZiYuanGD.html src/main/resources/templates/ResActionRecord/ZuiXinZiYuanGD.html src/main/resources/templates/ResManage/NewResRegister/Edit.html src/main/resources/templates/ResManage/NewResRegister/Ext3D.html src/main/resources/templates/ResManage/NewResRegister/ExtBaseMap.html src/main/resources/templates/ResManage/NewResRegister/ExtBusinessLayer.html src/main/resources/templates/ResManage/NewResRegister/ExtDataBase.html src/main/resources/templates/ResManage/NewResRegister/ExtFileSource.html src/main/resources/templates/ResManage/NewResRegister/ExtIntegrate.html src/main/resources/templates/ResManage/NewResRegister/ExtInterFaceService.html src/main/resources/templates/ResManage/NewResRegister/ExtMapUrl.html src/main/resources/templates/ResManage/NewResRegister/ExtPresentationMode.html src/main/resources/templates/ResManage/NewResRegister/ExtSpaceServer.html src/main/resources/templates/ResManage/NewResRegister/ExtSpaceServerParams.html src/main/resources/templates/ResManage/NewResRegister/ExtThemeMap.html src/main/resources/templates/ResManage/NewResRegister/MainInfo.html src/main/resources/templates/ResManage/NewResRegister/ResFiles.html src/main/resources/templates/ResManage/NewResRegister/ResResourceClass.html src/main/resources/templates/ResManage/NewResRegister/SpaceParameters.html src/main/resources/templates/ResManage/NewResRegister/SpaceParameters_Edit.html src/main/resources/templates/ResManage/NewResRegister/obtainExtentMapViewer.html src/main/resources/templates/ResManage/ResApplyRecommend/AddDataSource.html src/main/resources/templates/ResManage/ResApplyRecommend/ApplyRecommendInfo.html src/main/resources/templates/ResManage/ResApplyRecommend/GuanLianBiaoZhuTu.html src/main/resources/templates/ResManage/ResApplyRecommend/MainInfoByYWTC.html src/main/resources/templates/ResManage/ResApplyRecommend/ZiYuanDingYue.html src/main/resources/templates/ResManage/ResApplyRecommend/ZiYuanShenQing.html src/main/resources/templates/ResManage/ResRegister/AreaTree.html src/main/resources/templates/ResManage/ResRegister/AtkasList.html src/main/resources/templates/ResManage/ResRegister/BaseInfoEextInterFace.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExt3D.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtBaseMap.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtBusinessLayer.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtDataBase.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtFileSource.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtIntegrate.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtSpaceServer.html src/main/resources/templates/ResManage/ResRegister/BaseInfoExtThemeMap.html src/main/resources/templates/ResManage/ResRegister/BaseMapSelect.html src/main/resources/templates/ResManage/ResRegister/BusinessLayerSelect.html src/main/resources/templates/ResManage/ResRegister/BusinessRef.html src/main/resources/templates/ResManage/ResRegister/DataSource.html src/main/resources/templates/ResManage/ResRegister/DataSourceBase.html src/main/resources/templates/ResManage/ResRegister/DataSourceBase_Edit.html src/main/resources/templates/ResManage/ResRegister/DisplayType.html src/main/resources/templates/ResManage/ResRegister/Edit.html src/main/resources/templates/ResManage/ResRegister/Ext3D.html src/main/resources/templates/ResManage/ResRegister/ExtApp.html src/main/resources/templates/ResManage/ResRegister/ExtBaseMap.html src/main/resources/templates/ResManage/ResRegister/ExtBusinessLayer.html src/main/resources/templates/ResManage/ResRegister/ExtDataBase.html src/main/resources/templates/ResManage/ResRegister/ExtFileSource.html src/main/resources/templates/ResManage/ResRegister/ExtIntegrate.html src/main/resources/templates/ResManage/ResRegister/ExtInterFaceService.html src/main/resources/templates/ResManage/ResRegister/ExtPresentationMode.html src/main/resources/templates/ResManage/ResRegister/ExtSpaceServer.html src/main/resources/templates/ResManage/ResRegister/ExtThemeMap.html src/main/resources/templates/ResManage/ResRegister/GuanLianBiaoZhuTu.html src/main/resources/templates/ResManage/ResRegister/List.html src/main/resources/templates/ResManage/ResRegister/MainInfo.html src/main/resources/templates/ResManage/ResRegister/MainInfoByYWTC.html src/main/resources/templates/ResManage/ResRegister/MuLuShu.html src/main/resources/templates/ResManage/ResRegister/NcFileConfig.html src/main/resources/templates/ResManage/ResRegister/ProblemFeedback.html src/main/resources/templates/ResManage/ResRegister/ResFiles.html src/main/resources/templates/ResManage/ResRegister/SelectZhouBianTCSetBasic.html src/main/resources/templates/ResManage/ResRegister/ShuJuYuan.html src/main/resources/templates/ResManage/ResRegister/ShuJuYuanInsert.html src/main/resources/templates/ResManage/ResRegister/SpaceParameters.html src/main/resources/templates/ResManage/ResRegister/SpaceParameters_Edit.html src/main/resources/templates/ResManage/ResRegister/StorageConfig.html src/main/resources/templates/ResManage/ResRegister/WSDL.html src/main/resources/templates/ResManage/ResRegister/ZiTuCengSheZhi.html src/main/resources/templates/ResManage/ResRegister/ZiYuanBaseInfo.html src/main/resources/templates/ResManage/ResRegister/ZiYuanBaseInfo_bak20190109.html src/main/resources/templates/ResManage/ResRegister/ZiYuanErrorPage.html src/main/resources/templates/ResManage/ResRegister/ZiYuanKZ.html src/main/resources/templates/ResManage/ResRegister/ZiYuanRecommend.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoEextInterFace.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExt3D.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtBaseMap.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtBusinessLayer.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtDataBase.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtFileSource.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtIntegrate.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtSpaceServer.html src/main/resources/templates/ResManage/ResRegister/bak20190109/BaseInfoExtThemeMap.html src/main/resources/templates/ResManage/ResTheme/AddResTheme.html src/main/resources/templates/ResManage/ResTheme/AddResThemeModule.html src/main/resources/templates/ResManage/ResTheme/KongJianFuWuTree.html src/main/resources/templates/ResManage/ResTheme/MapSelect.html src/main/resources/templates/ResManage/ResTheme/ModuleList.html src/main/resources/templates/ResManage/ResTheme/PanelSelect.html src/main/resources/templates/ResManage/ResTheme/ResThemeModule.html src/main/resources/templates/ResManage/ResTheme/ZhuangTiDiTuTree.html src/main/resources/templates/ResManage/ResTheme/catalog/catalog_add.html src/main/resources/templates/ResManage/ResTheme/catalog/catalog_basicinfo.html src/main/resources/templates/ResManage/ResTheme/catalog/catalog_sort.html src/main/resources/templates/ResManage/ResTheme/catalog/index.html src/main/resources/templates/ResManage/ResTheme/catalog/left.html src/main/resources/templates/ResManage/ResTheme/catalog/onemapindex.html src/main/resources/templates/ResManage/ResTheme/catalog/resource_sort.html src/main/resources/templates/ResManage/ResTheme/catalog/text.html src/main/resources/templates/ResManage/ResTheme/index.html src/main/resources/templates/ShuJuZhanShi/AXCDTJ.html src/main/resources/templates/ShuJuZhanShi/AnXianTJ.html src/main/resources/templates/ShuJuZhanShi/DQHYSCIndex.html src/main/resources/templates/ShuJuZhanShi/DaiDingTongJi.html src/main/resources/templates/ShuJuZhanShi/GKHWIndex.html src/main/resources/templates/ShuJuZhanShi/GKJZXIndex.html src/main/resources/templates/ShuJuZhanShi/GKLKIndex.html src/main/resources/templates/ShuJuZhanShi/HYCYIndex.html src/main/resources/templates/ShuJuZhanShi/HYFZIndex.html src/main/resources/templates/ShuJuZhanShi/HYJJFZIndex.html src/main/resources/templates/ShuJuZhanShi/HYSYQQZSZHMJindex.html src/main/resources/templates/ShuJuZhanShi/HaiYangJingJi.html src/main/resources/templates/ShuJuZhanShi/Index.html src/main/resources/templates/ShuJuZhanShi/JJSSIndex.html src/main/resources/templates/ShuJuZhanShi/QGHYSCIndex.html src/main/resources/templates/ShuJuZhanShi/SHJYRYIndex.html src/main/resources/templates/ShuJuZhanShi/Test1.html src/main/resources/templates/ShuJuZhanShi/Test2.html src/main/resources/templates/ShuJuZhanShi/Test3.html src/main/resources/templates/ShuJuZhanShi/Test4.html src/main/resources/templates/ShuJuZhanShi/Test5.html src/main/resources/templates/ShuJuZhanShi/Test5_bak.html src/main/resources/templates/ShuJuZhanShi/Test6.html src/main/resources/templates/ShuJuZhanShi/Test6_bak.html src/main/resources/templates/ShuJuZhanShi/Test6_bak20190122.html src/main/resources/templates/ShuJuZhanShi/Test7.html src/main/resources/templates/ShuJuZhanShi/Test7_bak.html src/main/resources/templates/ShuJuZhanShi/XZQHIndex.html src/main/resources/templates/ShuJuZhanShi/XZQHIndex1.html src/main/resources/templates/ShuJuZhanShi/YHFSMJTJindex.html src/main/resources/templates/ZiYuanZhongXin/BaseLeftSource.html src/main/resources/templates/ZiYuanZhongXin/FangWenPaiHangGD.html src/main/resources/templates/ZiYuanZhongXin/Index.html src/main/resources/templates/ZiYuanZhongXin/New/Index.html src/main/resources/templates/ZiYuanZhongXin/WoDeShouCangJiaGD.html src/main/resources/templates/ZiYuanZhongXin/ZiDuanBieMingBasic.html src/main/resources/templates/ZiYuanZhongXin/ZiDuanBieMingBasic_Edit.html src/main/resources/templates/ZiYuanZhongXin/ZiDuanYingShe.html src/main/resources/templates/ZiYuanZhongXin/ZiDuanYingSheBasic.html src/main/resources/templates/ZiYuanZhongXin/ZiYuanTongJiGD.html src/main/resources/templates/ZiYuanZhongXin/ZiYuanTuiJianGD.html src/main/resources/templates/bak/FuWuZiYuan/JcdtList_bak.html src/main/resources/templates/common/SelectOfChart.html src/main/resources/templates/common/ServiceConfig.html src/main/resources/templates/common/TuXinCongif.html src/main/resources/templates/common/TuXingConfig.html src/main/resources/templates/common/add_ServiceConfig.html src/main/resources/templates/common/jitmonitor.html src/main/resources/templates/common/obtainExtentMapViewer.html src/main/resources/templates/common/resource_add_ChartTemplat.html src/main/resources/templates/common/resource_add_TuXin.html src/main/resources/templates/common/resource_select.html src/main/resources/templates/common/resource_set_ChartTemplat.html src/main/resources/templates/common/resource_set_TuXin.html src/main/resources/templates/common/resource_set_gltc.html src/main/resources/templates/common/resource_set_zbcx.html src/main/resources/templates/demo.html src/main/resources/templates/ditufuwu/New/index.html src/main/resources/templates/ditufuwu/ShenQingZiYuanGD.html src/main/resources/templates/ditufuwu/ZiYuanTuiJianGD.html src/main/resources/templates/ditufuwu/fangwenpaihanggd.html src/main/resources/templates/ditufuwu/index.html src/main/resources/templates/ditufuwu/wodeshoucanggd.html src/main/resources/templates/ditufuwu/ziyuantuijian.html src/main/resources/templates/ditufuwu/zuixinziyuangd.html src/main/resources/templates/generator/Controller.java.vm src/main/resources/templates/generator/Dao.java.vm src/main/resources/templates/generator/Dao.xml.vm src/main/resources/templates/generator/Entity.java.vm src/main/resources/templates/generator/Service.java.vm src/main/resources/templates/generator/ServiceImpl.java.vm src/main/resources/templates/generator/generatorConfig.xml src/main/resources/templates/generator/list.html.vm src/main/resources/templates/generator/list.js.vm src/main/resources/templates/jichuditu/dataList.html src/main/resources/templates/jichuditu/dataList_New.html src/main/resources/templates/jichuditu/index.html src/main/resources/templates/jichuditu/index_New.html src/main/resources/templates/liferay_userinfo.html src/main/resources/templates/liferay_userinfoNew.html src/main/resources/templates/manage/actionrecord/AppResource.html src/main/resources/templates/manage/actionrecord/AppTotalCount.html src/main/resources/templates/manage/actionrecord/index.html src/main/resources/templates/manage/applyrecommend/AppCount.html src/main/resources/templates/manage/applyrecommend/content.html src/main/resources/templates/manage/applyrecommend/index.html src/main/resources/templates/manage/applyrecommend/indexbysystem.html src/main/resources/templates/manage/applyrecommend/ziyuanapply.html src/main/resources/templates/manage/audit/index.html src/main/resources/templates/manage/catalog/catalog_add.html src/main/resources/templates/manage/catalog/catalog_basicinfo.html src/main/resources/templates/manage/catalog/catalog_sort.html src/main/resources/templates/manage/catalog/index.html src/main/resources/templates/manage/catalog/left.html src/main/resources/templates/manage/catalog/resource_sort.html src/main/resources/templates/manage/catalog/text.html src/main/resources/templates/manage/datasource/baseinfo.html src/main/resources/templates/manage/datasource/edit.html src/main/resources/templates/manage/datasource/index.html src/main/resources/templates/manage/datasource/panel_add.html src/main/resources/templates/manage/datasource/panel_select.html src/main/resources/templates/manage/evaluation/content.html src/main/resources/templates/manage/evaluation/index.html src/main/resources/templates/manage/problemfeedback/index.html src/main/resources/templates/manage/subscriptions/audit.html src/main/resources/templates/manage/subscriptions/content.html src/main/resources/templates/manage/subscriptions/index.html src/main/resources/templates/manage/subscriptions/opinion.html src/main/resources/templates/manage/subscriptions/subscriptions_list.html src/main/resources/templates/manage/symbolLibrary/edit.html src/main/resources/templates/manage/symbolLibrary/index.html src/main/resources/templates/manage/symbolLibrary/symbolmap.html src/main/resources/templates/restemplate/editchartcontent.html src/main/resources/templates/restemplate/restemplate_edit.html src/main/resources/templates/restemplate/restemplate_list.html src/main/resources/templates/servermoniter/.vscode/settings.json src/main/resources/templates/servermoniter/citystore.js src/main/resources/templates/servermoniter/data.js src/main/resources/templates/servermoniter/demo.html src/main/resources/templates/servermoniter/echarts_4.1.0.rc2_echarts.min.js src/main/resources/templates/servermoniter/images/bj.png src/main/resources/templates/servermoniter/images/cc.png src/main/resources/templates/servermoniter/images/cdian.png src/main/resources/templates/servermoniter/images/gy-bj.png src/main/resources/templates/servermoniter/images/gy-kgx.png src/main/resources/templates/servermoniter/images/gy-lk.png src/main/resources/templates/servermoniter/images/gy-lk1.png src/main/resources/templates/servermoniter/images/gy-rt.png src/main/resources/templates/servermoniter/images/gy-rt1.png src/main/resources/templates/servermoniter/images/gy-scx.png src/main/resources/templates/servermoniter/images/gy-taix.png src/main/resources/templates/servermoniter/images/gy-tt.png src/main/resources/templates/servermoniter/images/jdian.png src/main/resources/templates/servermoniter/images/jh.png src/main/resources/templates/servermoniter/images/jk.png src/main/resources/templates/servermoniter/images/jx1.png src/main/resources/templates/servermoniter/images/jx2.png src/main/resources/templates/servermoniter/images/jx3.png src/main/resources/templates/servermoniter/images/jx4.png src/main/resources/templates/servermoniter/images/jx5.png src/main/resources/templates/servermoniter/images/jx6.png src/main/resources/templates/servermoniter/images/jx7.png src/main/resources/templates/servermoniter/images/lx.png src/main/resources/templates/servermoniter/images/nybj.png src/main/resources/templates/servermoniter/images/ss.png src/main/resources/templates/servermoniter/images/w-lx.png src/main/resources/templates/servermoniter/images/wg.png src/main/resources/templates/servermoniter/images/wl-tt.png src/main/resources/templates/servermoniter/images/xx.png src/main/resources/templates/servermoniter/images/yw-tt.png src/main/resources/templates/servermoniter/images/yw-x.png src/main/resources/templates/servermoniter/images/zj.png src/main/resources/templates/servermoniter/index.html src/main/resources/templates/servermoniter/jquery-3.1.0.min.js src/main/resources/templates/servermoniter/monitor.js src/main/resources/templates/servermoniter/大数据运维总览图.png src/main/resources/templates/systeminfo/dataList.html src/main/resources/templates/systeminfo/dataList_New.html src/main/resources/templates/systeminfo/index.html src/main/resources/templates/systeminfo/index_New.html src/main/resources/templates/test/BaseInfo.html src/main/resources/templates/test/DataBase.html src/main/resources/templates/test/Edit.html src/main/resources/templates/test/EsbProxy.html src/main/resources/templates/test/Ext3D.html src/main/resources/templates/test/ExtBaseMap.html src/main/resources/templates/test/ExtBusinessLayer.html src/main/resources/templates/test/ExtDataBase.html src/main/resources/templates/test/ExtFileSource.html src/main/resources/templates/test/ExtIntegrate.html src/main/resources/templates/test/ExtInterFaceService.html src/main/resources/templates/test/ExtSpaceServer.html src/main/resources/templates/test/ExtThemeMap.html src/main/resources/templates/test/MainInfo.html src/main/resources/templates/test/first.html src/main/resources/templates/test/form_wizard.html src/main/resources/templates/test/third.html src/main/resources/templates/zhuantizhitu/index.html src/main/resources/templates/ziyuanfabu/dataList.html src/main/resources/templates/ziyuanfabu/dataList_New.html src/main/resources/templates/ziyuanfabu/index.html src/main/resources/templates/ziyuanfabu/index_New.html src/main/resources/templates/ziyuanmulu/index.html src/main/resources/templates/ziyuanmulu/index_New.html src/main/resources/templates/大数据运维总览图/citystore.js src/main/resources/templates/大数据运维总览图/echarts_4.1.0.rc2_echarts.min.js src/main/resources/templates/大数据运维总览图/images/bj.png src/main/resources/templates/大数据运维总览图/images/cc.png src/main/resources/templates/大数据运维总览图/images/cdian.png src/main/resources/templates/大数据运维总览图/images/gy-bj.png src/main/resources/templates/大数据运维总览图/images/gy-kgx.png src/main/resources/templates/大数据运维总览图/images/gy-lk.png src/main/resources/templates/大数据运维总览图/images/gy-lk1.png src/main/resources/templates/大数据运维总览图/images/gy-rt.png src/main/resources/templates/大数据运维总览图/images/gy-rt1.png src/main/resources/templates/大数据运维总览图/images/gy-scx.png src/main/resources/templates/大数据运维总览图/images/gy-taix.png src/main/resources/templates/大数据运维总览图/images/gy-tt.png src/main/resources/templates/大数据运维总览图/images/jdian.png src/main/resources/templates/大数据运维总览图/images/jh.png src/main/resources/templates/大数据运维总览图/images/jk.png src/main/resources/templates/大数据运维总览图/images/jx1.png src/main/resources/templates/大数据运维总览图/images/jx2.png src/main/resources/templates/大数据运维总览图/images/jx3.png src/main/resources/templates/大数据运维总览图/images/jx4.png src/main/resources/templates/大数据运维总览图/images/jx5.png src/main/resources/templates/大数据运维总览图/images/jx6.png src/main/resources/templates/大数据运维总览图/images/jx7.png src/main/resources/templates/大数据运维总览图/images/lx.png src/main/resources/templates/大数据运维总览图/images/nybj.png src/main/resources/templates/大数据运维总览图/images/ss.png src/main/resources/templates/大数据运维总览图/images/w-lx.png src/main/resources/templates/大数据运维总览图/images/wg.png src/main/resources/templates/大数据运维总览图/images/wl-tt.png src/main/resources/templates/大数据运维总览图/images/xx.png src/main/resources/templates/大数据运维总览图/images/yw-tt.png src/main/resources/templates/大数据运维总览图/images/yw-x.png src/main/resources/templates/大数据运维总览图/images/zj.png src/main/resources/templates/大数据运维总览图/index.html src/main/resources/templates/大数据运维总览图/jquery-3.1.0.min.js src/main/resources/templates/大数据运维总览图/monitor.js src/main/resources/templates/大数据运维总览图/大数据运维总览图.png src/main/resources/views/admin/index.html src/main/resources/views/admin/login.html src/main/resources/views/admin/modules/sys/generator.html src/main/resources/views/admin/modules/sys/main.html src/main/resources/views/admin/modules/sys/menu.html src/main/resources/views/admin/modules/sys/user.html src/main/resources/views/servermonitor/.vscode/settings.json src/main/resources/views/servermonitor/citystore.js src/main/resources/views/servermonitor/data.js src/main/resources/views/servermonitor/demo.html src/main/resources/views/servermonitor/echarts_4.1.0.rc2_echarts.min.js src/main/resources/views/servermonitor/images/bj.png src/main/resources/views/servermonitor/images/cc.png src/main/resources/views/servermonitor/images/cdian.png src/main/resources/views/servermonitor/images/gy-bj.png src/main/resources/views/servermonitor/images/gy-kgx.png src/main/resources/views/servermonitor/images/gy-lk.png src/main/resources/views/servermonitor/images/gy-lk1.png src/main/resources/views/servermonitor/images/gy-rt.png src/main/resources/views/servermonitor/images/gy-rt1.png src/main/resources/views/servermonitor/images/gy-scx.png src/main/resources/views/servermonitor/images/gy-taix.png src/main/resources/views/servermonitor/images/gy-tt.png src/main/resources/views/servermonitor/images/jdian.png src/main/resources/views/servermonitor/images/jh.png src/main/resources/views/servermonitor/images/jk.png src/main/resources/views/servermonitor/images/jx1.png src/main/resources/views/servermonitor/images/jx2.png src/main/resources/views/servermonitor/images/jx3.png src/main/resources/views/servermonitor/images/jx4.png src/main/resources/views/servermonitor/images/jx5.png src/main/resources/views/servermonitor/images/jx6.png src/main/resources/views/servermonitor/images/jx7.png src/main/resources/views/servermonitor/images/lx.png src/main/resources/views/servermonitor/images/nybj.png src/main/resources/views/servermonitor/images/ss.png src/main/resources/views/servermonitor/images/w-lx.png src/main/resources/views/servermonitor/images/wg.png src/main/resources/views/servermonitor/images/wl-tt.png src/main/resources/views/servermonitor/images/xx.png src/main/resources/views/servermonitor/images/yw-tt.png src/main/resources/views/servermonitor/images/yw-x.png src/main/resources/views/servermonitor/images/zj.png src/main/resources/views/servermonitor/index.html src/main/resources/views/servermonitor/jquery-3.1.0.min.js src/main/resources/views/servermonitor/monitor.js src/main/resources/views/servermonitor/大数据运维总览图.png temp/ResExtThemMapServer/i_expand.png temp/ResExtThemMapServer/i_expand2.png 脚本/2021-11-30_RES_MAININFO新增字段SPC_STATUS 专题数据标识 脚本/20211230_001_更新资源状态.sql 说明.txt