Browse Source

Merge branch 'refs/heads/release-sy-v1.0.0' into feature-v1.3.0

# Conflicts:
#	sql/sy/v1.3.0/增量脚本/v1.3.0-update.sql
master_tdsql
hxh 10 months ago
parent
commit
a9e13a5501
  1. 162
      shuili-admin/src/main/java/com/kms/aspect/WebLogAspect.java
  2. 259
      shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java
  3. 59
      shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java
  4. 25
      shuili-admin/src/main/java/com/kms/web/utils/WaterResultV2.java
  5. 8
      shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysMenu.java
  6. 24
      shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java
  7. 62
      shuili-system/src/main/java/com/kms/system/domain/vo/RouterVo.java
  8. 87
      shuili-system/src/main/java/com/kms/system/service/SysMenuService.java
  9. 63
      shuili-system/src/main/java/com/kms/yxgh/base/domain/df/DfDwsRelDiscDike.java
  10. 2
      shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResDscdnm.java
  11. 2
      shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResRv.java
  12. 1
      shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncBasicEnum.java
  13. 8
      shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncMonitorEnum.java
  14. 30
      shuili-system/src/main/java/com/kms/yxgh/base/job/DataSyncJob.java
  15. 4
      shuili-system/src/main/java/com/kms/yxgh/util/RestTemplateUtils.java
  16. 21
      sql/sy/v1.3.0/全量脚本/dataSync.sql
  17. 22
      sql/sy/v1.3.0/增量脚本/v1.3.0-update.sql

162
shuili-admin/src/main/java/com/kms/aspect/WebLogAspect.java

@ -0,0 +1,162 @@
package com.kms.aspect;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
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.InitializingBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
* 接口日志界面
*
* @author hxh
**/
@Aspect
@Component
@Slf4j
public class WebLogAspect implements EnvironmentAware, InitializingBean {
private boolean printResponseEnable;
private Environment environment;
/**
* 切点
*/
@Pointcut("@within(org.springframework.web.bind.annotation.RestController) || @within(org.springframework.stereotype.Controller)")
public void webLog() {
}
/**
* 环绕切面
*
* @param joinPoint ProceedingJoinPoint
* @return 结果
* @throws Throwable 异常
*/
@Around("webLog()")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
long startTime = System.currentTimeMillis();
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (servletRequestAttributes == null) {
return joinPoint.proceed();
}
HttpServletRequest request = servletRequestAttributes.getRequest();
Class<?> targetCls = joinPoint.getTarget().getClass();
MethodSignature ms = (MethodSignature) joinPoint.getSignature();
//获取目标方法上的注解指定的操作名称
Method targetMethod =
targetCls.getDeclaredMethod(
ms.getName(),
ms.getParameterTypes());
String uri = request.getRequestURI();
String httpMethod = request.getMethod();
Object requestParams = getRequestParameter(request, joinPoint);
log.info("[{}] \"{}\" begin, params:{}", httpMethod, uri,
JSON.toJSONString(requestParams));
Object result;
try {
result = joinPoint.proceed();
if (printResponseEnable) {
log.info("[{}] \"{}\" response:{}", httpMethod, uri, JSON.toJSONString(result));
}
return result;
} catch (Throwable ex) {
log.error("[{}] \"{}\" error:{}", httpMethod, uri, ex.getMessage());
throw ex;
} finally {
log.info("[{}] \"{}\" end, use time:{}ms", httpMethod, uri, System.currentTimeMillis() - startTime);
}
}
/**
* 获取请求参数
*
* @param request HttpServletRequest
* @param joinPoint JoinPoint
* @return 结果
*/
private Object getRequestParameter(HttpServletRequest request, JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
Parameter[] parameters = method.getParameters();
Map<String, Object> params = new HashMap<>(parameters.length);
//json数据
for (int i = 0; i < parameters.length; i++) {
if (isFilterObject(args[i])) {
continue;
}
RequestBody requestBody = parameters[i].getAnnotation(RequestBody.class);
if (requestBody != null) {
//一个接口只会有一个RequestBody
return args[i];
}
}
//表单提交或url拼接
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String key = paramNames.nextElement();
params.put(key, request.getParameter(key));
}
return !params.isEmpty() ? params : null;
}
/**
* 是否需要过滤
*
* @param obj Object
* @return true or false
*/
private boolean isFilterObject(final Object obj) {
if (obj == null) {
return true;
}
Class<?> clazz = obj.getClass();
if (clazz.isArray()) {
return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
} else if (Collection.class.isAssignableFrom(clazz)) {
Collection collection = (Collection) obj;
for (Object o : collection) {
return o instanceof MultipartFile;
}
} else if (Map.class.isAssignableFrom(clazz)) {
Map map = (Map) obj;
for (Object o : map.entrySet()) {
Map.Entry entry = (Map.Entry) o;
return entry.getValue() instanceof MultipartFile;
}
}
return obj instanceof MultipartFile || obj instanceof HttpServletRequest || obj instanceof HttpServletResponse;
}
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@Override
public void afterPropertiesSet() {
printResponseEnable = environment.getProperty("sy.public.log-config.print-response", Boolean.class, false);
}
}

259
shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java

File diff suppressed because one or more lines are too long

59
shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java

@ -3,8 +3,12 @@ package com.kms.web.utils;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.kms.web.utils.singleDomain.SingleMenu;
import com.shuili.common.exception.CustomException; import com.shuili.common.exception.CustomException;
import lombok.Data;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -12,6 +16,7 @@ import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
@Component @Component
public class WaterRequestUtil { public class WaterRequestUtil {
@ -195,22 +200,38 @@ public class WaterRequestUtil {
* @param authorization * @param authorization
* @return * @return
*/ */
public WaterResult authUser(String authorization) { public WaterResultV2<WaterUser> authUser(String authorization) {
log.info("--------请求统一门户用户验证,请求地址为:" + userUrl); long startTime = System.currentTimeMillis();
log.info("--------请求统一门户用户验证,请求地址为:{}", userUrl);
HttpRequest get = createGet(userUrl, authUserServiceId, authUserAppsecret); HttpRequest get = createGet(userUrl, authUserServiceId, authUserAppsecret);
String body; String body;
try (HttpResponse response = get.header("Authorization", authorization) try (HttpResponse response = get.header("Authorization", authorization)
.execute()) { .execute()) {
body = response.body(); body = response.body();
} }
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); long endTime = System.currentTimeMillis();
log.info("--------请求统一门户用户验证,耗时{}毫秒,返回结果为:{}", endTime - startTime, body);
WaterResultV2<WaterUser> waterResult = JSON.parseObject(body, new TypeReference<WaterResultV2<WaterUser>>() {
});
isSuccess(waterResult); isSuccess(waterResult);
return waterResult; return waterResult;
} }
@Data
public static class WaterUser {
private WaterUserInfo user;
private List<String> functionPerms;
}
@Data
public static class WaterUserInfo {
private String id;
}
public WaterResult getOrgPage() { public WaterResult getOrgPage() {
log.info("--------请求获取门户组织信息,请求地址为:" + orgUrl); log.info("--------请求获取门户组织信息,请求地址为:{}", orgUrl);
HashMap<String, Object> hashMap = new HashMap<>(); HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("page", 1); hashMap.put("page", 1);
hashMap.put("size", 100); hashMap.put("size", 100);
@ -238,19 +259,20 @@ public class WaterRequestUtil {
} }
public WaterResult getUserResource(String authorization) { public WaterResultV2<List<SingleMenu>> getUserResource(String authorization) {
log.info("--------请求获取门户角色信息,请求地址为:" + resourceUrl); //计算请求消耗的时间
HashMap<String, Object> hashMap = new HashMap<>(); long startTime = System.currentTimeMillis();
hashMap.put("systemCode", systemCode); log.info("--------请求获取门户用户资源信息,请求地址为:{}", resourceUrl);
HttpRequest get = createPost(resourceUrl + "?systemCode=" + systemCode, resourceServiceId, resourceAppsecret); HttpRequest get = createPost(resourceUrl + "?systemCode=" + systemCode, resourceServiceId, resourceAppsecret);
// HttpRequest get = createPost(resourceUrl,resourceServiceId,resourceAppsecret);
get.header("Authorization", authorization); get.header("Authorization", authorization);
String body; String body;
try (HttpResponse response = get.execute()) { try (HttpResponse response = get.execute()) {
body = response.body(); body = response.body();
} }
log.info("--------请求获取门户用户资源信息,返回结果为:" + body); long endTime = System.currentTimeMillis();
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); log.info("--------请求获取门户用户资源信息,耗时{}毫秒,返回结果为:{}", endTime - startTime, body);
WaterResultV2<List<SingleMenu>> waterResult = JSON.parseObject(body, new TypeReference<WaterResultV2<List<SingleMenu>>>() {
});
isSuccess(waterResult); isSuccess(waterResult);
//{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1}
return waterResult; return waterResult;
@ -258,7 +280,7 @@ public class WaterRequestUtil {
public WaterResult getRolePage() { public WaterResult getRolePage() {
log.info("--------请求获取门户角色信息,请求地址为:" + roleUrl); log.info("--------请求获取门户角色信息,请求地址为:{}", roleUrl);
HashMap<String, Object> hashMap = new HashMap<>(); HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("page", 1); hashMap.put("page", 1);
hashMap.put("size", 100); hashMap.put("size", 100);
@ -269,6 +291,7 @@ public class WaterRequestUtil {
.execute()) { .execute()) {
body = response.body(); body = response.body();
} }
log.info("--------请求获取门户角色信息,返回结果为:{}", body);
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult); isSuccess(waterResult);
//{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1}
@ -277,7 +300,7 @@ public class WaterRequestUtil {
public WaterResult usersPage() { public WaterResult usersPage() {
log.info("--------请求获取门户用户信息,请求地址为:" + usersUrl); log.info("--------请求获取门户用户信息,请求地址为:{}", usersUrl);
HashMap<String, Object> hashMap = new HashMap<>(); HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("page", 1); hashMap.put("page", 1);
hashMap.put("size", 100); hashMap.put("size", 100);
@ -288,6 +311,7 @@ public class WaterRequestUtil {
.execute()) { .execute()) {
body = response.body(); body = response.body();
} }
log.info("--------请求获取门户用户信息,返回结果为:{}", body);
WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class);
isSuccess(waterResult); isSuccess(waterResult);
return waterResult; return waterResult;
@ -303,5 +327,14 @@ public class WaterRequestUtil {
} }
} }
private void isSuccess(WaterResultV2<?> waterResult) {
if (waterResult == null) {
throw new CustomException("请求异常");
}
if (waterResult.getCode() != 200 || !waterResult.getSuccess()) {
throw new CustomException("请求失败,原因:" + waterResult.getMessage());
}
}
} }

25
shuili-admin/src/main/java/com/kms/web/utils/WaterResultV2.java

@ -0,0 +1,25 @@
package com.kms.web.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName: WaterResultV2
* @Description: TODO
* @Date: 2024/6/1 上午12:27
* *
* @author: hxh
* @version: 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WaterResultV2<T> {
private int code;
private String message;
private Boolean success;
private T data;
private String timestamp;
}

8
shuili-framework/src/main/java/com/shuili/common/core/domain/entity/SysMenu.java

@ -39,7 +39,7 @@ public class SysMenu extends BaseEntity {
/** /**
* 显示顺序 * 显示顺序
*/ */
private String orderNum; private Integer orderNum;
/** /**
* 路由地址 * 路由地址
@ -91,6 +91,8 @@ public class SysMenu extends BaseEntity {
private List<SysMenu> children = new ArrayList<SysMenu>(); private List<SysMenu> children = new ArrayList<SysMenu>();
@NotBlank(message = "菜单名称不能为空") @NotBlank(message = "菜单名称不能为空")
@Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符") @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
public String getMenuName() { public String getMenuName() {
@ -118,11 +120,11 @@ public class SysMenu extends BaseEntity {
} }
@NotBlank(message = "显示顺序不能为空") @NotBlank(message = "显示顺序不能为空")
public String getOrderNum() { public Integer getOrderNum() {
return orderNum; return orderNum;
} }
public void setOrderNum(String orderNum) { public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum; this.orderNum = orderNum;
} }

24
shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java

@ -12,8 +12,10 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -56,7 +58,7 @@ public class SysPermissionService {
* @return 菜单权限信息 * @return 菜单权限信息
*/ */
public Set<String> getMenuPermission(SysUser user) { public Set<String> getMenuPermission(SysUser user) {
Set<String> perms = new HashSet<String>(); Set<String> perms = new HashSet<>();
// 管理员拥有所有权限 // 管理员拥有所有权限
if (user.isAdmin()) { if (user.isAdmin()) {
perms.add("*:*:*"); perms.add("*:*:*");
@ -80,31 +82,35 @@ public class SysPermissionService {
Object cache = redisCache.getCacheObject(menusKey(userId)); Object cache = redisCache.getCacheObject(menusKey(userId));
if (cache != null) { if (cache != null) {
List<MenuDto> menus = StringUtils.cast(cache); List<MenuDto> menus = StringUtils.cast(cache);
List<String> ides = menus.stream().map(MenuDto::getCode).collect(Collectors.toList()); List<String> ides = menus.stream().map(MenuDto::getCode).map(String::trim).collect(Collectors.toList());
Map<String, MenuDto> map = menus.stream().collect(Collectors.toMap(MenuDto::getCode, m -> m)); Map<String, MenuDto> map = menus.stream().collect(Collectors.toMap(MenuDto::getCode, Function.identity(), (a, b) -> a));
return menuService.selectMenuList(ides).stream().map(item -> return menuService.getChildPerms(menuService.selectMenuList(ides).stream().peek(item ->
{ {
MenuDto dto = map.get(item.getId()); MenuDto dto = map.get(item.getId());
if (dto != null) { if (dto != null) {
item.setVisible(dto.getVisible()); item.setOrderNum(dto.getSeq());
item.setOrderNum(dto.getSeq().toString());
item.setStatus(dto.getStatus()); item.setStatus(dto.getStatus());
item.setIsMain(true); item.setIsMain(true);
return item;
} }
return null;
} }
).filter(Objects::nonNull).collect(Collectors.toList()); ).collect(Collectors.toList()), "0");
} else { } else {
return Collections.emptyList(); return Collections.emptyList();
} }
} }
public void setUserPermissionFromPortal(String userId, List<String> perms) { public void setUserPermissionFromPortal(String userId, List<String> perms) {
if (CollectionUtils.isEmpty(perms)) {
return;
}
redisCache.setCacheObject(permsKey(userId), perms); redisCache.setCacheObject(permsKey(userId), perms);
} }
public void setUserMenuFromPortal(String userId, List<MenuDto> menus) { public void setUserMenuFromPortal(String userId, List<MenuDto> menus) {
if (CollectionUtils.isEmpty(menus)) {
return;
}
redisCache.setCacheObject(menusKey(userId), menus); redisCache.setCacheObject(menusKey(userId), menus);
} }

62
shuili-system/src/main/java/com/kms/system/domain/vo/RouterVo.java

@ -6,12 +6,11 @@ import java.util.List;
/** /**
* 路由配置信息 * 路由配置信息
* *
* @author kms * @author kms
*/ */
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
public class RouterVo public class RouterVo {
{
/** /**
* 路由名字 * 路由名字
*/ */
@ -42,6 +41,8 @@ public class RouterVo
*/ */
private Boolean alwaysShow; private Boolean alwaysShow;
private Integer orderNum;
/** /**
* 其他元素 * 其他元素
*/ */
@ -52,83 +53,74 @@ public class RouterVo
*/ */
private List<RouterVo> children; private List<RouterVo> children;
public String getName() public Integer getOrderNum() {
{ return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
public String getName() {
return name; return name;
} }
public void setName(String name) public void setName(String name) {
{
this.name = name; this.name = name;
} }
public String getPath() public String getPath() {
{
return path; return path;
} }
public void setPath(String path) public void setPath(String path) {
{
this.path = path; this.path = path;
} }
public boolean getHidden() public boolean getHidden() {
{
return hidden; return hidden;
} }
public void setHidden(boolean hidden) public void setHidden(boolean hidden) {
{
this.hidden = hidden; this.hidden = hidden;
} }
public String getRedirect() public String getRedirect() {
{
return redirect; return redirect;
} }
public void setRedirect(String redirect) public void setRedirect(String redirect) {
{
this.redirect = redirect; this.redirect = redirect;
} }
public String getComponent() public String getComponent() {
{
return component; return component;
} }
public void setComponent(String component) public void setComponent(String component) {
{
this.component = component; this.component = component;
} }
public Boolean getAlwaysShow() public Boolean getAlwaysShow() {
{
return alwaysShow; return alwaysShow;
} }
public void setAlwaysShow(Boolean alwaysShow) public void setAlwaysShow(Boolean alwaysShow) {
{
this.alwaysShow = alwaysShow; this.alwaysShow = alwaysShow;
} }
public MetaVo getMeta() public MetaVo getMeta() {
{
return meta; return meta;
} }
public void setMeta(MetaVo meta) public void setMeta(MetaVo meta) {
{
this.meta = meta; this.meta = meta;
} }
public List<RouterVo> getChildren() public List<RouterVo> getChildren() {
{
return children; return children;
} }
public void setChildren(List<RouterVo> children) public void setChildren(List<RouterVo> children) {
{
this.children = children; this.children = children;
} }
} }

87
shuili-system/src/main/java/com/kms/system/service/SysMenuService.java

@ -16,9 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* 菜单 业务层处理 * 菜单 业务层处理
@ -103,39 +101,6 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> {
return getChildPerms(menus, "0"); return getChildPerms(menus, "0");
} }
public List<SysMenu> selectMenuTreeByUserId(String userId, List<SysMenu> menuList) {
List<SysMenu> menus;
if ("1".equals(userId)) {
menus = menuMapper.selectMenuTreeAll();
} else {
menus = menuMapper.selectMenuTreeByUserId(userId);
}
if (menus != null) {
return getChildPerms(unionMenu(menus, menuList), "0");
} else {
return Collections.emptyList();
}
}
//菜单取并集
private List<SysMenu> unionMenu(List<SysMenu> menuList, List<SysMenu> menus) {
return Stream.concat(menuList.stream(), menus.stream())
.collect(Collectors.toMap(SysMenu::getId, Function.identity(), (o1, o2) -> {
if (o1.getIsMain()) {
return o1;
}
if (o2.getIsMain()) {
return o2;
}
return o1;
}))
.values()
.stream()
.filter(item -> item.getStatus().equals("0"))
.collect(Collectors.toList());
}
/** /**
* 根据角色ID查询菜单树信息 * 根据角色ID查询菜单树信息
* *
@ -153,32 +118,32 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> {
* @return 路由列表 * @return 路由列表
*/ */
public List<RouterVo> buildMenus(List<SysMenu> menus) { public List<RouterVo> buildMenus(List<SysMenu> menus) {
List<RouterVo> routers = new LinkedList<>(); return menus.stream().map(menu -> {
for (SysMenu menu : menus) { RouterVo router = new RouterVo();
RouterVo router = new RouterVo(); router.setHidden("1".equals(menu.getVisible()));
router.setHidden("1".equals(menu.getVisible())); router.setName(getRouteName(menu));
router.setName(getRouteName(menu)); router.setPath(getRouterPath(menu));
router.setPath(getRouterPath(menu)); router.setComponent(getComponent(menu));
router.setComponent(getComponent(menu)); router.setOrderNum(menu.getOrderNum());
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
List<SysMenu> cMenus = menu.getChildren(); List<SysMenu> cMenus = menu.getChildren();
if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) {
router.setAlwaysShow(true); router.setAlwaysShow(true);
router.setRedirect("noRedirect"); router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus)); router.setChildren(buildMenus(cMenus));
} else if (isMeunFrame(menu)) { } else if (isMeunFrame(menu)) {
List<RouterVo> childrenList = new ArrayList<>(); List<RouterVo> childrenList = new ArrayList<>();
RouterVo children = new RouterVo(); RouterVo children = new RouterVo();
children.setPath(menu.getPath()); children.setPath(menu.getPath());
children.setComponent(menu.getComponent()); children.setComponent(menu.getComponent());
children.setName(StringUtils.capitalize(menu.getPath())); children.setName(StringUtils.capitalize(menu.getPath()));
children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon()));
childrenList.add(children); childrenList.add(children);
router.setChildren(childrenList); router.setChildren(childrenList);
} }
routers.add(router); return router;
} }).sorted(Comparator.comparingInt(RouterVo::getOrderNum))
return routers; .collect(Collectors.toList());
} }
/** /**

63
shuili-system/src/main/java/com/kms/yxgh/base/domain/df/DfDwsRelDiscDike.java

@ -0,0 +1,63 @@
package com.kms.yxgh.base.domain.df;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kms.yxgh.base.SyBaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@TableName("dws_rel_disc_dike")
@Data
@ApiModel("堤段所属堤防对象关系表")
public class DfDwsRelDiscDike extends SyBaseEntity {
private static final long serialVersionUID = 1L;
/**
* 堤段代码
*/
@ApiModelProperty("堤段代码")
@TableField("DISC_CODE")
private String discCode;
/**
* 堤段名称
*/
@ApiModelProperty("堤段名称")
@TableField("DISC_NAME")
private String discName;
/**
* 堤防代码
*/
@ApiModelProperty("堤防代码")
@TableField("DIKE_CODE")
private String dikeCode;
/**
* 堤防名称
*/
@ApiModelProperty("堤防名称")
@TableField("DIKE_NAME")
private String dikeName;
/**
* 关系建立时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间")
@TableField("FROM_DATE")
private Date fromDate;
/**
* 关系终止时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系终止时间")
@TableField("TO_DATE")
private Date toDate;
}

2
shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResDscdnm.java

@ -50,7 +50,7 @@ public class SkDwsRelResDscdnm extends SyBaseEntity {
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间") @ApiModelProperty("关系建立时间")
@TableField("FROM_CODE") @TableField("FROM_DATE")
private Date fromDate; private Date fromDate;
/** /**

2
shuili-system/src/main/java/com/kms/yxgh/base/domain/sk/SkDwsRelResRv.java

@ -50,7 +50,7 @@ public class SkDwsRelResRv extends SyBaseEntity {
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("关系建立时间") @ApiModelProperty("关系建立时间")
@TableField("FROM_CODE") @TableField("FROM_DATE")
private Date fromDate; private Date fromDate;
/** /**

1
shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncBasicEnum.java

@ -33,6 +33,7 @@ public enum DataSyncBasicEnum {
REL_WAGA_RES("dws_rel_waga_res", "/dws_rel_waga_res", SzDwsRelWagaRes.class, "水闸所属水库关系表"), REL_WAGA_RES("dws_rel_waga_res", "/dws_rel_waga_res", SzDwsRelWagaRes.class, "水闸所属水库关系表"),
REL_WAGA_DIKE("dws_rel_waga_dike", "/dws_rel_waga_dike", SzDwsRelWagaDike.class, "水闸所属堤防对象关系表"), REL_WAGA_DIKE("dws_rel_waga_dike", "/dws_rel_waga_dike", SzDwsRelWagaDike.class, "水闸所属堤防对象关系表"),
REL_DIKE_RV("dws_rel_dike_rv", "/dws_rel_dike_rv", DfDwsRelDikeRv.class, "堤防所属河流关系表"), REL_DIKE_RV("dws_rel_dike_rv", "/dws_rel_dike_rv", DfDwsRelDikeRv.class, "堤防所属河流关系表"),
REL_DISC_DIKE("dws_rel_disc_dike", "/dws_rel_disc_dike", DfDwsRelDiscDike.class, "堤段所属堤防对象关系表"),
; ;
private final String name; private final String name;

8
shuili-system/src/main/java/com/kms/yxgh/base/enums/DataSyncMonitorEnum.java

@ -11,7 +11,7 @@ public enum DataSyncMonitorEnum {
MS_HDM_OBP("ms_hdm_obp", "/bzjck/ms_hdm_obp", MsHdmObp.class, "降水量监测表"), MS_HDM_OBP("ms_hdm_obp", "/bzjck/ms_hdm_obp", MsHdmObp.class, "降水量监测表"),
MS_HDM_RIVER("ms_hdm_river", "/bzjck/ms_hdm_river", MsHdmRiver.class, "河道水情监测表"), MS_HDM_RIVER("ms_hdm_river", "/bzjck/ms_hdm_river", MsHdmRiver.class, "河道水情监测表"),
MS_HDM_RSVR("ms_hdm_rsvr", "/bzjck/ms_hdm_rsvr", MsHdmRiver.class, "水库水情监测表"), MS_HDM_RSVR("ms_hdm_rsvr", "/bzjck/ms_hdm_rsvr", MsHdmRsvr.class, "水库水情监测表"),
MS_HDM_TIDE("ms_hdm_tide", "/bzjck/ms_hdm_tide", MsHdmTide.class, "潮汐水情监测表"), MS_HDM_TIDE("ms_hdm_tide", "/bzjck/ms_hdm_tide", MsHdmTide.class, "潮汐水情监测表"),
MS_HDM_WDWV("ms_hdm_wdwv", "/bzjck/ms_hdm_wdwv", MsHdmWdwv.class, "风浪监测表"), MS_HDM_WDWV("ms_hdm_wdwv", "/bzjck/ms_hdm_wdwv", MsHdmWdwv.class, "风浪监测表"),
MS_HDM_SALT("ms_hdm_salt", "/bzjck/ms_hdm_salt", MsHdmSalt.class, "咸潮监测表"), MS_HDM_SALT("ms_hdm_salt", "/bzjck/ms_hdm_salt", MsHdmSalt.class, "咸潮监测表"),
@ -21,15 +21,15 @@ public enum DataSyncMonitorEnum {
MS_HDM_DAYEV("ms_hdm_dayev", "/bzjck/ms_hdm_dayev", MsHdmDayev.class, "日蒸发量表"), MS_HDM_DAYEV("ms_hdm_dayev", "/bzjck/ms_hdm_dayev", MsHdmDayev.class, "日蒸发量表"),
MS_HDM_PSTAT("ms_hdm_pstat", "/bzjck/ms_hdm_pstat", MsHdmPstat.class, "降水量统计表"), MS_HDM_PSTAT("ms_hdm_pstat", "/bzjck/ms_hdm_pstat", MsHdmPstat.class, "降水量统计表"),
MS_WQM_WQAMD("ms_wqm_wqamd", "/bzjck/ms_wqm_wqamd", MsHdmWqamd.class, "水质自动监测数据表"), MS_WQM_WQAMD("ms_wqm_wqamd", "/bzjck/ms_wqm_wqamd", MsHdmWqamd.class, "水质自动监测数据表"),
MS_HPM_SLCRS("ms_hpm_slcrs", "/bzjck/ms_hpm_slcrs", MsHdmStorm.class, "水闸运行状况监测表"), MS_HPM_SLCRS("ms_hpm_slcrs", "/bzjck/ms_hpm_slcrs", MsHdmSlcrs.class, "水闸运行状况监测表"),
MS_HPM_DKRS("ms_hpm_dkrs", "/bzjck/ms_hpm_dkrs", MsHdmDkrs.class, "堤防段运行状况监测表"), MS_HPM_DKRS("ms_hpm_dkrs", "/bzjck/ms_hpm_dkrs", MsHdmDkrs.class, "堤防段运行状况监测表"),
MS_HPM_GATE("ms_hpm_gate", "/bzjck/ms_hpm_gate", MsHdmGate.class, "水利工程闸门开度监测表"), MS_HPM_GATE("ms_hpm_gate", "/bzjck/ms_hpm_gate", MsHdmGate.class, "水利工程闸门开度监测表"),
MS_DSM_SRVRDS("ms_dsm_srvrds", "/bzjck/ms_dsm_srvrds", MsHdmSvrds.class, "表面垂直位移监测表"), MS_DSM_SRVRDS("ms_dsm_srvrds", "/bzjck/ms_dsm_srvrds", MsHdmSvrds.class, "表面垂直位移监测表"),
MS_DSM_SRHRDS("ms_dsm_srhrds", "/bzjck/ms_dsm_srhrds", MsHdmSrhrds.class, "表面水平位移监测表"), MS_DSM_SRHRDS("ms_dsm_srhrds", "/bzjck/ms_dsm_srhrds", MsHdmSrhrds.class, "表面水平位移监测表"),
MS_DSM_INVRDS("ms_dsm_invrds", "/bzjck/ms_dsm_invrds", MsHdmInvrds.class, "内部垂直位移监测表"), MS_DSM_INVRDS("ms_dsm_invrds", "/bzjck/ms_dsm_invrds", MsHdmInvrds.class, "内部垂直位移监测表"),
MS_DSM_INHRDS("ms_dsm_inhrds", "/bzjck/ms_dsm_inhrds", MsHdmInhrds.class, "内部水平位移监测表"), MS_DSM_INHRDS("ms_dsm_inhrds", "/bzjck/ms_dsm_inhrds", MsHdmInhrds.class, "内部水平位移监测表"),
MS_DSM_CKOPDG("ms_dsm_ckopdg", "/bzjck/ms_dsm_ckopdg", MsHdmGate.class, "裂缝开合度位移监测表"), MS_DSM_CKOPDG("ms_dsm_ckopdg", "/bzjck/ms_dsm_ckopdg", MsHdmCkopdg.class, "裂缝开合度位移监测表"),
MS_DSM_SPPR("ms_dsm_sppr", "/bzjck/ms_dsm_sppr", MsHdmSvrds.class, "渗流压力水位监测表"), MS_DSM_SPPR("ms_dsm_sppr", "/bzjck/ms_dsm_sppr", MsHdmSppr.class, "渗流压力水位监测表"),
MS_DSM_PZWL("ms_dsm_pzwl", "/bzjck/ms_dsm_pzwl", MsHdmPzwl.class, "测压管水位监测表"), MS_DSM_PZWL("ms_dsm_pzwl", "/bzjck/ms_dsm_pzwl", MsHdmPzwl.class, "测压管水位监测表"),
MS_DSM_SPQN("ms_dsm_spqn", "/bzjck/ms_dsm_spqn", MsHdmSpqn.class, "渗流量监测表"), MS_DSM_SPQN("ms_dsm_spqn", "/bzjck/ms_dsm_spqn", MsHdmSpqn.class, "渗流量监测表"),
MS_DSM_ST("ms_dsm_st", "/bzjck/ms_dsm_srhrds", MsHdmSt.class, "应变监测表"), MS_DSM_ST("ms_dsm_st", "/bzjck/ms_dsm_srhrds", MsHdmSt.class, "应变监测表"),

30
shuili-system/src/main/java/com/kms/yxgh/base/job/DataSyncJob.java

@ -44,7 +44,7 @@ public class DataSyncJob {
private static final Map<String, String> FIELD_MAP = TableFieldFactory.getCacheFieldMap(); private static final Map<String, String> FIELD_MAP = TableFieldFactory.getCacheFieldMap();
private static final Map<String, Map<String, Class>> FIELD_TYPE_MAP = TableFieldFactory.getCacheFieldTypeMap(); private static final Map<String, Map<String, Class>> FIELD_TYPE_MAP = TableFieldFactory.getCacheFieldTypeMap();
private static final int ASYNC_THRESHOLD = 500; private static final int ASYNC_THRESHOLD = 500;
private static final int BATCH_COUNT = 100; private static final int BATCH_COUNT = 500;
private static final SimpleDateFormat DATE_FORMAT_WITH_TIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static final SimpleDateFormat DATE_FORMAT_WITH_TIME = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat DATE_FORMAT_WITH_OUT_TIME = new SimpleDateFormat("yyyy-MM-dd"); private static final SimpleDateFormat DATE_FORMAT_WITH_OUT_TIME = new SimpleDateFormat("yyyy-MM-dd");
@ -67,7 +67,7 @@ public class DataSyncJob {
*/ */
@Scheduled(cron = "0 0 2 * * *") @Scheduled(cron = "0 0 2 * * *")
public void runMonitor() { public void runMonitor() {
log.info("--------开启监测数据同步请求--------------", dataSyncEnabled); log.info("--------开启监测数据同步请求:{}--------------", dataSyncEnabled);
if (dataSyncEnabled) { if (dataSyncEnabled) {
Date date = new Date(); Date date = new Date();
for (DataSyncMonitorEnum dataSyncEnum : DataSyncMonitorEnum.values()) { for (DataSyncMonitorEnum dataSyncEnum : DataSyncMonitorEnum.values()) {
@ -97,12 +97,12 @@ public class DataSyncJob {
do { do {
String requestUrl = String.format("%s%s", dataSyncUrl, url); String requestUrl = String.format("%s%s", dataSyncUrl, url);
// 发送POST请求 // 发送POST请求
Map<String, Object> map = new HashMap(); Map<String, Object> map = new HashMap<>();
map.put("pageNum", pageNum); map.put("pageNum", pageNum);
map.put("pageSize", pageSize); map.put("pageSize", pageSize);
if(StringUtils.isNotBlank(type)){ if(StringUtils.isNotBlank(type)){
map.put("beginTime", beginTime); map.put("START_TIME", beginTime);
map.put("endTime", endTime); map.put("END_TIME", endTime);
} }
String jsonStr = restTemplateUtils.doPostRequest(requestUrl, map); String jsonStr = restTemplateUtils.doPostRequest(requestUrl, map);
if (StringUtils.isBlank(jsonStr)) { if (StringUtils.isBlank(jsonStr)) {
@ -124,7 +124,7 @@ public class DataSyncJob {
// 解析数据 // 解析数据
List<List<Object>> dataList = processDataList(jsonArray, filed.split(","), date, tableName, type); List<List<Object>> dataList = processDataList(jsonArray, filed.split(","), date, tableName, type);
// 清除数据 // 清除数据
if (StringUtils.isBlank(type)) { if (StringUtils.isBlank(type) && pageNum == 1) {
baseDdlMapper.delete(tableName); baseDdlMapper.delete(tableName);
} }
// 插入数据 // 插入数据
@ -133,13 +133,13 @@ public class DataSyncJob {
if (StringUtils.isBlank(type) && jsonArray.size() < pageSize) { if (StringUtils.isBlank(type) && jsonArray.size() < pageSize) {
break; break;
} }
if (pageNum * pageSize >= total) { if (StringUtils.isNotBlank(type) && pageNum * pageSize >= total) {
break; break;
} }
pageNum += 1; pageNum += 1;
} while (true); } while (true);
} catch (Exception e) { } catch (Exception e) {
log.error("--------数据同步出错--------------,表:" + tableName, e); log.error("--------数据同步出错--------------,表:"+tableName+", 异常:" + e.getMessage());
} }
} }
@ -161,9 +161,9 @@ public class DataSyncJob {
Class<?> fieldType = FIELD_TYPE_MAP.getOrDefault(tableName, Collections.emptyMap()).get(fieldName); Class<?> fieldType = FIELD_TYPE_MAP.getOrDefault(tableName, Collections.emptyMap()).get(fieldName);
// 特殊处理:监测数据的入库时间与系统的CREATE_TIME冲突 // 特殊处理:监测数据的入库时间与系统的CREATE_TIME冲突
if (StringUtils.isNotBlank(type)) { if (StringUtils.isNotBlank(type)) {
if (fieldName.equals("MS_CREATE_TIME")) { if ("MS_CREATE_TIME".equals(fieldName)) {
return typeConversion(obj, "CREATE_TIME", fieldType); return typeConversion(obj, "CREATE_TIME", fieldType);
} else if (fieldName.equals("CREATE_TIME")) { } else if ("CREATE_TIME".equals(fieldName)) {
return nowDate; return nowDate;
} }
} }
@ -176,6 +176,9 @@ public class DataSyncJob {
* 批量入库 * 批量入库
*/ */
private void insertData(String filed, List<List<Object>> dataList, String tableName) { private void insertData(String filed, List<List<Object>> dataList, String tableName) {
if(dataList.isEmpty()){
return;
}
// 入库操作 // 入库操作
if (dataList.size() > ASYNC_THRESHOLD) { if (dataList.size() > ASYNC_THRESHOLD) {
// 先入库100条数据入库 // 先入库100条数据入库
@ -193,7 +196,9 @@ public class DataSyncJob {
cachedDataList = new ArrayList<>(BATCH_COUNT); cachedDataList = new ArrayList<>(BATCH_COUNT);
} }
} }
baseDdlMapper.insert(filed, cachedDataList, tableName); if(cachedDataList.size()>0) {
baseDdlMapper.insert(filed, cachedDataList, tableName);
}
}); });
} else { } else {
baseDdlMapper.insert(filed, dataList, tableName); baseDdlMapper.insert(filed, dataList, tableName);
@ -230,7 +235,8 @@ public class DataSyncJob {
} else if (Date.class.equals(fieldType)) { } else if (Date.class.equals(fieldType)) {
return convertToDate(obj, fieldName); return convertToDate(obj, fieldName);
} else if (Long.class.equals(fieldType)) { } else if (Long.class.equals(fieldType)) {
return obj.getLong(fieldName); return Optional.ofNullable(obj.get(fieldName)).map(Object::toString).filter(s -> !StringUtils.isBlank(s))
.map(s -> Double.valueOf(s).longValue()).orElse(0L);
} }
return null; return null;
} }

4
shuili-system/src/main/java/com/kms/yxgh/util/RestTemplateUtils.java

@ -69,9 +69,9 @@ public class RestTemplateUtils {
String seqResult = ""; String seqResult = "";
try { try {
seqResult = new String(responseEntity.getBody().getBytes(),"utf-8"); seqResult = new String(responseEntity.getBody().getBytes(),"utf-8");
log.info("返回报文:{}", seqResult); log.info("请求接口:{}, 请求报文:{}, 返回报文:{}", url, requestStr, seqResult);
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
log.error("接口返回异常", e); log.error("请求接口:" + url + ",返回异常:" + e.getMessage());
} }
return seqResult; return seqResult;
} }

21
sql/sy/v1.3.0/全量脚本/dataSync.sql

@ -157,6 +157,21 @@ CREATE TABLE `dws_rel_dike_rv` (
PRIMARY KEY (`ID`) PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤防所属河流对象关系表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤防所属河流对象关系表';
CREATE TABLE `dws_rel_disc_dike` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`DISC_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤段代码',
`DISC_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤段名称',
`DIKE_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤防代码',
`DIKE_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤防名称',
`FROM_DATE` datetime DEFAULT NULL COMMENT '关系建立时间',
`TO_DATE` datetime DEFAULT NULL COMMENT '关系终止时间',
`REMARK` text COLLATE utf8mb4_general_ci COMMENT '备注',
`CREATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最近修改人',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '最近修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤段所属堤防对象关系表';
@ -870,7 +885,7 @@ CREATE TABLE `MS_DSM_AMS` (
CREATE TABLE `MS_DSM_GSTMONREC` ( CREATE TABLE `MS_DSM_GSTMONREC` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号', `ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码', `PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号', `MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间', `TM` datetime NOT NULL COMMENT '时间',
`STATUS` int DEFAULT NULL COMMENT 'GNSS定位状态(°)', `STATUS` int DEFAULT NULL COMMENT 'GNSS定位状态(°)',
`SATELLITE_NUM` int DEFAULT NULL COMMENT '卫星数', `SATELLITE_NUM` int DEFAULT NULL COMMENT '卫星数',
@ -904,7 +919,7 @@ CREATE TABLE `MS_DSM_GSTMONREC` (
CREATE TABLE `MS_DSM_OSSMONREC` ( CREATE TABLE `MS_DSM_OSSMONREC` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号', `ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码', `PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号', `MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间', `TM` datetime NOT NULL COMMENT '时间',
`UPLIFTED_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '扬压力(MPa)', `UPLIFTED_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '扬压力(MPa)',
`OSMOTIC_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '渗透压力(坝体、坝基、绕坝)(MPa)', `OSMOTIC_PRESSURE` decimal(8,2) DEFAULT NULL COMMENT '渗透压力(坝体、坝基、绕坝)(MPa)',
@ -929,7 +944,7 @@ CREATE TABLE `MS_DSM_OSSMONREC` (
CREATE TABLE `MS_DSM_ENV` ( CREATE TABLE `MS_DSM_ENV` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号', `ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码', `PRJ_STCD` varchar(18) NOT NULL COMMENT '水利工程测站代码',
`MPCD` varchar(13) NOT NULL COMMENT '测点编号', `MPCD` varchar(20) NOT NULL COMMENT '测点编号',
`TM` datetime NOT NULL COMMENT '时间', `TM` datetime NOT NULL COMMENT '时间',
`GTP` decimal(6,1) DEFAULT NULL COMMENT '地温(℃)', `GTP` decimal(6,1) DEFAULT NULL COMMENT '地温(℃)',
`AlTP` decimal(6,1) DEFAULT NULL COMMENT '瞬时气温(℃)', `AlTP` decimal(6,1) DEFAULT NULL COMMENT '瞬时气温(℃)',

22
sql/sy/v1.3.0/增量脚本/v1.3.0-update.sql

@ -65,3 +65,25 @@ CREATE TABLE `bs_sgc_df_xsjhxq` (
PRIMARY KEY (`ID`) PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤防巡查计划内容表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤防巡查计划内容表';
CREATE TABLE `dws_rel_disc_dike` (
`ID` int NOT NULL AUTO_INCREMENT COMMENT '编号',
`DISC_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤段代码',
`DISC_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤段名称',
`DIKE_CODE` varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '堤防代码',
`DIKE_NAME` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '堤防名称',
`FROM_DATE` datetime DEFAULT NULL COMMENT '关系建立时间',
`TO_DATE` datetime DEFAULT NULL COMMENT '关系终止时间',
`REMARK` text COLLATE utf8mb4_general_ci COMMENT '备注',
`CREATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
`UPDATE_UID` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '最近修改人',
`UPDATE_TIME` datetime DEFAULT NULL COMMENT '最近修改时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='堤段所属堤防对象关系表';
ALTER TABLE `MS_DSM_ENV` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';
ALTER TABLE `MS_DSM_GSTMONREC` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';
ALTER TABLE `MS_DSM_OSSMONREC` MODIFY COLUMN MPCD varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '测点编号';

Loading…
Cancel
Save