Browse Source

初始提交

master
walton 5 months ago
commit
6a5a5ec2aa
  1. 62
      hzims-biz-common/pom.xml
  2. 28
      hzims-biz-common/src/main/java/com/hnac/hzims/common/cache/CacheNames.java
  3. 32
      hzims-biz-common/src/main/java/com/hnac/hzims/common/config/BladeCommonConfiguration.java
  4. 75
      hzims-biz-common/src/main/java/com/hnac/hzims/common/config/RedisMessageConfig.java
  5. 16
      hzims-biz-common/src/main/java/com/hnac/hzims/common/config/RedisMessageListener.java
  6. 52
      hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/CommonConstant.java
  7. 36
      hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/DateConstant.java
  8. 206
      hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/LauncherConstant.java
  9. 33
      hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/DictInvalid.java
  10. 64
      hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/DictInvalidator.java
  11. 27
      hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/ObjectRequiredInvalid.java
  12. 66
      hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/ObjectRequiredInvalidator.java
  13. 66
      hzims-biz-common/src/main/java/com/hnac/hzims/common/launch/LauncherServiceImpl.java
  14. 55
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/annotation/OperationAnnotation.java
  15. 269
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/aop/SysLogAspect.java
  16. 119
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/consumer/SysLogConsumer.java
  17. 43
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/consumer/SysLogQueue.java
  18. 33
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/BusinessStatus.java
  19. 73
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/BusinessType.java
  20. 45
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/OperatorType.java
  21. 29
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/fegin/SysLogFeignService.java
  22. 30
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/fegin/fallback/SysLogFeignServiceFallback.java
  23. 88
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/CharsetKit.java
  24. 1009
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/Convert.java
  25. 93
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/StrFormatter.java
  26. 176
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/to/SysLogTo.java
  27. 130
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/Constants.java
  28. 567
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/StringUtils.java
  29. 29
      hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/WebIpUtils.java
  30. 22
      hzims-biz-common/src/main/java/com/hnac/hzims/common/pojo/Tree.java
  31. 84
      hzims-biz-common/src/main/java/com/hnac/hzims/common/service/UserAuthDataService.java
  32. 171
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/CacheUtil.java
  33. 26
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/CommonUtil.java
  34. 225
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/Condition.java
  35. 149
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/DateUtil.java
  36. 49
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/IPUtils.java
  37. 80
      hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/TreeUtil.java
  38. 8
      hzims-biz-common/src/main/resources/banner.txt
  39. 28
      hzims-service-api/assets-api/pom.xml
  40. 175
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/AssetsConstants.java
  41. 38
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/chche/AssetsNumCache.java
  42. 43
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/constants/AssetsConstant.java
  43. 10
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/constants/ScheduledConstant.java
  44. 58
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpAllocationEntity.java
  45. 56
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpReceiveEntity.java
  46. 59
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpReceivesEntity.java
  47. 55
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpRecordEntity.java
  48. 67
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpRevertEntity.java
  49. 29
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTemporaryStockDetailEntity.java
  50. 70
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTemporaryStockEntity.java
  51. 40
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTicketRelationEntity.java
  52. 63
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpWarehouseInEntity.java
  53. 63
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpWarehouseOutEntity.java
  54. 111
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpBasicEntity.java
  55. 64
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpManagementEntity.java
  56. 35
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpManagementeExcelEntity.java
  57. 101
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpProviderEntity.java
  58. 55
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpToolBasicEntity.java
  59. 96
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpTotalEntity.java
  60. 87
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpWarehouseEntity.java
  61. 32
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/BusinessType.java
  62. 46
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/WarehouseInType.java
  63. 46
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/WarehouseOutType.java
  64. 38
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareClient.java
  65. 28
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareClientFallback.java
  66. 35
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareOutServiceClient.java
  67. 33
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareOutServiceFallback.java
  68. 0
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/h.java
  69. 17
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/AssetTypeVo.java
  70. 26
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/ExceedVo.java
  71. 54
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpAllocationVO.java
  72. 50
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpReceiveVO.java
  73. 50
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpReceivesVO.java
  74. 18
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpRevertVO.java
  75. 53
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpWarehouseInVO.java
  76. 57
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpWarehouseOutVO.java
  77. 34
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/StockVo.java
  78. 60
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpBasicVO.java
  79. 58
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpManagementVO.java
  80. 82
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpToolBasicVO.java
  81. 72
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpToolVO.java
  82. 25
      hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpWarehouseVO.java
  83. 23
      hzims-service-api/base-info-api/pom.xml
  84. 9
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/constants/BaseInfoConstant.java
  85. 21
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/dto/OverLimitLevelDTO.java
  86. 39
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/dto/PreviewSchemeContentDTO.java
  87. 69
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/AnnounceInfo.java
  88. 62
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/BasinInfo.java
  89. 64
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/BasinJoin.java
  90. 65
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/FileReservoirInfo.java
  91. 62
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ImageReservoirInfo.java
  92. 62
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/IrrBIReach.java
  93. 531
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/IrrBIReachExample.java
  94. 77
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewInfo.java
  95. 91
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewSchemeContent.java
  96. 59
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewSchemeInfo.java
  97. 107
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReportDataBase.java
  98. 599
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirInfo.java
  99. 2363
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirInfoExample.java
  100. 50
      hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirRefdata.java
  101. Some files were not shown because too many files have changed in this diff Show More

62
hzims-biz-common/pom.xml

@ -0,0 +1,62 @@
<?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">
<parent>
<artifactId>hzims-back</artifactId>
<groupId>com.hnac.hzims</groupId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>hzims-biz-common</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-launch</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-common</artifactId>
</dependency>
<!--Json 工具 Start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-user-api</artifactId>
</dependency>
<!--Json 工具 End-->
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-dict-api</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-datascope</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
<finalName>${project.name}</finalName>
</configuration>
</plugin>
</plugins>
</build>
</project>

28
hzims-biz-common/src/main/java/com/hnac/hzims/common/cache/CacheNames.java vendored

@ -0,0 +1,28 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.cache;
/**
* 缓存名
*
* @author Chill
*/
public interface CacheNames {
String NOTICE_ONE = "blade:notice:one";
}

32
hzims-biz-common/src/main/java/com/hnac/hzims/common/config/BladeCommonConfiguration.java

@ -0,0 +1,32 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.config;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Configuration;
/**
* 公共封装包配置类
*
* @author Chill
*/
@Configuration
@AllArgsConstructor
public class BladeCommonConfiguration {
}

75
hzims-biz-common/src/main/java/com/hnac/hzims/common/config/RedisMessageConfig.java

@ -0,0 +1,75 @@
package com.hnac.hzims.common.config;
import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.stereotype.Component;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicLong;
/**
* @author hx
* @version 1.0
* @date 2023/3/12 15:27
*/
@Component
public class RedisMessageConfig implements ApplicationRunner {
/**AtomicLong 可以理解为加了synchronized的long类型**/
private AtomicLong counter = new AtomicLong(0);
@Autowired
private ApplicationContext context;
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
@Override
public void run(ApplicationArguments args) throws Exception {
// 获取Redis的消息监听容器
RedisMessageListenerContainer container = context.getBean(RedisMessageListenerContainer.class);
// 扫描注册所有的 @RedisMessageListener 的方法,添加到容器中
for (String beanName : context.getBeanNamesForType(Object.class)) {
ReflectionUtils.doWithMethods(Objects.requireNonNull(context.getType(beanName)),
method -> {
ReflectionUtils.makeAccessible(method);
Object target = context.getBean(beanName);
RedisMessageListener annotation = AnnotationUtils.findAnnotation(method, RedisMessageListener.class);
MessageListenerAdapter adapter = registerBean((GenericApplicationContext) context, target, method);
container.addMessageListener(adapter, new PatternTopic(annotation.topic()));
},
method -> !method.isSynthetic() && method.getParameterTypes().length == 1
&& AnnotationUtils.findAnnotation(method, RedisMessageListener.class) != null);
}
}
private MessageListenerAdapter registerBean(GenericApplicationContext context, Object target, Method method) {
String containerBeanName = String.format("%s_%s", MessageListenerAdapter.class.getName(), counter.incrementAndGet());
context.registerBean(containerBeanName, MessageListenerAdapter.class, () -> new MessageListenerAdapter(target, method.getName()));
return context.getBean(containerBeanName, MessageListenerAdapter.class);
}
}

16
hzims-biz-common/src/main/java/com/hnac/hzims/common/config/RedisMessageListener.java

@ -0,0 +1,16 @@
package com.hnac.hzims.common.config;
import java.lang.annotation.*;
/**
* @author hx
* @version 1.0
* @date 2023/3/12 17:01
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisMessageListener {
/**事件主题**/
String topic();
}

52
hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/CommonConstant.java

@ -0,0 +1,52 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.constant;
/**
* 通用常量
*
* @author Chill
*/
public interface CommonConstant {
/**
* sword 系统名
*/
String SWORD_NAME = "sword";
/**
* saber 系统名
*/
String SABER_NAME = "saber";
/**
* 顶级父节点id
*/
Integer TOP_PARENT_ID = 0;
/**
* 顶级父节点名称
*/
String TOP_PARENT_NAME = "顶级";
/**
* 默认密码
*/
String DEFAULT_PASSWORD = "123456";
}

36
hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/DateConstant.java

@ -0,0 +1,36 @@
package com.hnac.hzims.common.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
/**
* @author hx
*/
public interface DateConstant {
@AllArgsConstructor
enum UnitEnum {
YEAR("year","年"),
MONTH("month","月"),
DAY("day","日"),
HOUR("hour","时"),
MINUTER("minuter","分"),
SECOND("second","秒")
;
@Getter
private String unit;
@Getter
private String describe;
public static UnitEnum getEnumByUnit(String unit) {
Optional<UnitEnum> optionalUnitEnum = Arrays.stream(UnitEnum.class.getEnumConstants())
.filter(unitEnum -> unit.equals(unitEnum.getUnit())).findAny();
return optionalUnitEnum.orElse(null);
}
}
}

206
hzims-biz-common/src/main/java/com/hnac/hzims/common/constant/LauncherConstant.java

@ -0,0 +1,206 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.constant;
import org.springblade.core.launch.constant.AppConstant;
import static org.springblade.core.launch.constant.AppConstant.APPLICATION_NAME_PREFIX;
/**
* 通用常量
*
* @author Chill
*/
public interface LauncherConstant {
/**
* nacos namespace id
*/
String NACOS_NAMESPACE = "f447a694-519a-4255-95f9-bcbb5a5d6369";
/**
* nacos dev 地址
*/
String NACOS_DEV_ADDR = "192.168.65.152:8848";
/**
* nacos prod 地址
*/
String NACOS_PROD_ADDR = "192.168.65.152:8848";
/**
* nacos test 地址
*/
String NACOS_TEST_ADDR = "192.168.65.152:8848";
/**
* sentinel dev 地址
*/
String SENTINEL_DEV_ADDR = "192.168.65.152:8858";
/**
* sentinel prod 地址
*/
String SENTINEL_PROD_ADDR = "172.30.0.58:8858";
/**
* sentinel test 地址
*/
String SENTINEL_TEST_ADDR = "192.168.65.152:8858";
/**
* seata dev 地址
*/
String SEATA_DEV_ADDR = "192.168.65.152:8091";
/**
* seata prod 地址
*/
String SEATA_PROD_ADDR = "172.30.0.68:8091";
/**
* seata test 地址
*/
String SEATA_TEST_ADDR = "192.168.65.152:8091";
/**
* dbuuo提供者
*/
String APPLICATION_DUBBO_PROVIDER_NAME = APPLICATION_NAME_PREFIX + "dubbo-provider";
/**
* dbuuo消费者
*/
String APPLICATION_DUBBO_CONSUMER_NAME = APPLICATION_NAME_PREFIX + "dubbo-consumer";
/**
* seata订单
*/
String APPLICATION_SEATA_ORDER_NAME = APPLICATION_NAME_PREFIX + "seata-order";
/**
* seata库存
*/
String APPLICATION_SEATA_STORAGE_NAME = APPLICATION_NAME_PREFIX + "seata-storage";
/**
* easypoi
*/
String APPLICATION_EASYPOI_NAME = APPLICATION_NAME_PREFIX + "easypoi";
/**
* kafka
*/
String APPLICATION_KAFKA_NAME = APPLICATION_NAME_PREFIX + "kafka";
/**
* rabbit
*/
String APPLICATION_RABBIT_NAME = APPLICATION_NAME_PREFIX + "rabbit";
/**
* stream消费者
*/
String APPLICATION_STREAM_CONSUMER_NAME = APPLICATION_NAME_PREFIX + "stream-consumer";
/**
* stream生产者
*/
String APPLICATION_STREAM_PROVIDER_NAME = APPLICATION_NAME_PREFIX + "stream-provider";
/**
* seata file模式
*/
String FILE_MODE = "file";
/**
* seata nacos模式
*/
String NACOS_MODE = "nacos";
/**
* seata default模式
*/
String DEFAULT_MODE = "default";
/**
* seata group后缀
*/
String GROUP_NAME = "-group";
/**
* seata 服务组格式
*
* @param appName 服务名
* @return group
*/
static String seataServiceGroup(String appName) {
return appName.concat(GROUP_NAME);
}
/**
* 动态获取nacos地址
*
* @param profile 环境变量
* @return addr
*/
static String nacosAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return NACOS_PROD_ADDR;
case (AppConstant.TEST_CODE):
return NACOS_TEST_ADDR;
default:
return NACOS_DEV_ADDR;
}
}
/**
* 动态获取sentinel地址
*
* @param profile 环境变量
* @return addr
*/
static String sentinelAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SENTINEL_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SENTINEL_TEST_ADDR;
default:
return SENTINEL_DEV_ADDR;
}
}
/**
* 动态获取seata地址
*
* @param profile 环境变量
* @return addr
*/
static String seataAddr(String profile) {
switch (profile) {
case (AppConstant.PROD_CODE):
return SEATA_PROD_ADDR;
case (AppConstant.TEST_CODE):
return SEATA_TEST_ADDR;
default:
return SEATA_DEV_ADDR;
}
}
}

33
hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/DictInvalid.java

@ -0,0 +1,33 @@
package com.hnac.hzims.common.invalid;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* @author hx
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE,ElementType.PARAMETER})
@Constraint(validatedBy = DictInvalidator.class)
public @interface DictInvalid {
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
String attribute() default "";
/**
* 字典key
* @return
*/
String dictKey() default "";
/**
* 提示信息
* @return
*/
String message() default "传入参数不符合字典状态";
}

64
hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/DictInvalidator.java

@ -0,0 +1,64 @@
package com.hnac.hzims.common.invalid;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictCache;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.lang.reflect.Field;
import java.util.Map;
/**
* @author hx
*/
@Slf4j
public class DictInvalidator implements ConstraintValidator<DictInvalid,Object> {
private String dictKey;
private String attribute;
@Override
public void initialize(DictInvalid constraintAnnotation) {
dictKey = constraintAnnotation.dictKey();
attribute = constraintAnnotation.attribute();
}
@SneakyThrows
@Override
public boolean isValid(Object object, ConstraintValidatorContext context) {
//直接放行用在controller层上的内容
if(StringUtil.isNotBlank(attribute)){
return true;
}
Integer value = null;
try{
value = Integer.parseInt((String) object);
}
catch (Exception e){
e.printStackTrace();
return false;
}
String name = DictCache.getValue(dictKey,value);
return StringUtil.isNotBlank(name);
}
public Object getFieldValue(Object object,String fieldName) throws IllegalAccessException {
Class clazz = object.getClass();
if(object instanceof Map){
return ((Map) object).get(fieldName);
}
while (ObjectUtil.isNotEmpty(clazz.getSuperclass())) {
for (Field field : clazz.getDeclaredFields()) {
if(fieldName.equals(field.getName())){
field.setAccessible(true);
return field.get(object);
}
}
clazz = clazz.getSuperclass();
}
return null;
}
}

27
hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/ObjectRequiredInvalid.java

@ -0,0 +1,27 @@
package com.hnac.hzims.common.invalid;
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;
/**
* @author hx
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE,ElementType.PARAMETER})
@Constraint(validatedBy = ObjectRequiredInvalidator.class)
public @interface ObjectRequiredInvalid {
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
/**
* 对象属性校验必填
* @return
*/
String[] attributes() default {};
String message() default "传入参数不符合要求";
}

66
hzims-biz-common/src/main/java/com/hnac/hzims/common/invalid/ObjectRequiredInvalidator.java

@ -0,0 +1,66 @@
package com.hnac.hzims.common.invalid;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.ObjectUtil;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.lang.reflect.Field;
import java.util.Map;
/**
* @author hx
*/
@Slf4j
public class ObjectRequiredInvalidator implements ConstraintValidator<ObjectRequiredInvalid,Object> {
private String[] attributes;
@Override
public void initialize(ObjectRequiredInvalid constraintAnnotation) {
attributes = constraintAnnotation.attributes();
}
@SneakyThrows
@Override
public boolean isValid(Object object, ConstraintValidatorContext context) {
//判断是否有子属性;子属性按.区分
for(String attribute : attributes){
Object value = object;
String[] singleAttributes = attribute.split("\\.");
for(String singleAttribute : singleAttributes) {
if(value instanceof Map){
value = ((Map)value).get(singleAttribute);
}
else {
value = getFieldValue(value,singleAttribute);
if(ObjectUtil.isEmpty(value)){
return false;
}
}
}
if(ObjectUtil.isEmpty(value)){
return false;
}
}
return true;
}
public Object getFieldValue(Object object,String fieldName) throws IllegalAccessException {
Class clazz = object.getClass();
if(object instanceof Map){
return ((Map) object).get(fieldName);
}
while (ObjectUtil.isNotEmpty(clazz.getSuperclass())) {
for (Field field : clazz.getDeclaredFields()) {
if(fieldName.equals(field.getName())){
field.setAccessible(true);
return field.get(object);
}
}
clazz = clazz.getSuperclass();
}
return null;
}
}

66
hzims-biz-common/src/main/java/com/hnac/hzims/common/launch/LauncherServiceImpl.java

@ -0,0 +1,66 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.launch;
import com.hnac.hzims.common.constant.LauncherConstant;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.constant.AppConstant;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.util.Properties;
/**
* 启动参数拓展
*
* @author smallchil
*/
@AutoService(LauncherService.class)
public class LauncherServiceImpl implements LauncherService {
@Override
public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
Properties props = System.getProperties();
// 通用注册
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
// dubbo注册
PropsUtil.setProperty(props, "dubbo.application.name", appName);
PropsUtil.setProperty(props, "dubbo.application.qos.enable", "false");
PropsUtil.setProperty(props, "dubbo.protocol.name", "dubbo");
PropsUtil.setProperty(props, "dubbo.registry.address", "nacos://" + LauncherConstant.nacosAddr(profile));
PropsUtil.setProperty(props, "dubbo.version", AppConstant.APPLICATION_VERSION);
PropsUtil.setProperty(props, "dubbo.scan.base-packages", AppConstant.BASE_PACKAGES);
// seata注册地址
PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));
// seata注册group格式
PropsUtil.setProperty(props, "seata.tx-service-group", LauncherConstant.seataServiceGroup(appName));
// seata配置服务group
PropsUtil.setProperty(props, "seata.service.vgroup-mapping.".concat(LauncherConstant.seataServiceGroup(appName)), LauncherConstant.DEFAULT_MODE);
// seata注册模式配置
// PropsUtil.setProperty(props, "seata.registry.type", LauncherConstant.NACOS_MODE);
// PropsUtil.setProperty(props, "seata.registry.nacos.server-addr", LauncherConstant.nacosAddr(profile));
// PropsUtil.setProperty(props, "seata.config.type", LauncherConstant.NACOS_MODE);
// PropsUtil.setProperty(props, "seata.config.nacos.server-addr", LauncherConstant.nacosAddr(profile));
}
}

55
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/annotation/OperationAnnotation.java

@ -0,0 +1,55 @@
package com.hnac.hzims.common.logs.annotation;
import com.hnac.hzims.common.logs.enums.BusinessType;
import com.hnac.hzims.common.logs.enums.OperatorType;
import java.lang.annotation.*;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/3/29 11:38
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.PARAMETER, ElementType.METHOD })
public @interface OperationAnnotation {
/**
* 功能模块
*/
String moduleName() default "功能模块";
/**
* 操作模块
* @return
*/
String title() default "操作模块";
/**
* 系统类型网页端app端
*/
OperatorType operatorType() default OperatorType.OTHER;
/**
* 操作类型
* @return
*/
BusinessType businessType() default BusinessType.OTHER;
/**
* 是否保存响应的参数
*/
public boolean isSaveResponseData() default true;
/**
* 功能说明
* @return
*/
String action() default "功能说明";
}

269
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/aop/SysLogAspect.java

@ -0,0 +1,269 @@
package com.hnac.hzims.common.logs.aop;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.hnac.hzims.common.logs.annotation.OperationAnnotation;
import com.hnac.hzims.common.logs.consumer.SysLogQueue;
import com.hnac.hzims.common.logs.to.SysLogTo;
import com.hnac.hzims.common.logs.enums.BusinessStatus;
import com.hnac.hzims.common.logs.utils.StringUtils;
import com.hnac.hzims.common.logs.utils.WebIpUtils;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.CodeSignature;
import org.springblade.core.launch.props.BladeProperties;
import org.springblade.core.launch.server.ServerInfo;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.constant.BladeConstant;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.NamedThreadLocal;
import org.springframework.stereotype.Component;
import org.springframework.util.StopWatch;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
/**
* @author dfy
* @date 2023/3/29
* @description: 操作日志切面处理类
*/
@Aspect
@Component
@Slf4j
public class SysLogAspect {
@Autowired
private ServerInfo serverInfo;
@Autowired
private BladeProperties bladeProperties;
@Autowired
private SysLogQueue sysLogQueue;
//private StopWatch stopWatch = new StopWatch();
private static final ThreadLocal<Long> TIME_THREADLOCAL = new NamedThreadLocal<>("Cost Time");
/**
* 设置操作日志切入点 在注解的位置切入代码
*/
@Pointcut("@annotation(com.hnac.hzims.common.logs.annotation.OperationAnnotation)")
public void logPointCut() {
}
/**
* @param joinPoint
* @Description 前置通知 方法调用前触发 记录开始时间,从session中获取操作人
*/
@Before(value = "logPointCut()")
public void before(JoinPoint joinPoint) {
// if (!stopWatch.isRunning()) {
// stopWatch.start();
// }
//startTime = System.currentTimeMillis();
TIME_THREADLOCAL.set(System.currentTimeMillis());
log.info("前置通知");
}
/**
* @param joinPoint
* @Description 后置通知 方法调用后触发 记录结束时间 ,操作人 ,入参等
*/
@AfterReturning(value = "logPointCut()", returning = "jsonResult")
public void after(JoinPoint joinPoint, Object jsonResult) {
log.info("=========返回通知==============");
try {
handleLog(joinPoint, jsonResult, null);
} catch (Exception e) {
log.error("异常信息:{}", e.getMessage());
e.printStackTrace();
} finally {
TIME_THREADLOCAL.remove();
}
}
/**
* @param joinPoint
* @return
* @Description 获取入参方法参数
*/
public Map<String, Object> getNameAndValue(JoinPoint joinPoint) {
Map<String, Object> param = new HashMap<>(16);
Object[] paramValues = joinPoint.getArgs();
String[] paramNames = ((CodeSignature) joinPoint.getSignature()).getParameterNames();
for (int i = 0; i < paramNames.length; i++) {
if (paramValues[i] instanceof Integer || paramValues[i] instanceof String) {
param.put(paramNames[i], paramValues[i]);
}
}
return param;
}
/**
* @Description: 获取request
*/
public HttpServletRequest getHttpServletRequest() {
RequestAttributes ra = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = sra.getRequest();
return request;
}
/**
* @param joinPoint
* @Description 异常通知
*/
@AfterThrowing(pointcut = "logPointCut()", throwing = "e")
public void throwing(JoinPoint joinPoint, Exception e) {
log.info("=========异常通知==============");
try {
handleLog(joinPoint, null, e);
} catch (Exception exception) {
log.error("异常信息:{}", exception.getMessage());
e.printStackTrace();
} finally {
TIME_THREADLOCAL.remove();
}
}
/**
* 转换request 请求参数
*
* @param paramMap request获取的参数数组
*/
public Map<String, String> converMap(Map<String, String[]> paramMap) {
Map<String, String> rtnMap = new HashMap<String, String>();
for (String key : paramMap.keySet()) {
rtnMap.put(key, paramMap.get(key)[0]);
}
return rtnMap;
}
/**
* 转换异常信息为字符串
*
* @param exceptionName 异常名称
* @param exceptionMessage 异常信息
* @param elements 堆栈信息
*/
public String stackTraceToString(String exceptionName, String exceptionMessage, StackTraceElement[] elements) {
StringBuffer strbuff = new StringBuffer();
for (StackTraceElement stet : elements) {
strbuff.append(stet + "\n");
}
String message = exceptionName + ":" + exceptionMessage + "\n\t" + strbuff.toString();
return message;
}
/**
* 处理操作日志结果集
*
* @param joinPoint
* @param jsonResult
* @param exception
*/
private void handleLog(JoinPoint joinPoint, Object jsonResult, Exception exception) {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class<?> targetClass = null;
try {
targetClass = Class.forName(targetName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Method[] methods = targetClass.getMethods();
String title;
String action;
String businessType;
String operatorType;
String moduleName;
Class<?>[] clazzs;
for (Method method : methods) {
if (method.getName().equals(methodName)) {
clazzs = method.getParameterTypes();
if (clazzs != null && clazzs.length == arguments.length && method.getAnnotation(OperationAnnotation.class) != null) {
// 获取请求的类名
String className = joinPoint.getTarget().getClass().getName();
methodName = className + "." + methodName;
HttpServletRequest request = getHttpServletRequest();
String requestPath = request.getServletPath();
OperationAnnotation annotation = method.getAnnotation(OperationAnnotation.class);
title = annotation.title();
action = annotation.action();
businessType = annotation.businessType().getValue();
operatorType = annotation.operatorType().getValue();
moduleName = annotation.moduleName();
// 获取当前用户信息
String userName = AuthUtil.getUserAccount(request);
Long userId = AuthUtil.getUserId(request);
SysLogTo sysLog = new SysLogTo();
if (StringUtils.isBlank(userName) && userId == -1) {
userName = "当前用户未登录";
}
sysLog.setModuleName(moduleName);
sysLog.setOperationUserName(userName);
sysLog.setOperationUserId(userId);
sysLog.setTenantId(Func.toStr(AuthUtil.getTenantId(), BladeConstant.ADMIN_TENANT_ID));
sysLog.setLocalIp(WebIpUtils.getIpAddr(request));// 请求IP
// if (stopWatch.isRunning()) {
// stopWatch.stop();
// }
long endTime = System.currentTimeMillis();
sysLog.setCostTime((endTime - TIME_THREADLOCAL.get()) + "ms");
sysLog.setPath(requestPath);
sysLog.setTitle(title);
sysLog.setAction(action);
sysLog.setOperatorType(operatorType);
sysLog.setBusinessType(businessType);
sysLog.setParameter(getNameAndValue(joinPoint).toString());
sysLog.setMethodClass(className);
sysLog.setMethodName(methodName);
sysLog.setServerName(bladeProperties.getName());
sysLog.setServerHost(serverInfo.getHostName());
sysLog.setServerIp(serverInfo.getIpWithPort());
sysLog.setEnv(bladeProperties.getEnv());
sysLog.setMethod(request.getMethod());
sysLog.setUserAgent(request.getHeader(WebUtil.USER_AGENT_HEADER));
sysLog.setOperationTime(LocalDateTime.now());
//返回结果集
if (ObjectUtils.isNotEmpty(jsonResult)) {
sysLog.setStatus(BusinessStatus.SUCCESS.getKey());
sysLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000));
}
//异常结果集
if (exception != null) {
sysLog.setStatus(BusinessStatus.FAIL.getKey());
sysLog.setErrorMsg(StringUtils.substring(exception.getMessage(), 0, 2000));
}
//保存到阻塞队列里
sysLogQueue.add(sysLog);
}
}
}
}
}

119
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/consumer/SysLogConsumer.java

@ -0,0 +1,119 @@
package com.hnac.hzims.common.logs.consumer;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.hnac.hzims.common.logs.to.SysLogTo;
import com.hnac.hzims.common.logs.fegin.SysLogFeignService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 执行异步线程操作
* @Author dfy
* @Version v1.0
* @Serial 1.0
* @Date 2023/4/3 14:00
*/
@Slf4j
@Component
public class SysLogConsumer implements Runnable {
/**
* 默认16
*/
private static final int DEFAULT_BATCH_SIZE = 1000;
@Resource
private SysLogQueue auditLogQueue;
/**
* 批次数
*/
private int batchSize = DEFAULT_BATCH_SIZE;
@Autowired
private SysLogFeignService sysLogFeignService;
/**
* 默认为true
*/
private boolean active = true;
private Thread thread;
/**
* 启动线程
*/
@PostConstruct
public void init() {
thread = new Thread(this);
thread.start();
thread.setName("SysLogConsumer");
}
/**
* 使用该注解在项目结束的舒缓关闭
*/
@PreDestroy
public void close() {
active = false;
}
/**
* 执行线程操作
*/
@Override
public void run() {
while (active) {
execute();
}
}
/**
* 执行业务处理操作新增日志记录
*/
public void execute() {
List<SysLogTo> sysLogs = new ArrayList<>();
try {
int size = 0;
while (size < batchSize) {
//从队列中取出一个
SysLogTo sysLog = auditLogQueue.poll();
if (sysLog == null) {
break;
}
sysLogs.add(sysLog);
size++;
}
} catch (InterruptedException e) {
e.printStackTrace();
log.error(e.toString());
}
//如果当前的日志list不为空
if (CollectionUtils.isNotEmpty(sysLogs)) {
log.info("日志操作数据:" + sysLogs);
// TODO: 2023/4/4 添加到数据库
try {
// TODO: 2023/4/4 后期采取kafka+elk实现,可以提高效率,操作日志数据越来越大,查询效率变大,提高性能
sysLogFeignService.saveBatch(sysLogs);
} catch (Exception e) {
// TODO: 2023/4/4 出现异常呢,
e.printStackTrace();
}
}
}
}

43
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/consumer/SysLogQueue.java

@ -0,0 +1,43 @@
package com.hnac.hzims.common.logs.consumer;
import com.hnac.hzims.common.logs.to.SysLogTo;
import org.springframework.stereotype.Component;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
/**
* 定义队列
* @Author dfy
* @Version v1.0
* @Serial 1.0
* @Date 2023/4/3 14:01
*/
@Component
public class SysLogQueue {
/**
* BlockingDequeue为双端阻塞队列blockingQueue阻塞队列
*/
private BlockingQueue<SysLogTo> blockingQueue = new LinkedBlockingQueue<>();
/**
* 存入数据
* @param auditLog
*/
public void add(SysLogTo auditLog) {
blockingQueue.offer(auditLog);
}
/**
* poll从队列的头部获取到信息
* @return
* @throws InterruptedException
*/
public SysLogTo poll() throws InterruptedException {
//每秒钟执行一次
return blockingQueue.poll(1, TimeUnit.SECONDS);
}
}

33
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/BusinessStatus.java

@ -0,0 +1,33 @@
package com.hnac.hzims.common.logs.enums;
import lombok.Getter;
/**
* 操作状态
*
* @author ruoyi
*
*/
public enum BusinessStatus
{
/**
* 成功
*/
SUCCESS(0,"执行成功"),
/**
* 异常
*/
FAIL(1,"执行异常");
@Getter
private Integer key;
@Getter
private String value;
BusinessStatus(Integer key,String value){
this.key = key;
this.value = value;
}
}

73
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/BusinessType.java

@ -0,0 +1,73 @@
package com.hnac.hzims.common.logs.enums;
import lombok.Getter;
/**
* 业务操作类型
*
* @author ruoyi
*/
public enum BusinessType
{
/**
* 其它
*/
OTHER("OTHER","其他"),
/**
* 新增
*/
INSERT("INSERT","新增"),
/**
* 修改
*/
UPDATE("UPDATE","修改"),
/**
* 删除
*/
DELETE("DELETE","删除"),
/**
* 授权
*/
GRANT("GRANT","授权"),
/**
* 导出
*/
EXPORT("EXPORT","导出"),
/**
* 导入
*/
IMPORT("IMPORT","导入"),
/**
* 强退
*/
FORCE("FORCE","强退"),
/**
* 查询
*/
GENCODE("GENCODE","查询"),
/**
* 清空数据
*/
CLEAN("CLEAN","清空数据");
@Getter
private String key;
@Getter
private String value;
BusinessType(String key,String value){
this.key = key;
this.value = value;
}
}

45
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/enums/OperatorType.java

@ -0,0 +1,45 @@
package com.hnac.hzims.common.logs.enums;
import lombok.Getter;
/**
* 操作人类别
*
* @author ruoyi
*/
public enum OperatorType
{
/**
* 其它
*/
OTHER("OTHER","其它"),
/**
* 后台用户
*/
MANAGE("MANAGE","后台用户"),
/**
* web
*/
MOBILE("MOBILE","web端"),
/**
* app
*/
APPSYSTEMS("APPSYSTEMS","app端");
@Getter
private String key;
@Getter
private String value;
OperatorType(String key,String value){
this.key = key;
this.value = value;
}
}

29
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/fegin/SysLogFeignService.java

@ -0,0 +1,29 @@
package com.hnac.hzims.common.logs.fegin;
import com.hnac.hzims.common.logs.to.SysLogTo;
import com.hnac.hzims.common.logs.fegin.fallback.SysLogFeignServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/4/3 13:46
*/
@Repository
@FeignClient(value = "hzims-middle",fallback = SysLogFeignServiceFallback.class)
public interface SysLogFeignService {
/**
* 报存日志操作
*
* @param sysLogs
*/
@PostMapping("/systemlog/sys-log/batchSave")
void saveBatch(@RequestBody List<SysLogTo> sysLogs);
}

30
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/fegin/fallback/SysLogFeignServiceFallback.java

@ -0,0 +1,30 @@
package com.hnac.hzims.common.logs.fegin.fallback;
import com.hnac.hzims.common.logs.to.SysLogTo;
import com.hnac.hzims.common.logs.fegin.SysLogFeignService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/4/4 9:45
*/
@Slf4j
@Service
public class SysLogFeignServiceFallback implements SysLogFeignService {
/**
* 报存日志操作
*
* @param sysLogs
*/
@Override
public void saveBatch(List<SysLogTo> sysLogs) {
log.error("报存日志操作异常发生,进入fallback方法");
log.error("获取异常的数据 {}", sysLogs);
throw new IllegalArgumentException("报存日志操作异常发生,进入fallback方法");
}
}

88
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/CharsetKit.java

@ -0,0 +1,88 @@
package com.hnac.hzims.common.logs.text;
import com.hnac.hzims.common.logs.utils.StringUtils;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
/**
* 字符集工具类
*
* @author dfy
*/
public class CharsetKit
{
/** ISO-8859-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** UTF-8 */
public static final String UTF_8 = "UTF-8";
/** GBK */
public static final String GBK = "GBK";
/** ISO-8859-1 */
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
/** UTF-8 */
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
/** GBK */
public static final Charset CHARSET_GBK = Charset.forName(GBK);
/**
* 转换为Charset对象
*
* @param charset 字符集为空则返回默认字符集
* @return Charset
*/
public static Charset charset(String charset)
{
return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
}
/**
* 转换字符串的字符集编码
*
* @param source 字符串
* @param srcCharset 源字符集默认ISO-8859-1
* @param destCharset 目标字符集默认UTF-8
* @return 转换后的字符集
*/
public static String convert(String source, String srcCharset, String destCharset)
{
return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
}
/**
* 转换字符串的字符集编码
*
* @param source 字符串
* @param srcCharset 源字符集默认ISO-8859-1
* @param destCharset 目标字符集默认UTF-8
* @return 转换后的字符集
*/
public static String convert(String source, Charset srcCharset, Charset destCharset)
{
if (null == srcCharset)
{
srcCharset = StandardCharsets.ISO_8859_1;
}
if (null == destCharset)
{
destCharset = StandardCharsets.UTF_8;
}
if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
{
return source;
}
return new String(source.getBytes(srcCharset), destCharset);
}
/**
* @return 系统字符集编码
*/
public static String systemCharset()
{
return Charset.defaultCharset().name();
}
}

1009
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/Convert.java

File diff suppressed because it is too large Load Diff

93
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/text/StrFormatter.java

@ -0,0 +1,93 @@
package com.hnac.hzims.common.logs.text;
import com.hnac.hzims.common.logs.utils.StringUtils;
/**
* 字符串格式化
*
* @author ruoyi
*/
public class StrFormatter
{
public static final String EMPTY_JSON = "{}";
public static final char C_BACKSLASH = '\\';
public static final char C_DELIM_START = '{';
public static final char C_DELIM_END = '}';
/**
* 格式化字符串<br>
* 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
* 如果想输出 {} 使用 \\转义 { 即可如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
* <br>
* 通常使用format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转义{} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转义\ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
* @param strPattern 字符串模板
* @param argArray 参数列表
* @return 结果
*/
public static String format(final String strPattern, final Object... argArray)
{
if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
{
return strPattern;
}
final int strPatternLength = strPattern.length();
// 初始化定义好的长度以获得更好的性能
StringBuilder sbuf = new StringBuilder(strPatternLength + 50);
int handledPosition = 0;
int delimIndex;// 占位符所在位置
for (int argIndex = 0; argIndex < argArray.length; argIndex++)
{
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
if (delimIndex == -1)
{
if (handledPosition == 0)
{
return strPattern;
}
else
{ // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString();
}
}
else
{
if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
{
if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
{
// 转义符之前还有一个转义符,占位符依旧有效
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
}
else
{
// 占位符被转义
argIndex--;
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(C_DELIM_START);
handledPosition = delimIndex + 1;
}
}
else
{
// 正常占位符
sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
}
}
}
// 加入最后一个占位符后所有的字符
sbuf.append(strPattern, handledPosition, strPattern.length());
return sbuf.toString();
}
}

176
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/to/SysLogTo.java

@ -0,0 +1,176 @@
package com.hnac.hzims.common.logs.to;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/3/29 13:24
*/
@Data
public class SysLogTo {
private static final long serialVersionUID = 1L;
private Long id;
/**
* 租户ID
*/
@ApiModelProperty("租户ID")
private String tenantId;
/**
* 服务器ip
*/
@ApiModelProperty("服务器ip")
protected String serverIp;
/**
* 服务器地址
*/
@ApiModelProperty("服务器地址")
protected String serverHost;
/**
* 服务名称
*/
@ApiModelProperty("服务名称")
protected String serverName;
/**
* 环境
*/
@ApiModelProperty("环境")
protected String env;
/**
* 操作人 id
*/
@ApiModelProperty("操作人id")
private Long operationUserId;
/**
* 操作人
*/
@ApiModelProperty("操作人")
private String operationUserName;
/**
* 请求路径 操作地址
*/
@ApiModelProperty(" 请求路径 (操作地址)")
private String path;
/**
* 用户代理
*/
@ApiModelProperty("用户代理")
protected String userAgent;
/**
* 操作方式
*/
@ApiModelProperty("操作方式")
protected String method;
/**
* 方法类
*/
@ApiModelProperty("方法类")
protected String methodClass;
/**
* 方法名
*/
@ApiModelProperty("方法名")
protected String methodName;
/**
* 方法执行时间 消耗时间 毫秒
*/
@ApiModelProperty("法执行时间 消耗时间 毫秒")
private String costTime;
/**
* 方法入参
*/
@ApiModelProperty("方法入参")
private String parameter;
/**
* 操作方法
*/
@ApiModelProperty("操作方法")
private String title;
/**
* 方法描述
*/
@ApiModelProperty("方法描述")
private String action;
/**
* 系统类型
*/
@ApiModelProperty("系统类型")
private String operatorType;
/**
* 操作人类别
*/
@ApiModelProperty("操作人类别")
private String businessType;
/**
* 返回结果
*
* @param jsonResult
*/
@ApiModelProperty("返回结果")
public String jsonResult;
/**
* 请求的Ip
*/
@ApiModelProperty("请求的Ip")
private String localIp;
/**
* 错误消息
*/
@ApiModelProperty("错误消息")
private String errorMsg;
/**
* 操作时间
*/
@ApiModelProperty("操作时间")
private LocalDateTime operationTime;
/**
* 操作状态0 正常 1 异常
*/
@ApiModelProperty("操作状态")
private Integer status;
/**
* 功能模块
*/
@ApiModelProperty("功能模块")
private String moduleName;
}

130
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/Constants.java

@ -0,0 +1,130 @@
package com.hnac.hzims.common.logs.utils;
/**
* 通用常量信息
*
* @author ruoyi
*/
public class Constants
{
/**
* UTF-8 字符集
*/
public static final String UTF8 = "UTF-8";
/**
* GBK 字符集
*/
public static final String GBK = "GBK";
/**
* www主域
*/
public static final String WWW = "www.";
/**
* RMI 远程方法调用
*/
public static final String LOOKUP_RMI = "rmi:";
/**
* LDAP 远程方法调用
*/
public static final String LOOKUP_LDAP = "ldap:";
/**
* LDAPS 远程方法调用
*/
public static final String LOOKUP_LDAPS = "ldaps:";
/**
* http请求
*/
public static final String HTTP = "http://";
/**
* https请求
*/
public static final String HTTPS = "https://";
/**
* 成功标记
*/
public static final Integer SUCCESS = 200;
/**
* 失败标记
*/
public static final Integer FAIL = 500;
/**
* 登录成功状态
*/
public static final String LOGIN_SUCCESS_STATUS = "0";
/**
* 登录失败状态
*/
public static final String LOGIN_FAIL_STATUS = "1";
/**
* 登录成功
*/
public static final String LOGIN_SUCCESS = "Success";
/**
* 注销
*/
public static final String LOGOUT = "Logout";
/**
* 注册
*/
public static final String REGISTER = "Register";
/**
* 登录失败
*/
public static final String LOGIN_FAIL = "Error";
/**
* 当前记录起始索引
*/
public static final String PAGE_NUM = "pageNum";
/**
* 每页显示记录数
*/
public static final String PAGE_SIZE = "pageSize";
/**
* 排序列
*/
public static final String ORDER_BY_COLUMN = "orderByColumn";
/**
* 排序的方向 "desc" 或者 "asc".
*/
public static final String IS_ASC = "isAsc";
/**
* 验证码有效期分钟
*/
public static final long CAPTCHA_EXPIRATION = 2;
/**
* 资源映射路径 前缀
*/
public static final String RESOURCE_PREFIX = "/profile";
/**
* 定时任务白名单配置仅允许访问的包名如其他需要可以自行添加
*/
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
/**
* 定时任务违规的字符
*/
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.core.utils.file" };
}

567
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/StringUtils.java

@ -0,0 +1,567 @@
package com.hnac.hzims.common.logs.utils;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/3/31 15:43
*/
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.hnac.hzims.common.logs.text.StrFormatter;
import org.springframework.util.AntPathMatcher;
/**
* 字符串工具类
*
* @author ruoyi
*/
public class StringUtils extends org.apache.commons.lang3.StringUtils
{
/** 空字符串 */
private static final String NULLSTR = "";
/** 下划线 */
private static final char SEPARATOR = '_';
/**
* 获取参数不为空值
*
* @param value defaultValue 要判断的value
* @return value 返回值
*/
public static <T> T nvl(T value, T defaultValue)
{
return value != null ? value : defaultValue;
}
/**
* * 判断一个Collection是否为空 包含ListSetQueue
*
* @param coll 要判断的Collection
* @return true为空 false非空
*/
public static boolean isEmpty(Collection<?> coll)
{
return isNull(coll) || coll.isEmpty();
}
/**
* * 判断一个Collection是否非空包含ListSetQueue
*
* @param coll 要判断的Collection
* @return true非空 false
*/
public static boolean isNotEmpty(Collection<?> coll)
{
return !isEmpty(coll);
}
/**
* * 判断一个对象数组是否为空
*
* @param objects 要判断的对象数组
** @return true为空 false非空
*/
public static boolean isEmpty(Object[] objects)
{
return isNull(objects) || (objects.length == 0);
}
/**
* * 判断一个对象数组是否非空
*
* @param objects 要判断的对象数组
* @return true非空 false
*/
public static boolean isNotEmpty(Object[] objects)
{
return !isEmpty(objects);
}
/**
* * 判断一个Map是否为空
*
* @param map 要判断的Map
* @return true为空 false非空
*/
public static boolean isEmpty(Map<?, ?> map)
{
return isNull(map) || map.isEmpty();
}
/**
* * 判断一个Map是否为空
*
* @param map 要判断的Map
* @return true非空 false
*/
public static boolean isNotEmpty(Map<?, ?> map)
{
return !isEmpty(map);
}
/**
* * 判断一个字符串是否为空串
*
* @param str String
* @return true为空 false非空
*/
public static boolean isEmpty(String str)
{
return isNull(str) || NULLSTR.equals(str.trim());
}
/**
* * 判断一个字符串是否为非空串
*
* @param str String
* @return true非空串 false空串
*/
public static boolean isNotEmpty(String str)
{
return !isEmpty(str);
}
/**
* * 判断一个对象是否为空
*
* @param object Object
* @return true为空 false非空
*/
public static boolean isNull(Object object)
{
return object == null;
}
/**
* * 判断一个对象是否非空
*
* @param object Object
* @return true非空 false
*/
public static boolean isNotNull(Object object)
{
return !isNull(object);
}
/**
* * 判断一个对象是否是数组类型Java基本型别的数组
*
* @param object 对象
* @return true是数组 false不是数组
*/
public static boolean isArray(Object object)
{
return isNotNull(object) && object.getClass().isArray();
}
/**
* 去空格
*/
public static String trim(String str)
{
return (str == null ? "" : str.trim());
}
/**
* 截取字符串
*
* @param str 字符串
* @param start 开始
* @return 结果
*/
public static String substring(final String str, int start)
{
if (str == null)
{
return NULLSTR;
}
if (start < 0)
{
start = str.length() + start;
}
if (start < 0)
{
start = 0;
}
if (start > str.length())
{
return NULLSTR;
}
return str.substring(start);
}
/**
* 截取字符串
*
* @param str 字符串
* @param start 开始
* @param end 结束
* @return 结果
*/
public static String substring(final String str, int start, int end)
{
if (str == null)
{
return NULLSTR;
}
if (end < 0)
{
end = str.length() + end;
}
if (start < 0)
{
start = str.length() + start;
}
if (end > str.length())
{
end = str.length();
}
if (start > end)
{
return NULLSTR;
}
if (start < 0)
{
start = 0;
}
if (end < 0)
{
end = 0;
}
return str.substring(start, end);
}
/**
* 判断是否为空并且不是空白字符
*
* @param str 要判断的value
* @return 结果
*/
public static boolean hasText(String str)
{
return (str != null && !str.isEmpty() && containsText(str));
}
private static boolean containsText(CharSequence str)
{
int strLen = str.length();
for (int i = 0; i < strLen; i++)
{
if (!Character.isWhitespace(str.charAt(i)))
{
return true;
}
}
return false;
}
/**
* 格式化文本, {} 表示占位符<br>
* 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
* 如果想输出 {} 使用 \\转义 { 即可如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
* <br>
* 通常使用format("this is {} for {}", "a", "b") -> this is a for b<br>
* 转义{} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* 转义\ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
*
* @param template 文本模板被替换的部分用 {} 表示
* @param params 参数值
* @return 格式化后的文本
*/
public static String format(String template, Object... params)
{
if (isEmpty(params) || isEmpty(template))
{
return template;
}
return StrFormatter.format(template, params);
}
/**
* 是否为http(s)://开头
*
* @param link 链接
* @return 结果
*/
public static boolean ishttp(String link)
{
return startsWithAny(link, Constants.HTTP, Constants.HTTPS);
}
/**
* 判断给定的set列表中是否包含数组array 判断给定的数组array中是否包含给定的元素value
*
* @param array 给定的数组
* @return boolean 结果
*/
public static boolean containsAny(Collection<String> collection, String... array)
{
if (isEmpty(collection) || isEmpty(array))
{
return false;
}
else
{
for (String str : array)
{
if (collection.contains(str))
{
return true;
}
}
return false;
}
}
/**
* 驼峰转下划线命名
*/
public static String toUnderScoreCase(String str)
{
if (str == null)
{
return null;
}
StringBuilder sb = new StringBuilder();
// 前置字符是否大写
boolean preCharIsUpperCase = true;
// 当前字符是否大写
boolean curreCharIsUpperCase = true;
// 下一字符是否大写
boolean nexteCharIsUpperCase = true;
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
if (i > 0)
{
preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
}
else
{
preCharIsUpperCase = false;
}
curreCharIsUpperCase = Character.isUpperCase(c);
if (i < (str.length() - 1))
{
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
}
if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
{
sb.append(SEPARATOR);
}
else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
{
sb.append(SEPARATOR);
}
sb.append(Character.toLowerCase(c));
}
return sb.toString();
}
/**
* 是否包含字符串
*
* @param str 验证字符串
* @param strs 字符串组
* @return 包含返回true
*/
public static boolean inStringIgnoreCase(String str, String... strs)
{
if (str != null && strs != null)
{
for (String s : strs)
{
if (str.equalsIgnoreCase(trim(s)))
{
return true;
}
}
}
return false;
}
/**
* 将下划线大写方式命名的字符串转换为驼峰式如果转换前的下划线大写方式命名的字符串为空则返回空字符串 例如HELLO_WORLD->HelloWorld
*
* @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串
*/
public static String convertToCamelCase(String name)
{
StringBuilder result = new StringBuilder();
// 快速检查
if (name == null || name.isEmpty())
{
// 没必要转换
return "";
}
else if (!name.contains("_"))
{
// 不含下划线,仅将首字母大写
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
// 用下划线将原始字符串分割
String[] camels = name.split("_");
for (String camel : camels)
{
// 跳过原始字符串中开头、结尾的下换线或双重下划线
if (camel.isEmpty())
{
continue;
}
// 首字母大写
result.append(camel.substring(0, 1).toUpperCase());
result.append(camel.substring(1).toLowerCase());
}
return result.toString();
}
/**
* 驼峰式命名法
* 例如user_name->userName
*/
public static String toCamelCase(String s)
{
if (s == null)
{
return null;
}
if (s.indexOf(SEPARATOR) == -1)
{
return s;
}
s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false;
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if (c == SEPARATOR)
{
upperCase = true;
}
else if (upperCase)
{
sb.append(Character.toUpperCase(c));
upperCase = false;
}
else
{
sb.append(c);
}
}
return sb.toString();
}
/**
* 查找指定字符串是否匹配指定字符串列表中的任意一个字符串
*
* @param str 指定字符串
* @param strs 需要检查的字符串数组
* @return 是否匹配
*/
public static boolean matches(String str, List<String> strs)
{
if (isEmpty(str) || isEmpty(strs))
{
return false;
}
for (String pattern : strs)
{
if (isMatch(pattern, str))
{
return true;
}
}
return false;
}
/**
* 判断url是否与规则配置:
* ? 表示单个字符;
* * 表示一层路径内的任意字符串不可跨层级;
* ** 表示任意层路径;
*
* @param pattern 匹配规则
* @param url 需要匹配的url
* @return
*/
public static boolean isMatch(String pattern, String url)
{
AntPathMatcher matcher = new AntPathMatcher();
return matcher.match(pattern, url);
}
@SuppressWarnings("unchecked")
public static <T> T cast(Object obj)
{
return (T) obj;
}
/**
* 数字左边补齐0使之达到指定长度注意如果数字转换为字符串后长度大于size则只保留 最后size个字符
*
* @param num 数字对象
* @param size 字符串指定长度
* @return 返回数字的字符串格式该字符串为指定长度
*/
public static final String padl(final Number num, final int size)
{
return padl(num.toString(), size, '0');
}
/**
* 字符串左补齐如果原始字符串s长度大于size则只保留最后size个字符
*
* @param s 原始字符串
* @param size 字符串指定长度
* @param c 用于补齐的字符
* @return 返回指定长度的字符串由原字符串左补齐或截取得到
*/
public static final String padl(final String s, final int size, final char c)
{
final StringBuilder sb = new StringBuilder(size);
if (s != null)
{
final int len = s.length();
if (s.length() <= size)
{
for (int i = size - len; i > 0; i--)
{
sb.append(c);
}
sb.append(s);
}
else
{
return s.substring(len - size, len);
}
}
else
{
for (int i = size; i > 0; i--)
{
sb.append(c);
}
}
return sb.toString();
}
}

29
hzims-biz-common/src/main/java/com/hnac/hzims/common/logs/utils/WebIpUtils.java

@ -0,0 +1,29 @@
package com.hnac.hzims.common.logs.utils;
import javax.servlet.http.HttpServletRequest;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/7/26 11:34
*/
public class WebIpUtils {
public static String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if (!(null == ip || "".equals(ip.trim()) || "null".equalsIgnoreCase(ip.trim())) && ip.contains(",")) {
ip = ip.split(",")[0];
}
return ip;
}
}

22
hzims-biz-common/src/main/java/com/hnac/hzims/common/pojo/Tree.java

@ -0,0 +1,22 @@
package com.hnac.hzims.common.pojo;
import java.util.List;
/**
* 基础VO,用于tree结构
*
* @author xiashandong
* @created 2020/9/9 17:30
**/
public interface Tree<T extends Tree> {
List<T> getChildren();
void setChildren(List<T> children);
Long getId();
Long getParentId();
String getName();
}

84
hzims-biz-common/src/main/java/com/hnac/hzims/common/service/UserAuthDataService.java

@ -0,0 +1,84 @@
package com.hnac.hzims.common.service;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springblade.core.tool.api.R;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
@AllArgsConstructor
@Slf4j
@Service
public class UserAuthDataService {
private final IUserClient userClient;
/**
* 根据用户ID拼接用户数据权限SQL
* @param userId
* @return
*/
public String getUserAuthDataSQL(Long userId) {
R<User> r = userClient.userInfoById(userId);
String sqlScript = null;
if(r.getCode() != HttpStatus.OK.value() || r.getData() == null) {
return null;
}
User user = r.getData();
if(StringUtils.isBlank(user.getDataScopeType())) {
return null;
}
switch (user.getDataScopeType()) {
case "0" :
//本人
sqlScript = " create_user = " + userId;
break;
case "1":
//所属机构
if(StringUtils.isNotBlank(user.getDeptId())) {
sqlScript = " create_dept = " + user.getDeptId();
}
break;
case "2":
//本部门及下属
if(StringUtils.isNotBlank(user.getDeptId())) {
sqlScript = " create_dept like '" + user.getDeptId() + "%' ";
}
break;
case "3":
//从属机构
if(StringUtils.isNotBlank(user.getDeptIds())) {
sqlScript = " create_dept in (" + user.getDeptIds() + ") ";
}
break;
case "4":
//从属机构及下属
if(StringUtils.isNotBlank(user.getDeptIds())) {
String[] deptIds = user.getDeptIds().split(",");
sqlScript = " ( ";
for(int i = 0;i<deptIds.length;i++) {
sqlScript += " create_dept like '" + deptIds[i] + "%'";
if(i < deptIds.length-1) {
sqlScript += " or ";
}
}
sqlScript += " ) ";
}
break;
case "5":
//个人及下属机构
if(StringUtils.isNotBlank(user.getDeptId())){
sqlScript = " (( create_user = " + userId + " or create_dept like '" + user.getDeptId() + "%' ) " + " and create_dept != " + user.getDeptId() + " ) ";
} else {
sqlScript = " create_user = " + userId;
}
break;
default:
break;
}
return sqlScript;
}
}

171
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/CacheUtil.java

@ -0,0 +1,171 @@
package com.hnac.hzims.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Component;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author hx
*/
@Component
@Slf4j
public class CacheUtil {
/**redis内存储对象容错次数属性名**/
private static final String TOLERANCE_COUNT = "toleranceCount";
@Autowired
public RedisTemplate redisTemplate;
@Autowired
public StringRedisTemplate stringRedisTemplate;
/**String 锁**/
private Lock stringLock = new ReentrantLock();
/**hash 锁**/
private Lock hashLock = new ReentrantLock();
/**zSet 锁**/
private Lock zSetLock = new ReentrantLock();
/**
* redis String类型容错机制处理 超出容错机制自动删除
* @param key 缓存键值
* @param toleranceCountMax 最高容错次数
*/
public void toleranceFaultString(String key,int toleranceCountMax) {
stringLock.lock();
try{
ValueOperations valueOperations= redisTemplate.opsForValue();
Object object = valueOperations.get(key);
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
redisTemplate.multi();
if(ObjectUtil.isEmpty(object)) {
return null;
}
//记录错误次数 超出错误阈值删除key值
JSONObject jsonObject = addToleranceCount(object);
if(Integer.parseInt(jsonObject.getString(TOLERANCE_COUNT)) > toleranceCountMax){
stringRedisTemplate.delete(key);
}
else {
valueOperations.setIfPresent(key,JSON.toJSONString(jsonObject));
}
operations.exec();
return null;
}
});
}
finally {
stringLock.unlock();
}
}
/**
* redis hash类型容错机制处理 超出容错机制自动删除
* @param key 缓存键值
* @param hashCode hash值
* @param toleranceCountMax 最高容错次数
*/
public void toleranceFaultHash(String key,String hashCode,int toleranceCountMax) {
hashLock.lock();
try{
HashOperations hashOperations = redisTemplate.opsForHash();
Object object = hashOperations.get(key,hashCode);
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
redisTemplate.multi();
if(ObjectUtil.isEmpty(object)) {
return null;
}
//记录错误次数 超出错误阈值删除key值
JSONObject jsonObject = addToleranceCount(object);
if(Integer.parseInt(jsonObject.getString(TOLERANCE_COUNT)) > toleranceCountMax){
hashOperations.delete(key,hashCode);
}
else {
hashOperations.put(key,hashCode,JSON.toJSONString(jsonObject));
}
operations.exec();
return null;
}
});
}
finally {
hashLock.unlock();
}
}
/**
* redis ZSet类型容错机制处理 超出容错机制自动删除
* @param key 键值
* @param object 分数
* @param toleranceCountMax 容错阈值
*/
public void toleranceFaultZSet(String key,Object object,int toleranceCountMax) {
zSetLock.lock();
try{
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
Double score = redisTemplate.opsForZSet().score(key, object);
if(Func.isEmpty(score)) {
return;
}
log.info("score:{}",score);
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations operations) throws DataAccessException {
redisTemplate.multi();
if(ObjectUtil.isEmpty(object)) {
return null;
}
//删除object 若未达到容错阈值则重新插入回去 达到修改的效果
zSetOperations.remove(key,object);
JSONObject jsonObject = addToleranceCount(object);
if(Integer.parseInt(jsonObject.getString(TOLERANCE_COUNT)) < toleranceCountMax){
zSetOperations.add(key,JSON.toJSONString(jsonObject),score);
}
operations.exec();
return null;
}
});
}
finally {
zSetLock.unlock();
}
}
/***
* 记录错误次数
* @param object redis - value
* @return
*/
public JSONObject addToleranceCount(Object object) {
String json = "";
if(object instanceof String){
json = (String) object;
}
else{
json = JSON.toJSONString(object);
}
JSONObject jsonObject = JSONObject.parseObject(json);
if(Func.isEmpty(jsonObject.getString(TOLERANCE_COUNT))) {
jsonObject.put(TOLERANCE_COUNT,1);
}
else {
int toleranceCount = Integer.parseInt(jsonObject.getString(TOLERANCE_COUNT));
jsonObject.put(TOLERANCE_COUNT,toleranceCount+1);
}
return jsonObject;
}
}

26
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/CommonUtil.java

@ -0,0 +1,26 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package com.hnac.hzims.common.utils;
/**
* 通用工具类
*
* @author Chill
*/
public class CommonUtil {
}

225
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/Condition.java

@ -0,0 +1,225 @@
package com.hnac.hzims.common.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.QueryField;
import org.springblade.core.mp.support.SqlCondition;
import org.springblade.core.tenant.mp.TenantEntity;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
* @author ninglong
* @create 2020-08-25 18:59
*/
public class Condition extends org.springblade.core.mp.support.Condition {
/**
* 驼峰转下划线
* @param c
* @return
*/
private static String camel2under(String c) {
String separator = "_";
c = c.replaceAll("([a-z])([A-Z])", "$1" + separator + "$2").toUpperCase();
return c;
}
public static <T> LambdaQueryWrapper<T> getQueryWrapper(Class<T> clazz, Object query) {
QueryWrapper qw = new QueryWrapper();
qw.setEntityClass(clazz);
Class queryClass = query.getClass();
List<Field> fieldList = new ArrayList<>();
while (null != queryClass){
fieldList.addAll(Arrays.asList(queryClass.getDeclaredFields()));
queryClass = queryClass.getSuperclass();
}
for(Field field:fieldList){
field.setAccessible(true);
QueryField queryField = field.getAnnotation(QueryField.class);
if(queryField==null) {
continue;
}
Object value;
try {
value = field.get(query);
} catch (Exception e) {
throw new ServiceException("获取属性性出错");
}
if(value==null) {
continue;
}
List list = null;
if(value instanceof List){
list = (List)value;
if(list.size()==0) {
continue;
}
}
String condition = queryField.condition();
if(Func.isBlank(condition)) {
continue;
}
String fileName = camel2under(field.getName());
if(SqlCondition.EQUAL.equals(condition)) {
qw.eq(fileName, value);
}else if(SqlCondition.LIKE.equals(condition)){
qw.like(fileName,value);
}else if(SqlCondition.LIKE_LEFT.equals(condition)){
qw.likeLeft(fileName,value);
}else if(SqlCondition.LIKE_RIGHT.equals(condition)){
qw.likeRight(fileName,value);
}else if(SqlCondition.NOT_IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询不包含条件时需要指定列名");
}
qw.notIn(camel2under(columnName),list);
}else if(SqlCondition.IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询包含条件时需要指定列名");
}
qw.in(camel2under(columnName),list);
}
}
return qw.lambda();
}
/**
* 支持配置化的模糊查询
* @param entity 数据库返回的对象实体
* @param query 查询条件实体
* @param <T> 数据库返回的对象实体
* @return
*/
public static <T> LambdaQueryWrapper<T> getQueryWrapper(T entity, Object query) {
QueryWrapper qw = new QueryWrapper();
qw.setEntityClass(entity.getClass());
Class queryClass = query.getClass();
List<Field> fieldList = new ArrayList<>();
while (null != queryClass){
fieldList.addAll(Arrays.asList(queryClass.getDeclaredFields()));
queryClass = queryClass.getSuperclass();
}
for(Field field:fieldList){
field.setAccessible(true);
QueryField queryField = field.getAnnotation(QueryField.class);
if(queryField==null) {
continue;
}
Object value;
try {
value = field.get(query);
} catch (Exception e) {
throw new ServiceException("获取属性性出错");
}
if(value==null) {
continue;
}
List list = null;
if(value instanceof List){
list = (List)value;
if(list.size()==0) {
continue;
}
}
String condition = queryField.condition();
if(Func.isBlank(condition)) {
continue;
}
String fileName = camel2under(field.getName());
if(SqlCondition.EQUAL.equals(condition)) {
qw.eq(fileName, value);
}else if(SqlCondition.LIKE.equals(condition)){
qw.like(fileName,value);
}else if(SqlCondition.LIKE_LEFT.equals(condition)){
qw.likeLeft(fileName,value);
}else if(SqlCondition.LIKE_RIGHT.equals(condition)){
qw.likeRight(fileName,value);
}else if(SqlCondition.NOT_IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询不包含条件时需要指定列名");
}
qw.notIn(camel2under(columnName),list);
}else if(SqlCondition.IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询包含条件时需要指定列名");
}
qw.in(camel2under(columnName),list);
}
}
return qw.lambda();
}
public static <T> QueryWrapper<T> getQueryWrapper(T entity, Object query, boolean isSearchNull, String alias) {
QueryWrapper qw = new QueryWrapper();
qw.setEntityClass(entity.getClass());
Class queryClass = query.getClass();
List<Field> fieldList = new ArrayList<>();
while (null != queryClass){
fieldList.addAll(Arrays.asList(queryClass.getDeclaredFields()));
queryClass = queryClass.getSuperclass();
}
for(Field field:fieldList){
field.setAccessible(true);
QueryField queryField = field.getAnnotation(QueryField.class);
if(queryField==null) {
continue;
}
Object value;
try {
value = field.get(query);
} catch (Exception e) {
throw new ServiceException("获取属性性出错");
}
//处理为空状况
if(!isSearchNull && ObjectUtil.isEmpty(value)) {
continue;
}
List list = null;
if(value instanceof List){
list = (List)value;
if(list.size()==0) {
continue;
}
}
String condition = queryField.condition();
if(Func.isBlank(condition)) {
continue;
}
String fileName = Optional.ofNullable(alias).map(aliasStr -> aliasStr + ".").orElse("") + camel2under(field.getName());
if(SqlCondition.EQUAL.equals(condition)) {
qw.eq(fileName, value);
}else if(SqlCondition.LIKE.equals(condition)){
qw.like(fileName,value);
}else if(SqlCondition.LIKE_LEFT.equals(condition)){
qw.likeLeft(fileName,value);
}else if(SqlCondition.LIKE_RIGHT.equals(condition)){
qw.likeRight(fileName,value);
}else if(SqlCondition.NOT_IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询不包含条件时需要指定列名");
}
qw.notIn(fileName,list);
}else if(SqlCondition.IN.equals(condition)){
String columnName = queryField.columnName();
if(Func.isBlank(columnName)) {
throw new ServiceException("查询包含条件时需要指定列名");
}
qw.in(fileName,list);
}
}
return qw;
}
}

149
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/DateUtil.java

@ -0,0 +1,149 @@
package com.hnac.hzims.common.utils;
import com.hnac.hzims.common.constant.DateConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.util.Assert;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* @author hx
*/
public class DateUtil {
public static final String yyyy_MM_dd_HH_MM_SS= "yyyy-MM-dd HH:mm:ss";
public static final String yyyy_MM_dd= "yyyy-MM-dd";
public static final String yyyy_MM= "yyyy-MM";
public static final String yyyy= "yyyy";
public static final String YEAR = "year";
public static final String QUARTER = "quarter";
public static final String MONTH = "month";
public static final String WEEK = "week";
public static final String DAY = "day";
/***
* Date 转换为 LocalDateTime
* @param convertDate 需转换的时间
* @return
*/
public static LocalDateTime DateToLocalDateTime(Date convertDate){
if(ObjectUtil.isNotEmpty(convertDate)) {
return convertDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
return null;
}
public static String parseString(Date date, String pattern){
SimpleDateFormat sdf= new SimpleDateFormat(pattern);
return String.format(sdf.format(date), pattern);
}
public static Date parseDate(String date, String pattern) throws ParseException {
SimpleDateFormat sdf= new SimpleDateFormat(pattern);
return sdf.parse(date);
}
/**
* 判斷时间是否在某一天之内
* @param judgeTime
* @param samplingDate
* @return
*/
public static boolean judgeSameDay(LocalDateTime judgeTime, LocalDate samplingDate) {
//取样日期的第一秒
LocalDateTime minSamplingTime = LocalDateTime.of(samplingDate, LocalTime.MIN);
//取样日期的最后一秒
LocalDateTime maxSamplingTime = LocalDateTime.of(samplingDate, LocalTime.MAX);
return judgeTime.isAfter(minSamplingTime) && judgeTime.isBefore(maxSamplingTime);
}
/**
* Java 获取两个日期之间的所有日期
*
* @param startDate
* @param endDate
* @return
*/
public static List<LocalDate> getDatesBetween(LocalDate startDate, LocalDate endDate) {
long numOfDaysBetween = ChronoUnit.DAYS.between(startDate, endDate) + 1;
return IntStream.iterate(0, i -> i + 1).limit(numOfDaysBetween).mapToObj(i -> startDate.plusDays(i)).collect(Collectors.toList());
}
/**
* 获取年份第一天
* @param year
* @return
*/
public static LocalDate getFirstDayByYear(String year) {
return LocalDate.of(Integer.parseInt(year),1,1);
}
/**
* 获取年份最后一天
* @param year
* @return
*/
public static LocalDate getLastDayByYear(String year) {
LocalDate lastMonthFirstDay = LocalDate.of(Integer.parseInt(year),12,1);
return lastMonthFirstDay.with(TemporalAdjusters.lastDayOfYear());
}
/**
* 获取月份第一天
* @param yearAndMonth
* @return
*/
public static LocalDate getFirstDayByYearMonth(String yearAndMonth) {
YearMonth yearMonth = YearMonth.parse(yearAndMonth);
return LocalDate.of(yearMonth.getYear(),yearMonth.getMonth(),1);
}
/**
* 获取月份最后一天
* @param yearAndMonth
* @return
*/
public static LocalDate getLastDayByYearMonth(String yearAndMonth) {
return getFirstDayByYearMonth(yearAndMonth).with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 获取某时刻加上某时段后调的时间
* @param date 指定时刻
* @param duration 时间段
* @param timeUnit 时间单位
* @return
*/
public static LocalDateTime plus(LocalDateTime date, Integer duration, String timeUnit) {
DateConstant.UnitEnum enumByUnit = DateConstant.UnitEnum.getEnumByUnit(timeUnit);
Assert.isTrue(ObjectUtil.isNotEmpty(enumByUnit),() -> {
throw new ServiceException("DateUtil.plus内传入的时间单位参数在枚举类中未查询到,传入的参数为:" + timeUnit);
});
switch(enumByUnit) {
case YEAR:
return date.plusYears(duration);
case MONTH:
return date.plusMonths(duration);
case DAY:
return date.plusDays(duration);
case HOUR:
return date.plusHours(duration);
case MINUTER:
return date.plusMinutes(duration);
case SECOND:
return date.plusSeconds(duration);
default:
return null;
}
}
}

49
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/IPUtils.java

@ -0,0 +1,49 @@
package com.hnac.hzims.common.utils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import javax.servlet.http.HttpServletRequest;
/**
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/3/29 11:45
*/
public class IPUtils {
/**
* 获取客户端ip地址
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request) {
String sourceIp = null;
String ipAddresses = request.getHeader("x-forwarded-for");
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ipAddresses = request.getHeader("Proxy-Client-IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ipAddresses = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ipAddresses = request.getHeader("HTTP_CLIENT_IP");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ipAddresses = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {
ipAddresses = request.getRemoteAddr();
}
if (StringUtils.isEmpty(ipAddresses)) {
sourceIp = ipAddresses.split(",")[0];
}
return sourceIp;
}
}

80
hzims-biz-common/src/main/java/com/hnac/hzims/common/utils/TreeUtil.java

@ -0,0 +1,80 @@
package com.hnac.hzims.common.utils;
import com.hnac.hzims.common.pojo.Tree;
import lombok.Builder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 树结构数据工具类
*
* @author xiashandong
* @created 2020/9/11 10:49
**/
@Builder
public final class TreeUtil {
/**
* 获取某个节点ID以及节点下所有的子节点ID
*/
public <T extends Tree> List<Long> getChildIds(Long id, List<T> list) {
Map<Long, List<Tree>> all = list.stream().collect(Collectors.groupingBy(Tree::getParentId));
boolean flag = list.stream().filter(o -> o.getId().equals(id)).findFirst().isPresent();
if(!flag){
return null;
}
T node = list.stream().filter(o -> o.getId().equals(id)).findFirst().get();
List<Long> ids = new ArrayList<>();
this.putChildId(all, node, ids);
return ids;
}
/**
* 构建文件类型树结构数据
*/
public <T extends Tree> T buildTree(T root, List<T> list, String name) {
//判空
if (list == null || list.size() == 0) {
return root;
}
//分类
Map<Long, List<Tree>> all = list.stream().collect(Collectors.groupingBy(Tree::getParentId));
Map<Long, List<Tree>> display = list.stream().filter(o -> (name == null || name.trim().length() == 0) || o.getName().contains(name)).collect(Collectors.groupingBy(Tree::getId));
//生成树控件
for (Tree item : all.get(-1L)) {
Tree child = this.buildTree(item, all, display);
if (null != child) {
root.setChildren(null == root.getChildren() ? new ArrayList<>() : root.getChildren());
root.getChildren().add(child);
}
}
return root;
}
private void putChildId(Map<Long, List<Tree>> all, Tree node, List<Long> ids) {
ids.add(node.getId());
if (all.containsKey(node.getId())) {
all.get(node.getId()).forEach(child -> this.putChildId(all, child, ids));
}
}
private Tree buildTree(Tree node, Map<Long, List<Tree>> all, Map<Long, List<Tree>> display) {
if (all.containsKey(node.getId())) {
for (Tree item : all.get(node.getId())) {
Tree child = this.buildTree(item, all, display);
if (null != child) {
node.setChildren(null == node.getChildren() ? new ArrayList<>() : node.getChildren());
node.getChildren().add(child);
}
}
}
return display.containsKey(node.getId()) || (node.getChildren() != null && node.getChildren().size() > 0) ? node : null;
}
}

8
hzims-biz-common/src/main/resources/banner.txt

@ -0,0 +1,8 @@
${AnsiColor.BLUE} ______ _ _ ___ ___
${AnsiColor.BLUE} | ___ \| | | | \ \ / /
${AnsiColor.BLUE} | |_/ /| | __ _ __| | ___ \ V /
${AnsiColor.BLUE} | ___ \| | / _` | / _` | / _ \ > <
${AnsiColor.BLUE} | |_/ /| || (_| || (_| || __/ / . \
${AnsiColor.BLUE} \____/ |_| \__,_| \__,_| \___|/__/ \__\
${AnsiColor.BLUE}:: BladeX :: ${spring.application.name}:${AnsiColor.RED}${blade.env}${AnsiColor.BLUE} :: Running SpringBoot ${spring-boot.version} :: ${AnsiColor.BRIGHT_BLACK}

28
hzims-service-api/assets-api/pom.xml

@ -0,0 +1,28 @@
<?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">
<parent>
<artifactId>hzims-service-api</artifactId>
<groupId>com.hnac.hzims</groupId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>assets-api</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.hnac.hzims</groupId>
<artifactId>ticket-api</artifactId>
</dependency>
<!--<dependency>
<groupId>com.hnac.hzinfo.data</groupId>
<artifactId>hzinfo-data-api</artifactId>
</dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
</dependency>
</dependencies>
</project>

175
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/AssetsConstants.java

@ -0,0 +1,175 @@
package com.hnac.hzims;
import lombok.Getter;
public class AssetsConstants {
public final static String APP_NAME = "hzims-assets";
public enum TaskTypeEnum{
MANUAL("1","手动"),
AUTO("2","自动")
;
@Getter
private String type;
@Getter
private String describe;
TaskTypeEnum(String type, String describe) {
this.type = type;
this.describe = describe;
}
}
/**
* 周期类型
*/
public enum CycleTypeEnum {
/**
*
*/
S_CYCLE(0,"秒"),
/**
*
*/
M_CYCLE(1,"分"),
/**
*
*/
H_CYCLE(2,"时"),
/**
*
*/
DAY_CYCLE(3,"天"),
/**
*
*/
WEEK_CYCLE(4,"周"),
/**
*
*/
MONTH_CYCLE(5,"月"),
/**
*
*/
YEAR_CYCLE(6,"年");
@Getter
private int type;
@Getter
private String name;
private CycleTypeEnum(int type,String name){
this.type = type;
this.name = name;
}
}
/**
* 取数规则
*/
public enum AccessRulesEnum {
/**
* 最早值
*/
EARLY_CYCLE(0,"最早值"),
/**
* 最大值
*/
MAX_CYCLE(1,"最大值"),
/**
* 最小值
*/
MIN_CYCLE(2,"最小值"),
/**
* 平均值
*/
AVG_CYCLE(3,"平均值"),
/**
* 和值
*/
SUM_CYCLE(4,"和值"),
/**
* 差值
*/
DIFF_CYCLE(5,"差值"),
/**
* 最后值
*/
FINAL_CYCLE(6,"最后值");
@Getter
private int type;
@Getter
private String name;
private AccessRulesEnum(int type,String name){
this.type = type;
this.name = name;
}
}
/**
* 装机容量
*/
public enum MainEnum {
/**
* 装机容量
*/
INSTALLED_CAPACITY("installedCapacity","装机容量");
@Getter
private String val;
@Getter
private String name;
private MainEnum(String val,String name){
this.val = val;
this.name = name;
}
}
/**
* 运行状态
*/
public enum RunStatus {
run("1","运行中"),
spare("2","热备用"),
access("0","检修"),
;
@Getter
private String status;
@Getter
private String des;
private RunStatus(String status, String des) {
this.status = status;
this.des = des;
}
}
/**
* 装机容量
*/
public enum SignageEnum {
/**
* 发电标识
*/
GENERATION_CAPACITY_SIGNAGE("generation_capacity","发电标识"),
/**
* 有功功率标识
*/
POWER_SIGNAGE_SIGNAGE("active_power","有功功率标识"),
/**
* 合位继电器
*/
JOINT_RELAY_SIGNAGE_SIGNAGE("joint_relay","合位继电器");
@Getter
private String val;
@Getter
private String name;
private SignageEnum(String val,String name){
this.val = val;
this.name = name;
}
}
}

38
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/chche/AssetsNumCache.java

@ -0,0 +1,38 @@
package com.hnac.hzims.spare.chche;
import com.hnac.hzims.spare.constants.AssetsConstant;
import org.springblade.core.cache.utils.CacheUtil;
import java.time.LocalDate;
/**
* @Author: wk
* @Date 2020/8/18
* @Version 1.0
*/
public class AssetsNumCache {
private static final String ASSETS_NUM = "ticket:day";
//序列号位数
private static final Integer SERIAL_NUM = 3;
public static String getCodeNum(){
Integer num = (Integer) CacheUtil.get(AssetsConstant.TICKET_DAY_NUM, ASSETS_NUM, LocalDate.now());
if(num == null || num == 0){
num = 1;
CacheUtil.put(AssetsConstant.TICKET_DAY_NUM, ASSETS_NUM,LocalDate.now(), num);
}
return getCodeNum(num);
}
public static String getCodeNum(int num){
String code = String.valueOf(num);
if(code.length() < SERIAL_NUM){
for (int i = code.length(); i < SERIAL_NUM; i++){
code = "0".concat(code);
}
}
CacheUtil.put(AssetsConstant.TICKET_DAY_NUM, ASSETS_NUM,LocalDate.now(), num + 1);
return code;
}
}

43
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/constants/AssetsConstant.java

@ -0,0 +1,43 @@
package com.hnac.hzims.spare.constants;
import java.math.BigDecimal;
/**
* @Author: wk
* @Date 2020/8/6
* @Version 1.0
*/
public interface AssetsConstant {
/**
* 工单记录生成使用系统名称
*/
final String TICKET_SYSTEM_USE_NAME = "系统";
/**
* 工单记录生成使用系统名称
*/
final BigDecimal TICKET_INITIAL_COEFFICIENT = new BigDecimal("1.0");
/**
* 常量1
*/
final String TICKET_ONE = "1";
/**
* 常量2
*/
final String TICKET_ZRE = "0";
/**
* 常量4
*/
final String TICKET_FOR = "4";
/**
* 常量
*/
final String YES = "YES";
/**
* 工单数量缓存
*/
final String TICKET_DAY_NUM = "hzims:assets";
}

10
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/constants/ScheduledConstant.java

@ -0,0 +1,10 @@
package com.hnac.hzims.spare.constants;
/**
* 定时任务处理常量
*/
public interface ScheduledConstant {
//首页分类
String PUSH_HSTOCK_ALERT_MESSAGE_HANDLE = "pushStockAlertMessagehHandle";
}

58
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpAllocationEntity.java

@ -0,0 +1,58 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.List;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_allocation")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpAllocation对象", description = "")
public class SpAllocationEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 入库仓库
*/
@ApiModelProperty(value = "入库仓库")
private Long inWarehouseId;
/**
* 出库仓库
*/
@ApiModelProperty(value = "出库仓库")
private Long outWarehouseId;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
*备品备件列表
*/
@ApiModelProperty(value = "备品备件列表")
private transient List<SpRecordEntity> basicList;
}

56
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpReceiveEntity.java

@ -0,0 +1,56 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.List;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_receive")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpReceive对象", description = "")
public class SpReceiveEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 关联工单
*/
@ApiModelProperty(value = "关联工单")
private String ticketCode;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long storageRoom;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
*备品备件列表
*/
@ApiModelProperty(value = "备品备件列表")
private transient List<SpRecordEntity> basicList;
}

59
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpReceivesEntity.java

@ -0,0 +1,59 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import org.springblade.core.mp.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
import java.time.LocalDateTime;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_receives")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpReceives对象", description = "")
public class SpReceivesEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 工单ID
*/
@ApiModelProperty(value = "工单ID")
private String ticketCode;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long storageRoom;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 工具领用单ID
*/
@ApiModelProperty(value = "工具领用单ID")
private Long veceiveId;
}

55
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpRecordEntity.java

@ -0,0 +1,55 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
@Data
@TableName("wt_sp_record")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpRecord对象", description = "")
public class SpRecordEntity extends TenantEntity {
/**
* 业务表ID
*/
@ApiModelProperty(value = "业务表ID")
private Long businessId;
/**
* 备品备件ID
*/
@ApiModelProperty(value = "备品备件ID")
private Long spBasicId;
/**
* 数量
*/
@ApiModelProperty(value = "数量")
private Integer amount;
/**
* 数量
*/
@ApiModelProperty(value = "价格")
private BigDecimal price;
/**
* 仓库ID
*/
@ApiModelProperty(value = "仓库ID")
private Long warehouseId;
/**
* 类型
*/
@ApiModelProperty(value = "类型")
private Integer type;
/**
*备品备件列表
*/
@ApiModelProperty(value = "领用人")
private transient Long handler;
}

67
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpRevertEntity.java

@ -0,0 +1,67 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import org.springblade.core.mp.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import java.time.LocalDateTime;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_revert")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpRevert对象", description = "")
public class SpRevertEntity extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long storageRoom;
/**
* 数量
*/
@ApiModelProperty(value = "数量")
private Integer amount;
/**
* 对应备件ID
*/
@ApiModelProperty(value = "对应备件ID")
private Long spBasicId;
/**
* 备品备件名称
*/
@ApiModelProperty(value = "备品备件名称")
private String name;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 当前处理人
*/
@ApiModelProperty(value = "当前处理人")
private Long currentOperator;
}

29
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTemporaryStockDetailEntity.java

@ -0,0 +1,29 @@
package com.hnac.hzims.spare.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class SpTemporaryStockDetailEntity implements Serializable {
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "类型")
private String type;
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "数量")
private Integer amount;
@ApiModelProperty(value = "关联单号")
private String code;
@ApiModelProperty(value = "时间")
private String createDate;
}

70
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTemporaryStockEntity.java

@ -0,0 +1,70 @@
package com.hnac.hzims.spare.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 临时库存台账
*/
@Data
public class SpTemporaryStockEntity implements Serializable {
@ApiModelProperty("id")
private Long id;
@ApiModelProperty(value = "类型ID")
private Long managementId;
@ApiModelProperty(value = "类型名称")
private String SparePartsName;
/**
* 名称
*/
@ApiModelProperty(value = "名称")
private String name;
/**
* 编码
*/
@ApiModelProperty(value = "编码")
private String code;
/**
* 规格
*/
@ApiModelProperty(value = "规格")
private String specifications;
/**
* 单位
*/
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "库存数量")
private Integer quantity;
@ApiModelProperty(value = "出库数量")
private Integer DeliveryQuantity;
@ApiModelProperty(value = "归还数量")
private Integer returnedQuantity;
@ApiModelProperty(value = "消耗数量")
private Integer consumedQuantity;
@ApiModelProperty(value = "临时库存数量")
private Integer stockQuantity;
@ApiModelProperty("所在水厂ID")
private Long waterPlantId;
@ApiModelProperty(value = "水厂名")
private String waterPlantName;
@ApiModelProperty("仓库ID")
private Long warehouseId;
@ApiModelProperty("仓库名称")
private String warehouseName;
}

40
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpTicketRelationEntity.java

@ -0,0 +1,40 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
@Data
@TableName("wt_sp_ticket_relation")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpTicketRelation对象", description = "")
public class SpTicketRelationEntity extends TenantEntity {
/**
* 出库单ID
*/
@ApiModelProperty(value = "出库单ID")
private Long orderId;
/**
* 备件ID
*/
@ApiModelProperty(value = "备件ID")
private Long spBasicId;
/**
* 工单号
*/
@ApiModelProperty(value = "工单号")
private String ticket;
/**
* 数量
*/
@ApiModelProperty(value = "数量")
private Integer amount;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
}

63
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpWarehouseInEntity.java

@ -0,0 +1,63 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.List;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_warehouse_in")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpWarehouseIn对象", description = "SpWarehouseIn对象")
public class SpWarehouseInEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 入库类型
*/
@ApiModelProperty(value = "入库类型")
private Long type;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long storageRoom;
/**
* 当前处理人
*/
@ApiModelProperty(value = "当前处理人")
private Long currentOperator;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
*备品备件列表
*/
@ApiModelProperty(value = "备品备件列表")
private transient List<SpRecordEntity> basicList;
}

63
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/SpWarehouseOutEntity.java

@ -0,0 +1,63 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.List;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("wt_sp_warehouse_out")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "SpWarehouseOut对象", description = "")
public class SpWarehouseOutEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 单据号
*/
@ApiModelProperty(value = "单据号")
private String code;
/**
* 工作流实例ID
*/
@ApiModelProperty(value = "工作流实例ID")
private String rpocInsId;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long storageRoom;
/**
* 仓库库房
*/
@ApiModelProperty(value = "仓库库房")
private Long handler;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 出库类型
*/
@ApiModelProperty(value = "出库类型")
private Long type;
/**
*备品备件列表
*/
@ApiModelProperty(value = "备品备件列表")
private transient List<SpRecordEntity> basicList;
}

111
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpBasicEntity.java

@ -0,0 +1,111 @@
package com.hnac.hzims.spare.entity;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_BASIC")
@EqualsAndHashCode(callSuper = true)
@ExcelIgnoreUnannotated
@ApiModel(value = "WtSpBasic对象", description = "")
public class WtSpBasicEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 对应分类编号
*/
@ApiModelProperty(value = "对应分类ID")
private Long managementId;
/**
* 名称
*/
@ExcelProperty(value = "物品名称(必填)",index = 1 )
@ApiModelProperty(value = "名称")
private String name;
/**
* 编码
*/
@ExcelProperty(value = "物品编码(必填)",index = 0 )
@ApiModelProperty(value = "编码")
private String code;
/**
* 规格
*/
@ExcelProperty(value = "规格型号",index = 2 )
@ApiModelProperty(value = "规格")
private String specifications;
/**
* 品牌
*/
@ExcelProperty(value = "物品品牌(必填)",index = 3 )
@ApiModelProperty(value = "品牌")
private String brand;
/**
* 单位
*/
@ExcelProperty(value = "物品单位(必填)",index = 5 )
@ApiModelProperty(value = "单位")
private String unit;
/**
* 单价
*/
@ExcelProperty(value = "单价(元)(必填)",index = 10)
@ApiModelProperty(value = "单价")
@JsonSerialize(nullsUsing = NullSerializer.class)
private BigDecimal price;
@ExcelProperty(value = "重量(kg)",index = 6 )
@ApiModelProperty(value = "重量")
@JsonSerialize(nullsUsing = NullSerializer.class)
private BigDecimal weight;
@ExcelProperty(value = "库存上限(必填)",index = 7 )
@ApiModelProperty(value = "库存上限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer upperLimit;
@ExcelProperty(value = "库存下限(必填)",index = 8 )
@ApiModelProperty(value = "库存下限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer lowerLimit;
@ExcelProperty(value = "是否回收废品(必填)",index = 9 )
@ApiModelProperty(value = "是否回收废品")
private String isWaste;
/**
* 主要参数
*/
@ExcelProperty(value = "物品类别(必填)",index = 4 )
@ApiModelProperty(value = "主要参数")
private String parameter;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 序列号
*/
@ApiModelProperty(value = "序列号")
private Long codeNumber;
private transient String nameQuery;
}

64
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpManagementEntity.java

@ -0,0 +1,64 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_MANAGEMENT")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpManagement对象", description = "")
public class WtSpManagementEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 分类名称
*/
@ApiModelProperty(value = "分类名称")
private String name;
/**
* 所属父级
*/
@ApiModelProperty(value = "所属父级")
private Long parentId;
/**
* 祖级机构主键
*/
@ApiModelProperty(value = "祖级机构主键")
private String ancestors;
/**
* 节点等级
*/
@ApiModelProperty(value = "节点等级")
private Integer grade;
/**
* 分类编码
*/
@ApiModelProperty(value = "分类编码")
private String code;
/**
* 备品备件1工具2
*/
@ApiModelProperty(value = "备品备件:1,工具:2")
private String type;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
/**
* 序列号
*/
@ApiModelProperty(value = "序列号")
private Long codeNumber;
}

35
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpManagementeExcelEntity.java

@ -0,0 +1,35 @@
package com.hnac.hzims.spare.entity;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class WtSpManagementeExcelEntity {
@ColumnWidth(25)
@ExcelProperty("一级分类名称")
private String oneName;
@ExcelProperty("一级分类代码")
private String oneCode;
@ColumnWidth(25)
@ExcelProperty("一级分类供应商类别")
private String firstRemarks;
@ColumnWidth(25)
@ExcelProperty("二级分类名称")
private String twoName;
@ColumnWidth(25)
@ExcelProperty("二级分类代码")
private String twoCode;
@ColumnWidth(25)
@ExcelProperty("二级分类供应商类别")
private String secondRemarks;
}

101
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpProviderEntity.java

@ -0,0 +1,101 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_PROVIDER")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpProvider对象", description = "")
public class WtSpProviderEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 机构ID
*/
@ApiModelProperty(value = "机构ID")
private String organizationId;
/**
* 供应商编码
*/
@ApiModelProperty(value = "供应商编码")
private String organizationCode;
/**
* 供应商名称
*/
@ApiModelProperty(value = "供应商名称")
private String name;
/**
* 供货范围
*/
@ApiModelProperty(value = "供货范围")
private String scopeOfSupply;
/**
* 供货周期
*/
@ApiModelProperty(value = "供货周期")
private String supplyCycle;
/**
* 名称缩写
*/
@ApiModelProperty(value = "名称缩写")
private String logogram;
/**
* 业务联系人
*/
@ApiModelProperty(value = "业务联系人")
private String salesman;
/**
* 法人代表
*/
@ApiModelProperty(value = "法人代表")
private String legalPerson;
/**
* 电话
*/
@ApiModelProperty(value = "电话")
private String phone;
/**
* 手机
*/
@ApiModelProperty(value = "手机")
private String mobilePhone;
/**
* 网址
*/
@ApiModelProperty(value = "网址")
private String website;
/**
* 地址
*/
@ApiModelProperty(value = "地址")
private String address;
/**
* 是否合格01
*/
@ApiModelProperty(value = "是否合格(0:否,1:是)")
private Integer qualifiedFlag;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 供应商名称
*/
@ApiModelProperty(value = "供应商名称")
private transient String providerName;
}

55
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpToolBasicEntity.java

@ -0,0 +1,55 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.util.Date;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_TOOL_BASIC")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpToolBasic对象", description = "")
public class WtSpToolBasicEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 工具分类
*/
@ApiModelProperty(value = "工具分类")
private Long spBasicId;
/**
* 保质期
*/
@ApiModelProperty(value = "保质期")
private String qualityGuaranteePeriod;
/**
* 生产日期
*/
@ApiModelProperty(value = "生产日期")
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
private Date productionPeriod;
/**
* 领用数量
*/
@ApiModelProperty(value = "领用数量")
private Long quantityReceived;
/**
* 所属仓库
*/
@ApiModelProperty(value = "所属仓库")
private Long warehouseId;
private transient String nameQuery;
}

96
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpTotalEntity.java

@ -0,0 +1,96 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
import java.math.BigDecimal;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_TOTAL")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpTotal对象", description = "")
public class WtSpTotalEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 对应备件ID
*/
@ApiModelProperty(value = "对应备件ID")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long spBasicId;
/**
* 最低储备量
*/
@ApiModelProperty(value = "最低储备量")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long minStock;
/**
* 最高储备量
*/
@ApiModelProperty(value = "最高储备量")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long maxStock;
/**
* 库存
*/
@ApiModelProperty(value = "库存")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long stock;
/**
* 最新入库单价
*/
@ApiModelProperty(value = "最新入库单价")
@JsonSerialize(nullsUsing = NullSerializer.class)
private BigDecimal inPrice;
/**
* 最新出库单价
*/
@ApiModelProperty(value = "最新出库单价")
@JsonSerialize(nullsUsing = NullSerializer.class)
private BigDecimal outPrice;
/**
* 出库暂存
*/
@ApiModelProperty(value = "出库暂存")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long outStock;
/**
* 警戒百分
*/
@ApiModelProperty(value = "警戒百分")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long warningStock;
/**
* 所属仓库
*/
@ApiModelProperty(value = "所属仓库")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Long warehouseId;
/**
* 备件名称
*/
@ApiModelProperty(value = "备件名称")
private transient String name;
/**
* 编码
*/
@ApiModelProperty(value = "备件编码")
private transient String code;
}

87
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/entity/WtSpWarehouseEntity.java

@ -0,0 +1,87 @@
package com.hnac.hzims.spare.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
/**
* 实体类
*
* @author Chill
*/
@Data
@TableName("WT_SP_WAREHOUSE")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpWarehouse对象", description = "")
public class WtSpWarehouseEntity extends TenantEntity {
private static final long serialVersionUID = 1L;
/**
* 地址
*/
@ApiModelProperty(value = "地址")
private String address;
/**
* 编码
*/
@ApiModelProperty(value = "编码")
private String code;
/**
* 名称
*/
@ApiModelProperty(value = "名称")
private String name;
/**
* 负责人
*/
@ApiModelProperty(value = "负责人")
private Long manager;
/**
* 当前存量
*/
@ApiModelProperty(value = "当前存量")
private Long stock;
/**
* 库存上限
*/
@ApiModelProperty(value = "库存上限")
private Long maxStock;
/**
* 库存下限
*/
@ApiModelProperty(value = "库存下限")
private Long minStock;
/**
* 警戒百分比
*/
@ApiModelProperty(value = "警戒百分比")
private Long warningStock;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remark;
/**
* 所属单位
*/
@ApiModelProperty(value = "所属单位")
private Long affiliatedUnit;
/**
* 所属单位名称
*/
@ApiModelProperty(value = "所属单位名称")
private String affiliatedName;
/**
* 机构ID
*/
@ApiModelProperty(value = "机构ID")
private transient Long deptId;
}

32
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/BusinessType.java

@ -0,0 +1,32 @@
package com.hnac.hzims.spare.enume;
/**
* 单据类型
*/
public enum BusinessType {
IN(1, "入库"), OUT(2, "出库"), ALLOT(3, "调拨"), RECEIVE(4, "领用"), RETURNED(5, "归还"),RETURN(6,"退回");
private int type;
private String name;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
BusinessType(int type, String name) {
this.type = type;
this.name = name;
}
}

46
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/WarehouseInType.java

@ -0,0 +1,46 @@
package com.hnac.hzims.spare.enume;
/**
* 入库类型
*/
public enum WarehouseInType {
BUY(1,"购买入库"),BACK(2,"退回入库"),ALLOT(3,"调拨入库"),OLD(4,"旧品入库");
private int type;
private String name;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
WarehouseInType(int type, String name) {
this.type = type;
this.name = name;
}
/**
* 根据值获取枚举
* @param value
* @return
*/
public static WarehouseInType getTypeName(Integer value){
for (WarehouseInType type:WarehouseInType.values()) {
if(type.getType() == value){
return type;
}
}
return BUY;
}
}

46
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/enume/WarehouseOutType.java

@ -0,0 +1,46 @@
package com.hnac.hzims.spare.enume;
/**
* 出库类型
*/
public enum WarehouseOutType {
MAINTENANCE(1,"维保出库"),REPAIR(2,"维修出库"),ALLOT(3,"调拨出库"),OTHER(4,"其他");
private int type;
private String name;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
WarehouseOutType(int type, String name) {
this.type = type;
this.name = name;
}
/**
* 根据值获取枚举
* @param value
* @return
*/
public static WarehouseOutType getTypeName(Integer value){
for (WarehouseOutType type:WarehouseOutType.values()) {
if(type.getType() == value){
return type;
}
}
return MAINTENANCE;
}
}

38
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareClient.java

@ -0,0 +1,38 @@
package com.hnac.hzims.spare.feign;
import com.hnac.hzims.operational.huosan.vo.AreaTimelyVo;
import com.hnac.hzims.spare.entity.*;
import com.hnac.hzims.spare.vo.AssetTypeVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(
value = "hzims-assets",fallback = ISpareClientFallback.class
)
public interface ISpareClient {
String API_PREFIX = "/client";
String WAREHOUSEOUT = API_PREFIX+"/warehouseOut";
String EXCEED_LIMIT = API_PREFIX + "/exceedLimit" ;
String ASSET_DEVICE_TREND = API_PREFIX + "/assetDeviceTrend" ;
/**
* 保存工单与出库单关联信息
* @param recordEntity
* @return
*/
@PostMapping(WAREHOUSEOUT)
Boolean warehouseOut(@RequestBody SpRecordEntity recordEntity);
@PostMapping(EXCEED_LIMIT)
List<AreaTimelyVo> exceedLimit(@RequestParam("deptId") Long deptId);
@PostMapping(ASSET_DEVICE_TREND)
List<AssetTypeVo> assetDeviceTrend(@RequestParam("deptId") Long deptId);
}

28
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareClientFallback.java

@ -0,0 +1,28 @@
package com.hnac.hzims.spare.feign;
import com.hnac.hzims.operational.huosan.vo.AreaTimelyVo;
import com.hnac.hzims.spare.entity.*;
import com.hnac.hzims.spare.vo.AssetTypeVo;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class ISpareClientFallback implements ISpareClient {
@Override
public Boolean warehouseOut(SpRecordEntity recordEntity) {
return false;
}
@Override
public List<AreaTimelyVo> exceedLimit(Long deptId) {
return new ArrayList<>();
}
@Override
public List<AssetTypeVo> assetDeviceTrend(Long deptId) {
return new ArrayList<>();
}
}

35
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareOutServiceClient.java

@ -0,0 +1,35 @@
package com.hnac.hzims.spare.feign;
import com.hnac.hzims.spare.vo.WtSpToolVO;
import org.springblade.core.mp.support.BladePage;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(
value = "hzims-assets",fallback = ISpareOutServiceFallback.class
)
public interface ISpareOutServiceClient {
String API_PREFIX = "/spare";
String SPTOOLLIST = API_PREFIX +"/spTooLList";
@GetMapping(SPTOOLLIST)
BladePage<WtSpToolVO> spTooLList(@RequestParam("waterPlanId") Long waterPlanId,
@RequestParam("tenantId") Long tenantId,
@RequestParam("current") Integer current,
@RequestParam("size") Integer size);
// @GetMapping(SPTOOLLIST)
// BladePage<WtSpToolVO> spTooLList(@RequestParam Long waterPlanId,
// @RequestParam Long tenantId,
// @RequestParam Integer current,
// @RequestParam Integer size,
// @RequestParam String code,
// @RequestParam Long deptId,
// @RequestParam Long warehouseId,
// @RequestParam Long typeId,
// @RequestParam String nameQuery);
}

33
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/feign/ISpareOutServiceFallback.java

@ -0,0 +1,33 @@
package com.hnac.hzims.spare.feign;
import com.hnac.hzims.spare.vo.WtSpToolVO;
import org.springblade.core.mp.support.BladePage;
import org.springframework.stereotype.Component;
@Component
public class ISpareOutServiceFallback implements ISpareOutServiceClient {
@Override
public BladePage<WtSpToolVO> spTooLList(Long waterPlanId,
Long tenantId,
Integer current,
Integer size){
System.out.println("熔断了");
return null;
}
// @Override
// public BladePage<WtSpToolVO> spTooLList(Long waterPlanId,
// Long tenantId,
// Integer current,
// Integer size,
// String code,
// Long deptId,
// Long warehouseId,
// Long typeId,
// String nameQuery){
// System.out.println("熔断了");
// return null;
// }
}

0
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/h.java

17
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/AssetTypeVo.java

@ -0,0 +1,17 @@
package com.hnac.hzims.spare.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author ysj
*/
@Data
public class AssetTypeVo {
@ApiModelProperty(value = "资产类型编码")
private String code;
@ApiModelProperty(value = "资产类型名称")
private String name;
}

26
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/ExceedVo.java

@ -0,0 +1,26 @@
package com.hnac.hzims.spare.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author ysj
*/
@Data
public class ExceedVo {
@ApiModelProperty(value = "机构名称")
private String deptName;
@ApiModelProperty(value = "事件Id")
private String eventId;
@ApiModelProperty(value = "事件内容")
private String content;
@ApiModelProperty(value = "事件time")
private String time;
@ApiModelProperty(value = "提醒数量")
private Integer sum;
}

54
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpAllocationVO.java

@ -0,0 +1,54 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpAllocationEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpAllocationVO extends SpAllocationEntity {
private static final long serialVersionUID = 1L;
/**
* 拨入库房
*/
@ApiModelProperty(value = "拨入库房")
private String inWarehouseName;
/**
* 拨出库房
*/
@ApiModelProperty(value = "拨出库房")
private String outWarehouseName;
/**
* 用户名称
*/
@ApiModelProperty(value = "用户名称")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

50
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpReceiveVO.java

@ -0,0 +1,50 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpReceiveEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpReceiveVO extends SpReceiveEntity {
private static final long serialVersionUID = 1L;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 用户名称
*/
@ApiModelProperty(value = "用户名称")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
private Long sign;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

50
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpReceivesVO.java

@ -0,0 +1,50 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpReceivesEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpReceivesVO extends SpReceivesEntity {
private static final long serialVersionUID = 1L;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 用户名称
*/
@ApiModelProperty(value = "用户名称")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

18
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpRevertVO.java

@ -0,0 +1,18 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpRevertEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpRevertVO extends SpRevertEntity {
private static final long serialVersionUID = 1L;
}

53
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpWarehouseInVO.java

@ -0,0 +1,53 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpWarehouseInEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpWarehouseInVO extends SpWarehouseInEntity {
private static final long serialVersionUID = 1L;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 入库类型名称
*/
@ApiModelProperty(value = "入库类型名称")
private String typeName;
/**
* 入库人
*/
@ApiModelProperty(value = "入库人")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

57
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/SpWarehouseOutVO.java

@ -0,0 +1,57 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.SpWarehouseOutEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SpWarehouseOutVO extends SpWarehouseOutEntity {
private static final long serialVersionUID = 1L;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 出库类型名称
*/
@ApiModelProperty(value = "出库类型名称")
private String typeName;
/**
* 用户名称
*/
@ApiModelProperty(value = "用户名称")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
@ApiModelProperty(value = "关联工单")
private String ticket;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

34
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/StockVo.java

@ -0,0 +1,34 @@
package com.hnac.hzims.spare.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StockVo{
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "品牌")
private String brand;
@ApiModelProperty(value = "库存数量")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer stock;
@ApiModelProperty(value = "库存上限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer upperLimit;
@ApiModelProperty(value = "库存下限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer lowerLimit;
@ApiModelProperty(value = "仓库Id")
private Long warehouseId;
}

60
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpBasicVO.java

@ -0,0 +1,60 @@
package com.hnac.hzims.spare.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.hnac.hzims.spare.entity.WtSpBasicEntity;
import com.hnac.hzims.ticket.allTicket.vo.TicketInfoStatisticVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WtSpBasicVO extends WtSpBasicEntity {
private static final long serialVersionUID = 1L;
/**
* 分类名称
*/
@ApiModelProperty(value = "分类名称")
private String sparePartsName;
/**
* 仓库名称
*/
@ApiModelProperty(value = "仓库名称")
private String warehouseName;
/**
* 库存
*/
@ApiModelProperty(value = "库存")
@JsonSerialize(using = ToStringSerializer.class)
private Long stock;
/**
* 库存下限
*/
@ApiModelProperty(value = "库存下限")
@JsonSerialize(using = ToStringSerializer.class)
private Long minStock;
/**
* 库存上限
*/
@ApiModelProperty(value = "库存上限")
@JsonSerialize(using = ToStringSerializer.class)
private Long maxStock;
/**
* 警戒百分
*/
@ApiModelProperty(value = "警戒百分")
private Long warningStock;
@ApiModelProperty("缺陷")
private List<TicketInfoStatisticVO> ticketInfoStatisticVOList;
}

58
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpManagementVO.java

@ -0,0 +1,58 @@
package com.hnac.hzims.spare.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.hnac.hzims.spare.entity.WtSpManagementEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.tool.node.INode;
import java.util.ArrayList;
import java.util.List;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "WtSpManagementVO对象", description = "WtSpManagementVO对象")
public class WtSpManagementVO extends WtSpManagementEntity implements INode<WtSpManagementVO> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 父节点ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long parentId;
/**
* 子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<WtSpManagementVO> children = new ArrayList<>();
/**
* 是否有子孙节点
*/
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Boolean hasChildren;
@Override
public List<WtSpManagementVO> getChildren() {
if (this.children == null) {
this.children = new ArrayList<>();
}
return this.children;
}
}

82
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpToolBasicVO.java

@ -0,0 +1,82 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.WtSpToolBasicEntity;
import com.hnac.hzims.spare.vo.WtSpBasicVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
public class WtSpToolBasicVO extends WtSpToolBasicEntity {
private static final long serialVersionUID = 1L;
/**
* 名称
*/
@ApiModelProperty(value = "名称")
private String name;
/**
* 编码
*/
@ApiModelProperty(value = "编码")
private String code;
/**
* 规格
*/
@ApiModelProperty(value = "规格")
private String specifications;
/**
* 单位
*/
@ApiModelProperty(value = "单位")
private String unit;
/**
* 总数量
*/
@ApiModelProperty(value = "总数量")
private Long totalAmount;
/**
* 在库数量
*/
@ApiModelProperty(value = "在库数量")
private Integer notUseAmount;
/**
* 已领数量
*/
@ApiModelProperty(value = "已领数量")
private Integer useAmount;
/**
* 所属仓库
*/
@ApiModelProperty(value = "所属仓库")
private String warehouseName;
/**
* 入库人
*/
@ApiModelProperty(value = "入库人")
private String userName;
/**
* 单位名称
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
@ApiModelProperty(value = "机构ID")
private Long deptId;
@ApiModelProperty(value = "开始时间")
private String startDate;
@ApiModelProperty(value = "结束时间")
private String endDate;
/**
* 备品备件列表
*/
private List<WtSpBasicVO> basicVOList;
}

72
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpToolVO.java

@ -0,0 +1,72 @@
package com.hnac.hzims.spare.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import com.hnac.hzims.spare.entity.WtSpTotalEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
public class WtSpToolVO extends WtSpTotalEntity {
/**
* 规格
*/
@ApiModelProperty(value = "规格")
private String specifications;
/**
* 单位
*/
@ApiModelProperty(value = "单位")
private String unit;
/**
* 单位
*/
@ApiModelProperty(value = "品牌")
private String brand;
/**
* 单价
*/
@ApiModelProperty(value = "单价")
private BigDecimal price;
/**
* 所属仓库
*/
@ApiModelProperty(value = "所属仓库")
private String warehouseName;
/**
* 机构
*/
@ApiModelProperty(value = "单位名称")
private String affiliatedName;
/**
* 机构ID
*/
@ApiModelProperty(value = "机构ID")
private Long deptId;
/**
* 分类ID
*/
@ApiModelProperty(value = "分类ID")
private Long typeId;
/**
* 分类ID
*/
@ApiModelProperty(value = "备品类型")
private String typeName;
@ApiModelProperty(value = "库存上限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer upperLimit;
@ApiModelProperty(value = "库存下限")
@JsonSerialize(nullsUsing = NullSerializer.class)
private Integer lowerLimit;
private String nameQuery;
}

25
hzims-service-api/assets-api/src/main/java/com/hnac/hzims/spare/vo/WtSpWarehouseVO.java

@ -0,0 +1,25 @@
package com.hnac.hzims.spare.vo;
import com.hnac.hzims.spare.entity.WtSpWarehouseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 模型VO
*
* @author Chill
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WtSpWarehouseVO extends WtSpWarehouseEntity {
private static final long serialVersionUID = 1L;
/**
* 负责人
*/
@ApiModelProperty(value = "负责人")
private String managerName;
}

23
hzims-service-api/base-info-api/pom.xml

@ -0,0 +1,23 @@
<?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>
<parent>
<groupId>com.hnac.hzims</groupId>
<artifactId>hzims-service-api</artifactId>
<version>4.0.0-SNAPSHOT</version>
</parent>
<artifactId>base-info-api</artifactId>
<version>${hzims.project.version}</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

9
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/constants/BaseInfoConstant.java

@ -0,0 +1,9 @@
package com.hnac.hzims.baseinfo.constants;
/**
* @author YSJ
*/
public interface BaseInfoConstant {
String APP_NAME = "base-info";
}

21
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/dto/OverLimitLevelDTO.java

@ -0,0 +1,21 @@
package com.hnac.hzims.baseinfo.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class OverLimitLevelDTO implements Serializable {
//测量站点编号
private String code;
//站点名称
private String name;
//站点汛限水位
private Float mjflsscnwl;
//超过时长
private Integer time;
}

39
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/dto/PreviewSchemeContentDTO.java

@ -0,0 +1,39 @@
package com.hnac.hzims.baseinfo.dto;
import com.hnac.hzims.baseinfo.entity.PreviewSchemeContent;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 预演方案内容
* </p>
*
* @author zhaiqm
* @since 2023-09-01
*/
@Data
public class PreviewSchemeContentDTO extends PreviewSchemeContent implements Serializable {
private static final long serialVersionUID=1L;
private Float mjflsscnwl; //主汛期限制水位
private Float designedfloodlevel; // 设计洪水位 m
private Float checkedfloodlevel;// 校核洪水位
private Float designedmaxflow;// 设计最大泄量 m³/s
private Float checkedmaxflow;// 校核最大泄量m³/s
private BigDecimal damHeight;//坝高
private BigDecimal damTopElev;//坝顶高程
private BigDecimal maxLoad; //机组最大负荷
}

69
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/AnnounceInfo.java

@ -0,0 +1,69 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("announce_info")
public class AnnounceInfo implements Serializable {
private static final long serialVersionUID=1L;
@JsonSerialize(
using = ToStringSerializer.class
)
@ApiModelProperty("主键id")
@TableId(
value = "id",
type = IdType.ASSIGN_ID
)
private Long id;
/**
* 标题
*/
@TableField("title")
private String title;
/**
* 内容
*/
@TableField("content")
private String content;
/**
* 文件地址
*/
@TableField("file_path")
private String filePath;
/**
* 文件类型
*/
@TableField("file_type")
private String fileType;
/**
* 文件名称
*/
@TableField("file_name")
private String fileName;
/**
* 时间
*/
@TableField("time")
private LocalDateTime time;
}

62
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/BasinInfo.java

@ -0,0 +1,62 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* 河流信息表
* </p>
*
* @author zhaiqm
* @since 2023-09-01
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("basin_info")
public class BasinInfo implements Serializable {
private static final long serialVersionUID=1L;
@JsonSerialize(
using = ToStringSerializer.class
)
@ApiModelProperty("主键id")
@TableId(
value = "id",
type = IdType.ASSIGN_ID
)
private Long id;
/**
* 河流名称
*/
@TableField("basin_name")
private String basinName;
/**
* GIS范围
*/
@TableField("basin_gis")
private String basinGis;
/**
* 简介
*/
@TableField("basin_snapshot")
private String basinSnapshot;
@ApiModelProperty("流域编码")
private String bscd;
}

64
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/BasinJoin.java

@ -0,0 +1,64 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 流域水库-大坝-电站-测站关联表
* </p>
*
* @author dfy
* @since 2023-10-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("basin_join")
public class BasinJoin implements Serializable {
private static final long serialVersionUID=1L;
/**
* id
*/
@TableId("id")
private Long id;
/**
* 水库编码
*/
@TableField("stcd")
private String stcd;
/**
* 测站编码
*/
@TableField("sscd")
private String sscd;
/**
* 流域编码
*/
@TableField("bscd")
private String bscd;
/**
* 大坝编码
*/
@TableField("dmcd")
private String dmcd;
/**
* 电站id
*/
@TableField("station_id")
private Long stationId;
}

65
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/FileReservoirInfo.java

@ -0,0 +1,65 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 文件
*
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/8/8 16:01
*/
@Data
@Accessors(chain = true)
@TableName("file_reservoir_info")
public class FileReservoirInfo implements Serializable {
/**
* 视频Id
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* '视频地址'
*/
private String file;
/**
* 站点Id
*/
private String reservoirInfoId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 逻辑删除0 正常 1 删除
*/
@TableLogic
private int isDeleted;
}

62
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ImageReservoirInfo.java

@ -0,0 +1,62 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* 文件
*
* @Author WL
* @Version v1.0
* @Serial 1.0
* @Date 2023/8/8 16:01
*/
@Data
@Accessors(chain = true)
@TableName("image_reservoir_info")
public class ImageReservoirInfo implements Serializable {
/**
* 视频Id
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* '视频地址'
*/
private String image;
/**
* 站点Id
*/
private String reservoirInfoId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 逻辑删除0 正常 1 删除
*/
@TableLogic
private int isDeleted;
}

62
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/IrrBIReach.java

@ -0,0 +1,62 @@
package com.hnac.hzims.baseinfo.entity;
import java.math.BigDecimal;
/**
* 河流 <国标>
*
* @author moze
*
*/
public class IrrBIReach {
private String riverCode; // 河流代码
private String riverName; // 河流名称
private BigDecimal riverWidth; // 河槽平均宽度(米)
private BigDecimal riverFlux; // 河槽平均流量(立方米/秒)
private String coordinateset; // 经纬集合
public String getCoordinateset() {
return coordinateset;
}
public void setCoordinateset(String coordinateset) {
this.coordinateset = coordinateset;
}
public String getRiverCode() {
return riverCode;
}
public void setRiverCode(String riverCode) {
this.riverCode = riverCode;
}
public String getRiverName() {
return riverName;
}
public void setRiverName(String riverName) {
this.riverName = riverName;
}
public BigDecimal getRiverWidth() {
return riverWidth;
}
public void setRiverWidth(BigDecimal riverWidth) {
this.riverWidth = riverWidth;
}
public BigDecimal getRiverFlux() {
return riverFlux;
}
public void setRiverFlux(BigDecimal riverFlux) {
this.riverFlux = riverFlux;
}
}

531
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/IrrBIReachExample.java

@ -0,0 +1,531 @@
package com.hnac.hzims.baseinfo.entity;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class IrrBIReachExample {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public IrrBIReachExample() {
oredCriteria = new ArrayList<Criteria>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<Criterion>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
public Criteria andRiverCodeIsNull() {
addCriterion("RIVER_CODE is null");
return (Criteria) this;
}
public Criteria andRiverCodeIsNotNull() {
addCriterion("RIVER_CODE is not null");
return (Criteria) this;
}
public Criteria andRiverCodeEqualTo(String value) {
addCriterion("RIVER_CODE =", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeNotEqualTo(String value) {
addCriterion("RIVER_CODE <>", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeGreaterThan(String value) {
addCriterion("RIVER_CODE >", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeGreaterThanOrEqualTo(String value) {
addCriterion("RIVER_CODE >=", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeLessThan(String value) {
addCriterion("RIVER_CODE <", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeLessThanOrEqualTo(String value) {
addCriterion("RIVER_CODE <=", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeLike(String value) {
addCriterion("RIVER_CODE like", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeNotLike(String value) {
addCriterion("RIVER_CODE not like", value, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeIn(List<String> values) {
addCriterion("RIVER_CODE in", values, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeNotIn(List<String> values) {
addCriterion("RIVER_CODE not in", values, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeBetween(String value1, String value2) {
addCriterion("RIVER_CODE between", value1, value2, "riverCode");
return (Criteria) this;
}
public Criteria andRiverCodeNotBetween(String value1, String value2) {
addCriterion("RIVER_CODE not between", value1, value2, "riverCode");
return (Criteria) this;
}
public Criteria andRiverNameIsNull() {
addCriterion("RIVER_NAME is null");
return (Criteria) this;
}
public Criteria andRiverNameIsNotNull() {
addCriterion("RIVER_NAME is not null");
return (Criteria) this;
}
public Criteria andRiverNameEqualTo(String value) {
addCriterion("RIVER_NAME =", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameNotEqualTo(String value) {
addCriterion("RIVER_NAME <>", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameGreaterThan(String value) {
addCriterion("RIVER_NAME >", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameGreaterThanOrEqualTo(String value) {
addCriterion("RIVER_NAME >=", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameLessThan(String value) {
addCriterion("RIVER_NAME <", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameLessThanOrEqualTo(String value) {
addCriterion("RIVER_NAME <=", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameLike(String value) {
addCriterion("RIVER_NAME like", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameNotLike(String value) {
addCriterion("RIVER_NAME not like", value, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameIn(List<String> values) {
addCriterion("RIVER_NAME in", values, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameNotIn(List<String> values) {
addCriterion("RIVER_NAME not in", values, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameBetween(String value1, String value2) {
addCriterion("RIVER_NAME between", value1, value2, "riverName");
return (Criteria) this;
}
public Criteria andRiverNameNotBetween(String value1, String value2) {
addCriterion("RIVER_NAME not between", value1, value2, "riverName");
return (Criteria) this;
}
public Criteria andRiverWidthIsNull() {
addCriterion("RIVER_WIDTH is null");
return (Criteria) this;
}
public Criteria andRiverWidthIsNotNull() {
addCriterion("RIVER_WIDTH is not null");
return (Criteria) this;
}
public Criteria andRiverWidthEqualTo(BigDecimal value) {
addCriterion("RIVER_WIDTH =", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthNotEqualTo(BigDecimal value) {
addCriterion("RIVER_WIDTH <>", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthGreaterThan(BigDecimal value) {
addCriterion("RIVER_WIDTH >", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthGreaterThanOrEqualTo(BigDecimal value) {
addCriterion("RIVER_WIDTH >=", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthLessThan(BigDecimal value) {
addCriterion("RIVER_WIDTH <", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthLessThanOrEqualTo(BigDecimal value) {
addCriterion("RIVER_WIDTH <=", value, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthIn(List<BigDecimal> values) {
addCriterion("RIVER_WIDTH in", values, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthNotIn(List<BigDecimal> values) {
addCriterion("RIVER_WIDTH not in", values, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthBetween(BigDecimal value1, BigDecimal value2) {
addCriterion("RIVER_WIDTH between", value1, value2, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverWidthNotBetween(BigDecimal value1, BigDecimal value2) {
addCriterion("RIVER_WIDTH not between", value1, value2, "riverWidth");
return (Criteria) this;
}
public Criteria andRiverFluxIsNull() {
addCriterion("RIVER_FLUX is null");
return (Criteria) this;
}
public Criteria andRiverFluxIsNotNull() {
addCriterion("RIVER_FLUX is not null");
return (Criteria) this;
}
public Criteria andRiverFluxEqualTo(BigDecimal value) {
addCriterion("RIVER_FLUX =", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxNotEqualTo(BigDecimal value) {
addCriterion("RIVER_FLUX <>", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxGreaterThan(BigDecimal value) {
addCriterion("RIVER_FLUX >", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxGreaterThanOrEqualTo(BigDecimal value) {
addCriterion("RIVER_FLUX >=", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxLessThan(BigDecimal value) {
addCriterion("RIVER_FLUX <", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxLessThanOrEqualTo(BigDecimal value) {
addCriterion("RIVER_FLUX <=", value, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxIn(List<BigDecimal> values) {
addCriterion("RIVER_FLUX in", values, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxNotIn(List<BigDecimal> values) {
addCriterion("RIVER_FLUX not in", values, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxBetween(BigDecimal value1, BigDecimal value2) {
addCriterion("RIVER_FLUX between", value1, value2, "riverFlux");
return (Criteria) this;
}
public Criteria andRiverFluxNotBetween(BigDecimal value1, BigDecimal value2) {
addCriterion("RIVER_FLUX not between", value1, value2, "riverFlux");
return (Criteria) this;
}
public Criteria andCoordinatesetIsNull() {
addCriterion("COORDINATESET is null");
return (Criteria) this;
}
public Criteria andCoordinatesetIsNotNull() {
addCriterion("COORDINATESET is not null");
return (Criteria) this;
}
public Criteria andCoordinatesetEqualTo(String value) {
addCriterion("COORDINATESET =", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetNotEqualTo(String value) {
addCriterion("COORDINATESET <>", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetGreaterThan(String value) {
addCriterion("COORDINATESET >", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetGreaterThanOrEqualTo(String value) {
addCriterion("COORDINATESET >=", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetLessThan(String value) {
addCriterion("COORDINATESET <", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetLessThanOrEqualTo(String value) {
addCriterion("COORDINATESET <=", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetLike(String value) {
addCriterion("COORDINATESET like", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetNotLike(String value) {
addCriterion("COORDINATESET not like", value, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetIn(List<String> values) {
addCriterion("COORDINATESET in", values, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetNotIn(List<String> values) {
addCriterion("COORDINATESET not in", values, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetBetween(String value1, String value2) {
addCriterion("COORDINATESET between", value1, value2, "coordinateset");
return (Criteria) this;
}
public Criteria andCoordinatesetNotBetween(String value1, String value2) {
addCriterion("COORDINATESET not between", value1, value2, "coordinateset");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

77
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewInfo.java

@ -0,0 +1,77 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("preview_info")
public class PreviewInfo implements Serializable {
private static final long serialVersionUID=1L;
@JsonSerialize(
using = ToStringSerializer.class
)
@ApiModelProperty("主键id")
@TableId(
value = "id",
type = IdType.ASSIGN_ID
)
private Long id;
/**
* 预演消息
*/
@TableField("preview_message")
private String previewMessage;
/**
* 水库编码
*/
@TableField("stcd")
private String stcd;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
/**
* 告警类型
*/
@TableField("type")
private String type;
/**
* 水库名称
*/
@TableField(exist = false)
private String name;
@TableField(exist = false)
private String stnm;
@TableField(exist = false)
private String createTimeStr;
}

91
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewSchemeContent.java

@ -0,0 +1,91 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 预演方案内容表
* </p>
*
* @author zhaiqm
* @since 2023-09-01
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("preview_scheme_content")
public class PreviewSchemeContent extends TenantEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 方案id
*/
@TableField("scheme_id")
private String schemeId;
/**
* 预演时间点
*/
@TableField("preview_time")
private Date previewTime;
/**
* 降雨量(mm)
*/
@TableField("rain_capacity")
private BigDecimal rainCapacity;
/**
* 来水量
*/
@TableField("inflow")
private BigDecimal inflow;
/**
* 水库水位m
*/
@TableField("reservoir_level")
private BigDecimal reservoirLevel;
/**
* 机组出力kW
*/
@TableField("unit_output")
private BigDecimal unitOutput;
/**
* 下游水位m
*/
@TableField("tail_water_level")
private BigDecimal tailWaterLevel;
/**
* 发电量kWh
*/
@TableField("elec_gen_capacity")
private BigDecimal elecGenCapacity;
/**
* 累计发电量(kWh)
*/
@TableField("total_elec_gen_capacity")
private BigDecimal totalelecGenCapacity;
private String remark;
private String stcd;
private String dmcd;
}

59
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/PreviewSchemeInfo.java

@ -0,0 +1,59 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springblade.core.tenant.mp.TenantEntity;
import java.io.Serializable;
/**
* <p>
* 预演方案对象表
* </p>
*
* @author zhaiqm
* @since 2023-09-01
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("preview_scheme_info")
public class PreviewSchemeInfo extends TenantEntity implements Serializable {
private static final long serialVersionUID=1L;
/**
* 方案名称
*/
@TableField("scheme_name")
private String schemeName;
/**
* 水库编码
*/
@TableField("stcd")
private String stcd;
/**
* 流域编码
*/
@TableField("bscd")
private String bscd;
/**
* 大坝编码
*/
@TableField("dmcd")
private String dmcd;
/**
* 电站id多个英文逗号分隔
*/
@TableField("station_id")
private String stationId;
}

107
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReportDataBase.java

@ -0,0 +1,107 @@
package com.hnac.hzims.baseinfo.entity;
/**
* 封装一个key,value键值对象
* 可能是数据库返回查询数据
* 也可能是使用的对象由于数据需要置为-
* 所以采用String存储处理
*
* @Author: liugang
* @Date: 2019/7/8 16:02
*/
public class ReportDataBase {
private String keyStr;
private String keyDate;
private String val;
//测站 或 属性
private String stcd;
//属性名
private String name;
private Double value;
private int month=-1;
private String day;
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStcd() {
return stcd;
}
public void setStcd(String stcd) {
this.stcd = stcd;
}
public ReportDataBase() {
}
public String getKeyDate() {
return keyDate;
}
public void setKeyDate(String keyDate) {
this.keyDate = keyDate;
}
public ReportDataBase(String keyStr, String val) {
this.keyStr = keyStr;
this.val = val;
}
public String getKeyStr() {
return keyStr;
}
public void setKeyStr(String keyStr) {
this.keyStr = keyStr;
}
public String getVal() {
return val;
}
public void setVal(String val) {
this.val = val;
}
public Double getValue() {
if(val!=null && !"".equals(val.trim())) {
if(val.indexOf("-")==-1) {
return Double.valueOf(val);
}
}
return null;
}
public void setValue(Double value) {
this.value = value;
}
}

599
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirInfo.java

@ -0,0 +1,599 @@
package com.hnac.hzims.baseinfo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hnac.hzims.baseinfo.vo.ReservoirInfoVo;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 水库基本信息表 参照国标自行设计
*
* @author moze
*
*/
public class ReservoirInfo {
private String stcd; // 水库编号
private String stationid; // 站点ID
private Float discharge; // 水库核定下泄流量 m³/s
private String name; // 水库名称
private String location; // 水库地址
private String village; // 所在乡镇村
private Float roadlength; // 防汛公路长度 m
private String roadconditiion;// 防汛公路状况
private Date builddate;// 建设时间
private Date completeddate;// 竣工时间
private Float rainarea;// 积雨面积km²
private Float designedfloodflow;// 设计洪水流量m³/s
private Float chedkedfloodflow;// 校核洪水流量m³/s
private Float designedfillarea;// 设计灌面km²
private Float designedtotalflow;// 设计洪水总量 万m³
private Float checdedtotalflow;// 校核洪水总量 万m³
private Float averagerainfall;// 平均降雨量 mm
private Float designedmaxflow;// 设计最大泄量 m³/s
private Float checkedmaxflow;// 校核最大泄量m³/s
private Float volume;// 总库容 万m³
private Float checkedfloodlevel;// 校核洪水位
private Float historicalmaxlevel;// 历史最高水位
private Float floodcontrolvolume;// 防洪库容 万m³
private Float designedfloodlevel; // 设计洪水位 m
private Date maxleveltime; // 最高水位发生时间
private Float utilizablevolume; // 兴利库容万m³
private Float norrmallevel; // 正常蓄水位 m
private Float flooddetentionvolume; // 滞洪库容 万m³
private Float deadlevel; // 死水位 m
private String areaCode; // 行政区划Code
private String lrcd; // 湖库代码
private String szhldm; // 所在河流代码
private Float dongj; // 东经
private Float beiw; // 北纬
private Float mjflsscnwl; //主汛期限制水位
private String adminPersonName;// 行政责任人
private String adminPersonFunction;// 行政责任人职务
private String adminPersonPhone;// 行政责任人电话
private String technicalPersonName;// 技术责任人
private String technicalPersonFunction;// 技术责任人职务
private String technicalPersonPhone;// 技术责任人电话
private String patrolPersonName;// 巡查责任人
private String patrolPersonFunction;// 巡查责任人职务
private String patrolPersonPhone;// 巡查责任人电话
private String spillwayType;// 溢洪道型式
private Float overflowSectionLen;// 正常溢洪道-溢流段长或堰顶宽(m)
private Float weirTopElev;// 正常溢洪道-堰(槛)顶高程(m)
private Float maxFloodDischarge;// 最大泄洪流量(m³/s)
private String bscd;//流域编码
@ApiModelProperty("是否已删除")
private Integer isDeleted;
private Integer sort;
@TableField(exist = false)
private List<ThreeDuty> threeDutyList;//三个责任人
public Integer getIsDeleted() {
return isDeleted;
}
public void setIsDeleted(Integer isDeleted) {
this.isDeleted = isDeleted;
}
public String getAdminPersonName() {
return adminPersonName;
}
public void setAdminPersonName(String adminPersonName) {
this.adminPersonName = adminPersonName;
}
public String getAdminPersonFunction() {
return adminPersonFunction;
}
public void setAdminPersonFunction(String adminPersonFunction) {
this.adminPersonFunction = adminPersonFunction;
}
public String getAdminPersonPhone() {
return adminPersonPhone;
}
public void setAdminPersonPhone(String adminPersonPhone) {
this.adminPersonPhone = adminPersonPhone;
}
public String getTechnicalPersonName() {
return technicalPersonName;
}
public void setTechnicalPersonName(String technicalPersonName) {
this.technicalPersonName = technicalPersonName;
}
public String getTechnicalPersonFunction() {
return technicalPersonFunction;
}
public void setTechnicalPersonFunction(String technicalPersonFunction) {
this.technicalPersonFunction = technicalPersonFunction;
}
public String getTechnicalPersonPhone() {
return technicalPersonPhone;
}
public void setTechnicalPersonPhone(String technicalPersonPhone) {
this.technicalPersonPhone = technicalPersonPhone;
}
public String getPatrolPersonName() {
return patrolPersonName;
}
public void setPatrolPersonName(String patrolPersonName) {
this.patrolPersonName = patrolPersonName;
}
public String getPatrolPersonFunction() {
return patrolPersonFunction;
}
public void setPatrolPersonFunction(String patrolPersonFunction) {
this.patrolPersonFunction = patrolPersonFunction;
}
public String getPatrolPersonPhone() {
return patrolPersonPhone;
}
public void setPatrolPersonPhone(String patrolPersonPhone) {
this.patrolPersonPhone = patrolPersonPhone;
}
public Float getMjflsscnwl() {
return mjflsscnwl;
}
public void setMjflsscnwl(Float mjflsscnwl) {
this.mjflsscnwl = mjflsscnwl;
}
public String getAreaCode() {
return areaCode;
}
public void setAreaCode(String areaCode) {
this.areaCode = areaCode;
}
public String getLrcd() {
return lrcd;
}
public void setLrcd(String lrcd) {
this.lrcd = lrcd;
}
public String getSzhldm() {
return szhldm;
}
public void setSzhldm(String szhldm) {
this.szhldm = szhldm;
}
public Float getDongj() {
return dongj;
}
public void setDongj(Float dongj) {
this.dongj = dongj;
}
public Float getBeiw() {
return beiw;
}
public void setBeiw(Float beiw) {
this.beiw = beiw;
}
public ReservoirInfo() {
}
public ReservoirInfo(ReservoirInfoVo vo) {
this.averagerainfall = vo.getAveragerainfall();
this.builddate = vo.getBuilddate();
this.checdedtotalflow = vo.getChecdedtotalflow();
this.checkedfloodlevel = vo.getCheckedfloodlevel();
this.checkedmaxflow = vo.getCheckedmaxflow();
this.chedkedfloodflow = vo.getChedkedfloodflow();
this.completeddate = vo.getCompleteddate();
this.deadlevel = vo.getDeadlevel();
this.designedfillarea = vo.getDesignedfillarea();
this.designedfloodflow = vo.getDesignedfloodflow();
this.designedfloodlevel = vo.getDesignedfloodlevel();
this.designedmaxflow = vo.getDesignedmaxflow();
this.designedtotalflow = vo.getDesignedtotalflow();
this.discharge = vo.getDischarge();
this.floodcontrolvolume = vo.getFloodcontrolvolume();
this.flooddetentionvolume = vo.getFlooddetentionvolume();
this.historicalmaxlevel = vo.getHistoricalmaxlevel();
this.location = vo.getLocation();
this.maxleveltime = vo.getMaxleveltime();
this.name = vo.getName();
this.norrmallevel = vo.getNorrmallevel();
this.rainarea = vo.getRainarea();
this.roadconditiion = vo.getRoadconditiion();
this.roadlength = vo.getRoadlength();
this.stationid = vo.getStationid();
this.stcd = vo.getStcd();
this.utilizablevolume = vo.getUtilizablevolume();
this.village = vo.getVillage();
this.volume = vo.getVolume();
this.areaCode = vo.getAreaCode();
this.beiw = vo.getBeiw();
this.dongj = vo.getDongj();
this.lrcd = vo.getLrcd();
this.szhldm = vo.getSzhldm();
this.areaCode = vo.getAreaCode();
this.mjflsscnwl = vo.getMjflsscnwl();
this.adminPersonName = vo.getAdminPersonName();
this.adminPersonFunction = vo.getAdminPersonFunction();
this.adminPersonPhone = vo.getAdminPersonPhone();
this.technicalPersonName = vo.getTechnicalPersonName();
this.technicalPersonFunction = vo.getTechnicalPersonFunction();
this.technicalPersonPhone = vo.getTechnicalPersonPhone();
this.patrolPersonName = vo.getPatrolPersonName();
this.patrolPersonFunction = vo.getPatrolPersonFunction();
this.patrolPersonPhone = vo.getPatrolPersonPhone();
this.spillwayType = vo.getSpillwayType();
this.overflowSectionLen = vo.getOverflowSectionLen();
this.weirTopElev = vo.getWeirTopElev();
this.maxFloodDischarge = vo.getMaxFloodDischarge();
this.threeDutyList = vo.getThreeDutyList();
this.bscd = vo.getBscd();
this.sort = vo.getSort();
}
public String getStcd() {
return stcd;
}
public void setStcd(String stcd) {
this.stcd = stcd;
}
public String getStationid() {
return stationid;
}
public void setStationid(String stationid) {
this.stationid = stationid;
}
public Float getDischarge() {
return discharge;
}
public void setDischarge(Float discharge) {
this.discharge = discharge;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getVillage() {
return village;
}
public void setVillage(String village) {
this.village = village;
}
public Float getRoadlength() {
return roadlength;
}
public void setRoadlength(Float roadlength) {
this.roadlength = roadlength;
}
public String getRoadconditiion() {
return roadconditiion;
}
public void setRoadconditiion(String roadconditiion) {
this.roadconditiion = roadconditiion;
}
public Date getBuilddate() {
return builddate;
}
public void setBuilddate(Date builddate) {
this.builddate = builddate;
}
public Date getCompleteddate() {
return completeddate;
}
public void setCompleteddate(Date completeddate) {
this.completeddate = completeddate;
}
public Float getRainarea() {
return rainarea;
}
public void setRainarea(Float rainarea) {
this.rainarea = rainarea;
}
public Float getDesignedfloodflow() {
return designedfloodflow;
}
public void setDesignedfloodflow(Float designedfloodflow) {
this.designedfloodflow = designedfloodflow;
}
public Float getChedkedfloodflow() {
return chedkedfloodflow;
}
public void setChedkedfloodflow(Float chedkedfloodflow) {
this.chedkedfloodflow = chedkedfloodflow;
}
public Float getDesignedfillarea() {
return designedfillarea;
}
public void setDesignedfillarea(Float designedfillarea) {
this.designedfillarea = designedfillarea;
}
public Float getDesignedtotalflow() {
return designedtotalflow;
}
public void setDesignedtotalflow(Float designedtotalflow) {
this.designedtotalflow = designedtotalflow;
}
public Float getChecdedtotalflow() {
return checdedtotalflow;
}
public void setChecdedtotalflow(Float checdedtotalflow) {
this.checdedtotalflow = checdedtotalflow;
}
public Float getAveragerainfall() {
return averagerainfall;
}
public void setAveragerainfall(Float averagerainfall) {
this.averagerainfall = averagerainfall;
}
public Float getDesignedmaxflow() {
return designedmaxflow;
}
public void setDesignedmaxflow(Float designedmaxflow) {
this.designedmaxflow = designedmaxflow;
}
public Float getCheckedmaxflow() {
return checkedmaxflow;
}
public void setCheckedmaxflow(Float checkedmaxflow) {
this.checkedmaxflow = checkedmaxflow;
}
public Float getVolume() {
return volume;
}
public void setVolume(Float volume) {
this.volume = volume;
}
public Float getCheckedfloodlevel() {
return checkedfloodlevel;
}
public void setCheckedfloodlevel(Float checkedfloodlevel) {
this.checkedfloodlevel = checkedfloodlevel;
}
public Float getHistoricalmaxlevel() {
return historicalmaxlevel;
}
public void setHistoricalmaxlevel(Float historicalmaxlevel) {
this.historicalmaxlevel = historicalmaxlevel;
}
public Float getFloodcontrolvolume() {
return floodcontrolvolume;
}
public void setFloodcontrolvolume(Float floodcontrolvolume) {
this.floodcontrolvolume = floodcontrolvolume;
}
public Float getDesignedfloodlevel() {
return designedfloodlevel;
}
public void setDesignedfloodlevel(Float designedfloodlevel) {
this.designedfloodlevel = designedfloodlevel;
}
public Date getMaxleveltime() {
return maxleveltime;
}
public void setMaxleveltime(Date maxleveltime) {
this.maxleveltime = maxleveltime;
}
public Float getUtilizablevolume() {
return utilizablevolume;
}
public void setUtilizablevolume(Float utilizablevolume) {
this.utilizablevolume = utilizablevolume;
}
public Float getNorrmallevel() {
return norrmallevel;
}
public void setNorrmallevel(Float norrmallevel) {
this.norrmallevel = norrmallevel;
}
public Float getFlooddetentionvolume() {
return flooddetentionvolume;
}
public void setFlooddetentionvolume(Float flooddetentionvolume) {
this.flooddetentionvolume = flooddetentionvolume;
}
public Float getDeadlevel() {
return deadlevel;
}
public void setDeadlevel(Float deadlevel) {
this.deadlevel = deadlevel;
}
public String getSpillwayType() {
return spillwayType;
}
public void setSpillwayType(String spillwayType) {
this.spillwayType = spillwayType;
}
public Float getOverflowSectionLen() {
return overflowSectionLen;
}
public void setOverflowSectionLen(Float overflowSectionLen) {
this.overflowSectionLen = overflowSectionLen;
}
public Float getWeirTopElev() {
return weirTopElev;
}
public void setWeirTopElev(Float weirTopElev) {
this.weirTopElev = weirTopElev;
}
public Float getMaxFloodDischarge() {
return maxFloodDischarge;
}
public void setMaxFloodDischarge(Float maxFloodDischarge) {
this.maxFloodDischarge = maxFloodDischarge;
}
public List<ThreeDuty> getThreeDutyList() {
return threeDutyList;
}
public void setThreeDutyList(List<ThreeDuty> threeDutyList) {
this.threeDutyList = threeDutyList;
}
public String getBscd() {
return bscd;
}
public void setBscd(String bscd) {
this.bscd = bscd;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
}

2363
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirInfoExample.java

File diff suppressed because it is too large Load Diff

50
hzims-service-api/base-info-api/src/main/java/com/hnac/hzims/baseinfo/entity/ReservoirRefdata.java

@ -0,0 +1,50 @@
package com.hnac.hzims.baseinfo.entity;
/**
* 水库数据扩展表
*
* @author moze
*
*/
public class ReservoirRefdata {
private String stcd; // 水库编号
private String refstcd; // 关联测站
private String refqpoint; // 关联流量数据点
private String refzpoint; // 关联水位数据点
public String getStcd() {
return stcd;
}
public void setStcd(String stcd) {
this.stcd = stcd;
}
public String getRefstcd() {
return refstcd;
}
public void setRefstcd(String refstcd) {
this.refstcd = refstcd;
}
public String getRefqpoint() {
return refqpoint;
}
public void setRefqpoint(String refqpoint) {
this.refqpoint = refqpoint;
}
public String getRefzpoint() {
return refzpoint;
}
public void setRefzpoint(String refzpoint) {
this.refzpoint = refzpoint;
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save