----------------------------------------------------------------------------------------------------
01.修改菜单、数据目录、单位的xls数据,编写递归查询SQL
02.登录时验证使用MD5+Salt密码
03.登录时的用户名和密码使用RSA加密、解密
04.WebSocket服务
05.资源实时监控(CPU信息+内存信息+在线用户+资源状态)
06.新建和修改用户密码时使用MD5加密
07.解决Swagger-UI无法传递Cookie信息
08.验证密码复杂度(8-20位包含字母、数字和特殊字符)
09.使用GDAL读取tif、shp、gdb文件
10.添加Mybatis Plus组件
11.解决表映射出错、根据ID查询失败、分页无效等问题
12.开发地名地址分页查询接口
13.开发上传shp文件读取第一条记录的WKT功能
14.解决上传文件时实体类映射异常
15.后台服务访问添加登录验证拦截器
16.开发切面日志功能
17.添加数据库监控功能(Druid Monitor)
18.设置下载文件的MIME类型
19.5分钟内密码错误5次拒绝登录
20.开发获取资源权限、菜单权限、操作权限接口
21.Redis服务配置强密码,并解决SpringBoot启动后无法访问
22.修改钻孔表的数据结构,添加新的字段
23.修改钻孔数据下载工具,更新新增字段的属性
24.身份认证拦截器添加黑白名单检查功能
25.开发自动生成Mybtis Plus代码小工具
26.批量生成基础数据表的实体类和Mapper类
27.修改所有的批量新增、删除、修改接口
28.开发大文件上传接口(commons-fileupload)
29.开发批量修改用户密码接口
30.开发上传Shp文件功能
31.使用Gdal读取Shp文件,读取后删除文件
32.修改字典表的数据结构,变更所有涉及的后台方法
33.开发值域表的操作接口
34.修改字典管理、值域管理的接口
35.对用户、菜单、角色、资源进行授权
36.添加查询角色、菜单、资源权限接口
37.开发根据实体名称动态查询表的记录数
38.开发根据实体名称进行动态分页查询
39.开发根据实体名称+字段+值模糊搜索前10条记录
40.开发根据实体名称查询空间表的WKT记录
41.搭建QGIS+Python开发环境
42.开发根据名称模糊搜索用户、单位的前10条记录
43.构建QGIS工程,使用Python运行工程
44.开发QGIS生成专题图功能
45.开发根据标绘JSON数据生成shp文件并下载
46.创建QGIS出图模板,开发根据模板出图功能
47.开发QGIS出图的C#服务
48.开发通过格式化参数调用Python程序出图
49.解决出图页面溢出、图标丢失、底图切换等问题
50.开发.net服务调用Python程序,实现接口出图功能
51.在开发环境部署QGIS+Python出图功能 <
52.
53.
54.
55.
56.
57.
58.
59.
60.
-----------------------------------------------
.开发上传shp文件转换为JSON数据接口
.开发读取Excel表格功能
.开发根据实体名称动态读取Excel功能
E:\terrait\TianJin\Zip\release-1928-x64-dev\release-1928-x64\bin
链接:https://pan.baidu.com/s/1H2G34m8vIZkfeoKghEtegg?pwd=vlie
提取码:vlie
链接:https://pan.baidu.com/s/10mW7dCJiBwgx5eBQy137EA
提取码:3mwj
----------------------------------------------------------------------------------------------------
@TableField(value = "class")
private String clazz;
java 调用gdal读取gdb数据,linux下java调用gdal:
https://blog.csdn.net/weixin_53853459/article/details/120954597
https://blog.csdn.net/qq_43444401/article/details/125649414
https://blog.csdn.net/qq_43961619/article/details/124627871
http://127.0.0.1:12316/dict/selectCount?tab=sys_user
http://127.0.0.1:12316/Dict/selectByPage?tab=sys_user&pageSize=10&pageIndex=0
http://127.0.0.1:12316/Style/selectCount?name=edp
http://127.0.0.1:12316/Style/selectByPage?name=edp&pageSize=10&pageIndex=0
http://127.0.0.1/lf/sg/login.html
http://127.0.0.1:12316/swagger-ui.html
http://192.168.20.106:12316/swagger-ui.html
http://localhost:12316/sign/toIndex
http://localhost:12316/sign/toLogin
http://127.0.0.1:12316/sign/toLogin?service=http://www.sina.com.cn
.gdb > HFCP+LRRL + TFCA
.shp > F5004_WT.shp + F5004_WL.shp + F5004.shp
------------------------------------------------------------------------------- 暂时未对应的Controller
data/DownloadController
data/MetaFileController
sys/AttachController
sys/MsgController
----------------------------------------------------------------------------------------------------
java和js实现aes加密解密:
https://blog.csdn.net/weixin_30663839/article/details/114049667
http://192.168.20.39:12306/
http://192.168.20.39:12315/
http://192.168.20.39:12316/
----------------------------------------------------------------------------------------------------
String path = System.getProperty("user.dir");
String uid = RsaHelper.decrypt(user.getUid());
String pwd = RsaHelper.decrypt(user.getPwd());
String p1="Admin@123";
boolean f = p1.equalsIgnoreCase("Some text here");
String p2= RsaHelper.encrypt(p1);
String p3= RsaHelper.decrypt(p2);
http://192.168.20.39:8088/cas/login,admin/Admin@123,postgres
String pwd = "Admin@123";
String md5 = "b37f70636f1164e86cc8796201737933f65af63918d8442b";
boolean f1 = Md5Helper.validatePassword(pwd, md5);
String md5Pwd = Md5Helper.reverse(Md5Helper.generate(pwd));
boolean f2 = Md5Helper.validatePassword(pwd, md5Pwd);
new String(Base64.getDecoder().decode(username));
下载:http://127.0.0.1:12316/style/download?guid=15deb4e6bf02db827e39521758520fd5
使用Commons FileUpLoad 文件上传功能:
https://www.itdaan.com/blog/2017/08/08/b2dbc1106fa7.html
Postgresql按天、周、月、年统计信息:
https://blog.csdn.net/qq_44663150/article/details/119681400
----------------------------------------------------------------------------------------------------
一、开发运行环境
JDK版本:1.8
maven版本:3.5
文件编码:UTF-8
二、技术框架说明
总体采用了前后端分离的技术方案,后台提供REST服务,前端使用MVVM框架做用户交互。
前后端可并行独立开发。
----------------------------------------------------------------------------------------------------
服务端:
核心框架:SpringBoot
持久层框架:Mybatis
安全框架:Shiro
缓存:redis
前端:
JS框架:vue.js
主页框架:adminLTE(基于Bootstrap)
表格插件:jqGrid
树形表格:tree-table
树形插件:ztree
弹窗组件:layer
表单校验:validator
private static final String SQLSERVER_URL = "jdbc:sqlserver://192.168.0.77\\ZKZS;databaseName=xian";
---------------------------------------------------------------------------------------------------- floatserver
http://localhost:12316/floatserver/checkout/license
String str = EntityUtils.toString(entity, "UTF-8");
java -jar C:\360\luyten054\luyten-0.5.4.jar
请求:
8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cf755f0dfd19be0d80e2573e0a2a22edca35215b390607b0ff68deab90c69296df60934315036bd8a64ee668a39502754b701be7534d0ca2e790161194d673d9454c44c570a1dbe604ac5952be731ca15809f9f4d43ad1b023f69981ce77abacc50e8e5217627eb236d5f6d114e00585d9a597f3a195b0b0c0ff8cf1e2445ca12e
响应:
8dfb75298185cbcc4b2d485fdb4f25627f7aeb4dd41329076b5015586e4d56cfe2c56f12cd9852c447904210117b41fe2672b24d7e82fd581ad5a0983b501b5bcbe97d65dbbe770dbdc4a98e80d2966a71ecd0041a5282283bff853d70caf7aed671bc9c9d4bedf6d1d0294394861af40f195d68a965d957d53c78aa50ada3afc65d1a526c54648e6e081e8f7f7ab1c31b9f75916170e638b0b9216d30204864afe3a7a1bc8a6563bf44daf6a29e27c19f798c4f82dbb904ea4aa4fcc87a82226d9bf3e891ecb97b94263064fec025e3aa7c440d7c0e8ed559b84ae2438ec0fc438444a03c992883170ecdde20e08552efcf9d584de469930b27c81f946548d5c6e63e815671182b03b5e6e622ddb10a3f6a35ad3f44ec247a3b2dee0e936020d48efb7abc2d2abfb555f61d54c85eca
{"machineId":"dba5c0f908f92fbdb6f0a3f58a5a3193","isRegistered":true,"registeredModules":[1,3,4,9,10,11,12,13,17,25,30,33,37],"modules":[{"id":1,"name":"wms","group":"GISServer","title":"动态地图服务"},{"id":3,"name":"tms","group":"GISServer","title":"瓦片地图服务"},{"id":9,"name":"wfs","group":"GISServer","title":"要素服务"},{"id":12,"name":"wns","group":"GISServer","title":"网络分析服务"},{"id":13,"name":"geocode","group":"GISServer","title":"地理编码服务"},{"id":17,"name":"wcs","group":"GISServer","title":"栅格服务"},{"id":25,"name":"c3d","group":"GISServer","title":"三维模型服务"},{"id":30,"name":"cts","group":"GISServer","title":"三维地形服务"},{"id":33,"name":"cimservice","group":"CIMSuite","title":"语义模型服务"},{"id":37,"name":"websdk","group":"WEBSDK","title":"WEBSDK"},{"id":38,"name":"pw","group":"Parallelworld","title":" Parallelworld"},{"id":50,"name":"ext","group":"extension","title":"extension"}],"expireDate":1668486201730,"isFloating":true,"floatServerIp":"192.168.20.106","floatServerPort":12316,"message":"OK","success":true}
{"id":"dba5c0f908f92fbdb6f0a3f58a5a3193","expireDate":"2023-01-17","localId":"192.168.20.106|E0-70-EA-AA-B6-43","availableNum":12,"time":1668394770458,"licenseCode":"78a82f0920de0f557f8177bec1e48601c4dc25e4054a00728e4314b56528d3a1632de5298edee38a65412277977a174fea5d91c452b19ef138dbc2ba089ba632"}
------------------------------------------------------------------------------------------------ 权限
管道基础大数据平台: 删除
综合展示\综合展示\查询: 下载、上传
综合展示\综合展示\标绘: 新增、修改、删除
综合展示\专题图: 统计
综合展示\资料馆: 下载
-------------------------------------------
数据管理\数据上传: 新增、修改、删除、上传、下载
数据管理\目录管理: 新增、修改、删除
数据管理\数据检索: 新增、修改、删除、上传、下载
数据管理\版本管理: 新增、修改、删除
数据管理\字典管理: 新增、修改、删除
数据管理\元数据管理: 新增、修改、删除、上传、下载
数据管理\样式管理: 新增、修改、删除、上传、下载
-------------------------------------------
运维管理\系统管理\菜单管理: 新增、修改、删除
运维管理\系统管理\用户管理: 新增、修改、删除
运维管理\系统管理\单位管理: 新增、修改、删除
运维管理\系统管理\资源管理: 新增、修改、删除、上传
运维管理\系统管理\角色管理: 新增、修改、删除
运维管理\系统管理\权限管理: 新增、修改、删除
运维管理\授权管理\用户角色授权:新增、修改、删除
运维管理\授权管理\菜单权限授权:新增、修改、删除
运维管理\授权管理\角色菜单授权:新增、修改、删除
运维管理\授权管理\角色资源授权:新增、修改、删除
运维管理\运维监控\令牌管理: 新增、修改、删除
运维管理\运维监控\黑白/名单: 新增、修改、删除
运维管理\系统配置: 修改
----------------------------------------------------------------------------------------------------
// 获取请求方式: GET
String getMethod()
// 获取虚拟目录(上下文目录):虚拟路径通过在application配置当中可以配置
// 配置:server.servlet.context-path=/aaa
String getContextPath()
// 获取Servlet路径:就是获取的controller当中配置的路径
String getServletPath()
/// 获取请求参数: id=3
// http://localhost:8080/aaa/test?id=3
String getQueryString()
// 获取请求URI:/servletDemo/demo1
// 上下文路径+controller当中配置的路径
String getRequestURI()
// 获取完整请求路径:http://localhost:8080/aaa/test
String getRequestURL()
// 获取协议及版本:HTTP/1.1
String getProtocol()
// 获取客户机的IP地址:192.168.0.0
String getRemoteAddr()
// 获取请求头数据,通过请求头名称获取值
String getHeader(String name)
// 获取所有请求头信息
Enumeration getHeaderNames()
// 获取流对象-获取字符输入流,只能操作字符数据
BufferedReader getReader()
// 获取流对象-获取字节输入流,既能操作字节也能操作字符
ServletInputStream getInputStream()
// 获取请求参数通用方式(根据参数名称获取参数值) username=zhangsan
String getParameter(String name)
// 获取请求参数名称获取参数值的数组 hobby=xx&hobby=game
String[] getParameters(String name)
// 获取请求参数名称(与获取请求头方法类似)
Enumeration getParameterNames()
// 获取所有参数的Map集合
Map getParameterMap()
request.setCharacterEncoding("UTF-8");
// 通过request对象获取请求转发服务器:
RequestDispatcher getRequestDispatcher(String path);
// 使用==RequestDispatcher对象来进行转发
forward(ServlertRequest request,ServletResponse response);
//设置状态码
response.setStatus(304);
// 设置指定名称响应头的值,下面是导出的时候我们经常要设置的响应头,响应头当中还有文件的名称,也就是通过流下载文件的时候那个文件名称
response.setHeader("Content-Disposition", "attachment;filename=" + zipName);
// 1.字符输出流
PrintWriter getWriter()
// 2.字节输出流(一般导出就是将文件写到字节流,然后响应response)
ServletOutputStream getOutputStream()
// 注意:在同一个Servlet,二种输出流不能同时使用,产生互斥
// response提供了专门负责重定向的方法
response.sendRedirect("/项目地址/资源地址");
// 指定服务器响应中文的编码方式
response.setCharacterEncoding("GBK");
// 统一服务器和客户端的编码方式
response.setContentType("text/html;charset=utf-8");
// 导出的时候如果需要直接通过response流导出Excel,需要和前端设置上下文类型,如下:
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
----------------------------------------------------------------------------------------------------