WQQ 2 недель назад
Родитель
Сommit
74b744c607
100 измененных файлов с 465 добавлено и 51 удалено
  1. 337 0
      RuoYi-Vue3/src/supermap-cesium-module/components/special-effects/weather/weather.js
  2. 112 0
      RuoYi-Vue3/src/supermap-cesium-module/components/special-effects/weather/weather.vue
  3. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/watershed/WatershedModelController.java
  4. 1 1
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/watershed/WatershedServiceController.java
  5. BIN
      ruoyi-admin/target/classes/com/ruoyi/RuoYiApplication.class
  6. BIN
      ruoyi-admin/target/classes/com/ruoyi/RuoYiServletInitializer.class
  7. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/cesium/CesiumMapConfigController.class
  8. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/common/CaptchaController.class
  9. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/common/CommonController.class
  10. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/CacheController.class
  11. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/ServerController.class
  12. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysLogininforController.class
  13. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysOperlogController.class
  14. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysUserOnlineController.class
  15. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysConfigController.class
  16. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDeptController.class
  17. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDictDataController.class
  18. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDictTypeController.class
  19. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysIndexController.class
  20. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysLoginController.class
  21. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysMenuController.class
  22. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysNoticeController.class
  23. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysPostController.class
  24. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysProfileController.class
  25. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysRegisterController.class
  26. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysRoleController.class
  27. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysUserController.class
  28. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/tool/TestController.class
  29. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/tool/UserEntity.class
  30. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/watershed/WatershedModelController.class
  31. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/controller/watershed/WatershedServiceController.class
  32. BIN
      ruoyi-admin/target/classes/com/ruoyi/web/core/config/SwaggerConfig.class
  33. 2 3
      ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java
  34. 3 3
      ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
  35. 2 2
      ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java
  36. BIN
      ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel$ColumnType.class
  37. BIN
      ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel$Type.class
  38. BIN
      ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel.class
  39. BIN
      ruoyi-common/target/classes/com/ruoyi/common/config/serializer/SensitiveJsonSerializer.class
  40. BIN
      ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysDictData.class
  41. BIN
      ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysDictType.class
  42. BIN
      ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysRole.class
  43. BIN
      ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysUser.class
  44. BIN
      ruoyi-common/target/classes/com/ruoyi/common/core/domain/model/LoginUser.class
  45. BIN
      ruoyi-common/target/classes/com/ruoyi/common/utils/DictUtils.class
  46. BIN
      ruoyi-common/target/classes/com/ruoyi/common/utils/SecurityUtils.class
  47. BIN
      ruoyi-common/target/classes/com/ruoyi/common/utils/poi/ExcelUtil.class
  48. BIN
      ruoyi-common/target/classes/com/ruoyi/common/utils/reflect/ReflectUtils.class
  49. 0 3
      ruoyi-common/target/maven-archiver/pom.properties
  50. BIN
      ruoyi-common/target/ruoyi-common-3.9.1.jar
  51. 1 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java
  52. 2 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
  53. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/aspectj/DataScopeAspect.class
  54. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/aspectj/LogAspect.class
  55. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/config/ApplicationConfig.class
  56. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory$1.class
  57. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory$2.class
  58. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory.class
  59. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/web/service/PermissionService.class
  60. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysPasswordService.class
  61. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysPermissionService.class
  62. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysRegisterService.class
  63. BIN
      ruoyi-framework/target/classes/com/ruoyi/framework/web/service/UserDetailsServiceImpl.class
  64. 0 3
      ruoyi-framework/target/maven-archiver/pom.properties
  65. BIN
      ruoyi-framework/target/ruoyi-framework-3.9.1.jar
  66. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/config/GenConfig.class
  67. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/controller/GenController.class
  68. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/domain/GenTable.class
  69. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/domain/GenTableColumn.class
  70. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/service/GenTableColumnServiceImpl.class
  71. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/service/GenTableServiceImpl.class
  72. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/util/GenUtils.class
  73. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/util/VelocityInitializer.class
  74. BIN
      ruoyi-generator/target/classes/com/ruoyi/generator/util/VelocityUtils.class
  75. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/controller/SysJobController.class
  76. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/controller/SysJobLogController.class
  77. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/domain/SysJob.class
  78. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/domain/SysJobLog.class
  79. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.class
  80. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/service/impl/SysJobServiceImpl.class
  81. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/task/RyTask.class
  82. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/AbstractQuartzJob.class
  83. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/CronUtils.class
  84. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/JobInvokeUtil.class
  85. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.class
  86. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/QuartzJobExecution.class
  87. BIN
      ruoyi-quartz/target/classes/com/ruoyi/quartz/util/ScheduleUtils.class
  88. 0 3
      ruoyi-quartz/target/maven-archiver/pom.properties
  89. 0 17
      ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  90. BIN
      ruoyi-quartz/target/ruoyi-quartz-3.9.1.jar
  91. 1 2
      ruoyi-system/src/main/java/com/ruoyi/system/domain/CesiumMapConfig.java
  92. 1 2
      ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedEquipment.java
  93. 1 2
      ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedFacility.java
  94. 0 4
      ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedModel.java
  95. 1 1
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CesiumMapConfigServiceImpl.java
  96. BIN
      ruoyi-system/target/classes/com/ruoyi/system/domain/CesiumMapConfig.class
  97. BIN
      ruoyi-system/target/classes/com/ruoyi/system/domain/SysConfig.class
  98. BIN
      ruoyi-system/target/classes/com/ruoyi/system/domain/SysLogininfor.class
  99. BIN
      ruoyi-system/target/classes/com/ruoyi/system/domain/SysOperLog.class
  100. BIN
      ruoyi-system/target/classes/com/ruoyi/system/domain/SysPost.class

+ 337 - 0
RuoYi-Vue3/src/supermap-cesium-module/components/special-effects/weather/weather.js

@@ -0,0 +1,337 @@
+// 天气效果实现
+class WeatherEffect {
+  constructor(viewer) {
+    this.viewer = viewer;
+    this.scene = viewer.scene;
+    this.currentWeather = 'sunny'; // 默认晴天
+    this.rainParticleSystem = null;
+    this.snowParticleSystem = null;
+    this.rainEffect = null;
+  }
+
+  // 设置天气类型
+  setWeather(weatherType) {
+    this.currentWeather = weatherType;
+    this.clearWeatherEffects();
+    
+    switch (weatherType) {
+      case 'sunny':
+        this.setSunnyWeather();
+        break;
+      case 'cloudy':
+        this.setCloudyWeather();
+        break;
+      case 'rain':
+        this.setRainWeather();
+        break;
+      case 'snow':
+        this.setSnowWeather();
+        break;
+    }
+  }
+
+  // 清除所有天气效果
+  clearWeatherEffects() {
+    // 清除粒子系统
+    if (this.rainParticleSystem) {
+      this.scene.primitives.remove(this.rainParticleSystem);
+      this.rainParticleSystem = null;
+    }
+    if (this.snowParticleSystem) {
+      this.scene.primitives.remove(this.snowParticleSystem);
+      this.snowParticleSystem = null;
+    }
+
+    // 清除后处理效果
+    if (this.rainEffect) {
+      this.rainEffect.destroy();
+      this.rainEffect = null;
+    }
+
+    // 重置大气效果
+    this.scene.skyAtmosphere.hueShift = 0.0;
+    this.scene.skyAtmosphere.saturationShift = 0.0;
+    this.scene.skyAtmosphere.brightnessShift = 0.0;
+
+    // 重置光照
+    this.scene.globe.enableLighting = true;
+    if (this.scene.sun) {
+      this.scene.sun.show = true;
+    }
+    if (this.scene.moon) {
+      this.scene.moon.show = false;
+    }
+  }
+
+  // 设置晴天效果
+  setSunnyWeather() {
+    this.scene.skyAtmosphere.hueShift = 0.0;
+    this.scene.skyAtmosphere.saturationShift = 0.1;
+    this.scene.skyAtmosphere.brightnessShift = 0.2;
+    this.scene.globe.enableLighting = true;
+    if (this.scene.sun) {
+      this.scene.sun.show = true;
+    }
+  }
+
+  // 设置阴天效果
+  setCloudyWeather() {
+    this.scene.skyAtmosphere.hueShift = 0.1;
+    this.scene.skyAtmosphere.saturationShift = -0.3;
+    this.scene.skyAtmosphere.brightnessShift = -0.4;
+    this.scene.globe.enableLighting = true;
+    if (this.scene.sun) {
+      this.scene.sun.show = false;
+    }
+  }
+
+  // 设置雨天效果
+  setRainWeather() {
+    this.setCloudyWeather();
+    this.createRainEffect();
+  }
+
+  // 设置雪天效果
+  setSnowWeather() {
+    this.setCloudyWeather();
+    this.createSnowEffect();
+  }
+
+  // 创建下雨效果
+  createRainEffect() {
+    console.log('创建雨天效果');
+    
+    // 尝试使用粒子系统实现雨天效果
+    const rainParticleSize = this.scene.drawingBufferWidth / 500.0; // 进一步减小雨滴宽度
+    const rainRadius = 4000.0;
+    const rainImageSize = new Cesium.Cartesian2(rainParticleSize, rainParticleSize * 10.0); // 调整雨滴形状,更加细长
+    const rainGravityScratch = new Cesium.Cartesian3();
+    
+    const rainUpdate = (particle, dt) => {
+      Cesium.Cartesian3.normalize(particle.position, rainGravityScratch);
+      Cesium.Cartesian3.multiplyByScalar(rainGravityScratch, -40, rainGravityScratch); // 增加下落速度,使雨滴更自然
+      Cesium.Cartesian3.add(particle.position, rainGravityScratch, particle.position);
+      const distance = Cesium.Cartesian3.distance(this.scene.camera.position, particle.position);
+      if (distance > rainRadius) {
+        particle.endColor.alpha = 0.0;
+      } else {
+        particle.endColor.alpha = this.rainParticleSystem.endColor.alpha / (distance / rainRadius + 0.1);
+      }
+    };
+    
+    // 创建雨滴粒子系统
+    const rainColor = new Cesium.Color(0.5, 0.6, 0.7, 0.4); // 调整为更暗的雨水颜色,增加透明度
+    console.log('雨滴颜色:', rainColor);
+    
+    // 使用与雪天相同的纹理,确保显示
+    const rainTexture = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiNmZmYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+PC9zdmc+';
+    
+    this.rainParticleSystem = new Cesium.ParticleSystem({
+      modelMatrix: new Cesium.Matrix4.fromTranslation(this.scene.camera.position),
+      speed: -1.0,
+      lifetime: 10.0, // 减少生命周期,使雨滴更密集
+      emitter: new Cesium.SphereEmitter(rainRadius),
+      startScale: 1.0,
+      endScale: 1.0,
+      image: rainTexture,
+      emissionRate: 5000.0, // 增加粒子数量,使雨更密集
+      startColor: rainColor,
+      endColor: rainColor,
+      imageSize: rainImageSize,
+      updateCallback: rainUpdate,
+      performance: false,
+    });
+    
+    this.scene.primitives.add(this.rainParticleSystem);
+    this.rainParticleSystem.lodRangeScale = 10000;
+    
+    // 参考示例,添加相机位置监听,确保粒子系统跟随相机移动
+    this.scene.camera.changed.addEventListener(() => {
+      if (this.rainParticleSystem) {
+        const modelMatrix = new Cesium.Matrix4.fromTranslation(this.scene.camera.position);
+        this.rainParticleSystem.modelMatrix = modelMatrix;
+      }
+    });
+    
+    console.log('雨天效果创建完成,粒子系统数量:', this.scene.primitives.length);
+    console.log('粒子系统颜色设置:', {
+      startColor: this.rainParticleSystem.startColor,
+      endColor: this.rainParticleSystem.endColor
+    });
+  }
+
+  // 创建下雪效果
+  createSnowEffect() {
+    const snowParticleSize = this.scene.drawingBufferWidth / 150.0; // 减小雪花大小
+    const snowRadius = 4000.0;
+    const snowImageSize = new Cesium.Cartesian2(snowParticleSize, snowParticleSize);
+    const snowGravityScratch = new Cesium.Cartesian3();
+    
+    const snowUpdate = (particle, dt) => {
+      Cesium.Cartesian3.normalize(particle.position, snowGravityScratch);
+      Cesium.Cartesian3.multiplyByScalar(snowGravityScratch, -15, snowGravityScratch); // 减慢下落速度
+      Cesium.Cartesian3.add(particle.position, snowGravityScratch, particle.position);
+      const distance = Cesium.Cartesian3.distance(this.scene.camera.position, particle.position);
+      if (distance > snowRadius) {
+        particle.endColor.alpha = 0.0;
+      } else {
+        particle.endColor.alpha = this.snowParticleSystem.endColor.alpha / (distance / snowRadius + 0.1);
+      }
+    };
+    
+    // 创建雪花粒子系统
+    const snowColor = Cesium.Color.WHITE.withAlpha(0.7); // 按照用户要求设置
+    console.log('雪花颜色:', snowColor);
+    
+    // 使用更适合的雪花纹理
+    const snowTexture = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiIGZpbGw9IiNmZmYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+PC9zdmc+';
+    
+    this.snowParticleSystem = new Cesium.ParticleSystem({
+      modelMatrix: new Cesium.Matrix4.fromTranslation(this.scene.camera.position),
+      speed: -1.0,
+      lifetime: 20.0, // 增加生命周期,使雪花飘落更自然
+      emitter: new Cesium.SphereEmitter(snowRadius),
+      startScale: 0.8,
+      endScale: 1.2, // 增加大小变化,使雪花更自然
+      image: snowTexture,
+      emissionRate: 3000.0, // 增加粒子数量,使雪更密集
+      startColor: snowColor,
+      endColor: snowColor,
+      imageSize: snowImageSize,
+      updateCallback: snowUpdate,
+      performance: false,
+    });
+    
+    this.scene.primitives.add(this.snowParticleSystem);
+    this.snowParticleSystem.lodRangeScale = 10000;
+    
+    // 参考示例,添加相机位置监听,确保粒子系统跟随相机移动
+    this.scene.camera.changed.addEventListener(() => {
+      if (this.snowParticleSystem) {
+        const modelMatrix = new Cesium.Matrix4.fromTranslation(this.scene.camera.position);
+        this.snowParticleSystem.modelMatrix = modelMatrix;
+      }
+    });
+    
+    console.log('雪天效果创建完成,粒子系统数量:', this.scene.primitives.length);
+    console.log('粒子系统颜色设置:', {
+      startColor: this.snowParticleSystem.startColor,
+      endColor: this.snowParticleSystem.endColor
+    });
+  }
+
+  // 获取当前天气类型
+  getCurrentWeather() {
+    return this.currentWeather;
+  }
+}
+
+// 后处理阶段实现的雨天效果
+class RainEffect {
+  constructor(viewer, options) {
+    console.log('初始化 RainEffect');
+    if (!viewer) throw new Error("no viewer object!");
+    options = options || {};
+    this.tiltAngle = Cesium.defaultValue(options.tiltAngle, -0.6); // 倾斜角度
+    this.rainSize = Cesium.defaultValue(options.rainSize, 0.1); // 雨滴大小
+    this.rainSpeed = Cesium.defaultValue(options.rainSpeed, 1000.0); // 雨速
+    this.rainIntensity = Cesium.defaultValue(options.rainIntensity, 1.0); // 雨的强度
+    this.viewer = viewer;
+    console.log('RainEffect 初始化参数:', { tiltAngle: this.tiltAngle, rainSize: this.rainSize, rainSpeed: this.rainSpeed, rainIntensity: this.rainIntensity });
+    this.init();
+  }
+  
+  init() {
+    console.log('创建后处理阶段');
+    this.rainStage = new Cesium.PostProcessStage({
+      name: "czml_rain",
+      fragmentShader: this.rain(),
+      uniforms: {
+        tiltAngle: () => this.tiltAngle,
+        rainSize: () => this.rainSize,
+        rainSpeed: () => this.rainSpeed,
+        rainIntensity: () => this.rainIntensity,
+        time: () => performance.now() * 0.001
+      },
+    });
+    console.log('后处理阶段创建完成:', this.rainStage);
+    this.viewer.scene.postProcessStages.add(this.rainStage);
+    console.log('后处理阶段添加到场景:', this.viewer.scene.postProcessStages.length);
+  }
+  
+  rain() {
+    return `
+      uniform sampler2D colorTexture;
+      varying vec2 v_textureCoordinates;
+      uniform float tiltAngle;
+      uniform float rainSize;
+      uniform float rainSpeed;
+      uniform float rainIntensity;
+      uniform float time;
+      
+      // 随机函数
+      float random(vec2 st) {
+        return fract(sin(dot(st, vec2(12.9898, 78.233))) * 43758.5453123);
+      }
+      
+      void main(void) {
+        vec4 color = texture2D(colorTexture, v_textureCoordinates);
+        
+        // 计算雨滴位置
+        float t = time * rainSpeed;
+        float rainDensity = 0.02 * rainIntensity;
+        
+        // 倾斜角度
+        float angle = tiltAngle;
+        mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
+        
+        // 雨滴效果
+        vec2 uv = v_textureCoordinates * 10.0;
+        uv = rotation * uv;
+        uv.y += t * 0.01;
+        
+        // 创建雨滴
+        float rain = 0.0;
+        for (int i = 0; i < 4; i++) {
+          vec2 grid = fract(uv * vec2(1.0, 20.0)) - 0.5;
+          float d = length(grid);
+          float size = rainSize * (1.0 + float(i) * 0.5);
+          float fade = smoothstep(size, size * 0.5, d);
+          rain += fade;
+          uv *= 1.5;
+        }
+        
+        // 应用雨滴效果
+        rain *= rainDensity;
+        color.rgb *= (1.0 - rain * 0.5);
+        color.rgb += rain * vec3(0.5, 0.6, 0.7); // 雨滴的颜色
+        
+        gl_FragColor = color;
+      }
+    `;
+  }
+  
+  // 显示雨天效果
+  show() {
+    if (this.rainStage) {
+      this.rainStage.enabled = true;
+    }
+  }
+  
+  // 隐藏雨天效果
+  hide() {
+    if (this.rainStage) {
+      this.rainStage.enabled = false;
+    }
+  }
+  
+  // 销毁雨天效果
+  destroy() {
+    if (this.rainStage) {
+      this.viewer.scene.postProcessStages.remove(this.rainStage);
+      this.rainStage = null;
+    }
+  }
+}
+
+export default WeatherEffect;

+ 112 - 0
RuoYi-Vue3/src/supermap-cesium-module/components/special-effects/weather/weather.vue

@@ -0,0 +1,112 @@
+<template>
+  <div class="weather-control">
+    <el-dropdown>
+      <el-button type="primary" size="small">
+        {{ currentWeatherText }}
+        <el-icon class="el-icon--right"><arrow-down /></el-icon>
+      </el-button>
+      <template #dropdown>
+        <el-dropdown-menu>
+          <el-dropdown-item @click="setWeather('sunny')">晴天</el-dropdown-item>
+          <el-dropdown-item @click="setWeather('cloudy')">阴天</el-dropdown-item>
+          <el-dropdown-item @click="setWeather('rain')">雨天</el-dropdown-item>
+          <el-dropdown-item @click="setWeather('snow')">雪天</el-dropdown-item>
+        </el-dropdown-menu>
+      </template>
+    </el-dropdown>
+  </div>
+</template>
+
+<script>
+import { ref, onMounted, inject, computed, nextTick } from 'vue';
+import WeatherEffect from './weather.js';
+import { ArrowDown } from '@element-plus/icons-vue';
+
+export default {
+  name: 'WeatherControl',
+  components: {
+    ArrowDown
+  },
+  setup() {
+    const viewer = inject('viewer');
+    const weatherEffect = ref(null);
+    const currentWeather = ref('sunny');
+
+    const currentWeatherText = computed(() => {
+      const weatherMap = {
+        sunny: '晴天',
+        cloudy: '阴天',
+        rain: '雨天',
+        snow: '雪天'
+      };
+      return weatherMap[currentWeather.value] || '晴天';
+    });
+
+    const setWeather = (weatherType) => {
+      currentWeather.value = weatherType;
+      if (weatherEffect.value) {
+        try {
+          weatherEffect.value.setWeather(weatherType);
+        } catch (error) {
+          console.error('设置天气效果失败:', error);
+        }
+      } else {
+        nextTick(() => {
+          if (weatherEffect.value) {
+            try {
+              weatherEffect.value.setWeather(weatherType);
+            } catch (error) {
+              console.error('设置天气效果失败:', error);
+            }
+          }
+        });
+      }
+    };
+
+    onMounted(() => {
+      const globalViewer = window.viewer;
+      if (globalViewer) {
+        try {
+          weatherEffect.value = new WeatherEffect(globalViewer);
+          weatherEffect.value.setWeather('sunny');
+        } catch (error) {
+          console.error('初始化天气效果失败:', error);
+        }
+      } else if (viewer) {
+        try {
+          weatherEffect.value = new WeatherEffect(viewer);
+          weatherEffect.value.setWeather('sunny');
+        } catch (error) {
+          console.error('初始化天气效果失败:', error);
+        }
+      } else {
+        setTimeout(() => {
+          const delayedViewer = window.viewer;
+          if (delayedViewer) {
+            try {
+              weatherEffect.value = new WeatherEffect(delayedViewer);
+              weatherEffect.value.setWeather('sunny');
+            } catch (error) {
+              console.error('初始化天气效果失败:', error);
+            }
+          }
+        }, 1000);
+      }
+    });
+
+    return {
+      currentWeatherText,
+      setWeather
+    };
+  }
+};
+</script>
+
+<style>
+.weather-control {
+  position: absolute;
+  top: 20px;
+  right: 20px;
+  z-index: 1000;
+}
+</style>

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/watershed/WatershedModelController.java

@@ -24,7 +24,7 @@ import com.ruoyi.system.service.IWatershedModelService;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.FileUtils;
+
 import com.ruoyi.common.config.RuoYiConfig;
 
 /**

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/watershed/WatershedServiceController.java

@@ -3,7 +3,7 @@ package com.ruoyi.web.controller.watershed;
 import java.util.List;
 import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;

BIN
ruoyi-admin/target/classes/com/ruoyi/RuoYiApplication.class


BIN
ruoyi-admin/target/classes/com/ruoyi/RuoYiServletInitializer.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/cesium/CesiumMapConfigController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/common/CaptchaController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/common/CommonController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/CacheController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/ServerController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysLogininforController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysOperlogController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/monitor/SysUserOnlineController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysConfigController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDeptController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDictDataController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysDictTypeController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysIndexController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysLoginController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysMenuController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysNoticeController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysPostController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysProfileController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysRegisterController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysRoleController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/system/SysUserController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/tool/TestController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/tool/UserEntity.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/watershed/WatershedModelController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/controller/watershed/WatershedServiceController.class


BIN
ruoyi-admin/target/classes/com/ruoyi/web/core/config/SwaggerConfig.class


+ 2 - 3
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Excel.java

@@ -4,7 +4,6 @@ import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
-import java.math.BigDecimal;
 import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.IndexedColors;
 import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
@@ -54,9 +53,9 @@ public @interface Excel
     public int scale() default -1;
 
     /**
-     * BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
+     * BigDecimal 舍入规则 默认:RoundingMode.HALF_EVEN
      */
-    public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
+    public int roundingMode() default 5;
 
     /**
      * 导出时在excel中每个列的高度

+ 3 - 3
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java

@@ -418,7 +418,7 @@ public class ExcelUtil<T>
                     Object val = this.getCellValue(row, entry.getKey());
 
                     // 如果不存在实例则新建.
-                    entity = (entity == null ? clazz.newInstance() : entity);
+                    entity = (entity == null ? clazz.getDeclaredConstructor().newInstance() : entity);
                     // 从map中得到对应列的field.
                     Field field = (Field) entry.getValue()[0];
                     Excel attr = (Excel) entry.getValue()[1];
@@ -1171,7 +1171,7 @@ public class ExcelUtil<T>
                 }
                 else if (value instanceof BigDecimal && -1 != attr.scale())
                 {
-                    cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), attr.roundingMode())).doubleValue());
+                    cell.setCellValue((((BigDecimal) value).setScale(attr.scale(), java.math.RoundingMode.values()[attr.roundingMode()])).doubleValue());
                 }
                 else if (!attr.handler().equals(ExcelHandlerAdapter.class))
                 {
@@ -1410,7 +1410,7 @@ public class ExcelUtil<T>
     {
         try
         {
-            Object instance = excel.handler().newInstance();
+            Object instance = excel.handler().getDeclaredConstructor().newInstance();
             Method formatMethod = excel.handler().getMethod("format", new Class[] { Object.class, String[].class, Cell.class, Workbook.class });
             value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb);
         }

+ 2 - 2
ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java

@@ -313,7 +313,7 @@ public class ReflectUtils
     public static void makeAccessible(Method method)
     {
         if ((!Modifier.isPublic(method.getModifiers()) || !Modifier.isPublic(method.getDeclaringClass().getModifiers()))
-                && !method.isAccessible())
+                && !method.canAccess(null))
         {
             method.setAccessible(true);
         }
@@ -325,7 +325,7 @@ public class ReflectUtils
     public static void makeAccessible(Field field)
     {
         if ((!Modifier.isPublic(field.getModifiers()) || !Modifier.isPublic(field.getDeclaringClass().getModifiers())
-                || Modifier.isFinal(field.getModifiers())) && !field.isAccessible())
+                || Modifier.isFinal(field.getModifiers())) && !field.canAccess(null))
         {
             field.setAccessible(true);
         }

BIN
ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel$ColumnType.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel$Type.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/annotation/Excel.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/config/serializer/SensitiveJsonSerializer.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysDictData.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysDictType.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysRole.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/core/domain/entity/SysUser.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/core/domain/model/LoginUser.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/utils/DictUtils.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/utils/SecurityUtils.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/utils/poi/ExcelUtil.class


BIN
ruoyi-common/target/classes/com/ruoyi/common/utils/reflect/ReflectUtils.class


+ 0 - 3
ruoyi-common/target/maven-archiver/pom.properties

@@ -1,3 +0,0 @@
-artifactId=ruoyi-common
-groupId=com.ruoyi
-version=3.9.1

BIN
ruoyi-common/target/ruoyi-common-3.9.1.jar


+ 1 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java

@@ -7,8 +7,7 @@ import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
+
 
 /**
  * 程序注解配置

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java

@@ -37,13 +37,13 @@ public class AsyncFactory
     public static TimerTask recordLogininfor(final String username, final String status, final String message,
             final Object... args)
     {
-        final String userAgent = ServletUtils.getRequest().getHeader("User-Agent");
-        final String ip = IpUtils.getIpAddr();
         return new TimerTask()
         {
             @Override
             public void run()
             {
+                final String userAgent = ServletUtils.getRequest().getHeader("User-Agent");
+                final String ip = IpUtils.getIpAddr();
                 String address = AddressUtils.getRealAddressByIP(ip);
                 StringBuilder s = new StringBuilder();
                 s.append(LogUtils.getBlock(ip));

BIN
ruoyi-framework/target/classes/com/ruoyi/framework/aspectj/DataScopeAspect.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/aspectj/LogAspect.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/config/ApplicationConfig.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory$1.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory$2.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/manager/factory/AsyncFactory.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/web/service/PermissionService.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysPasswordService.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysPermissionService.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/web/service/SysRegisterService.class


BIN
ruoyi-framework/target/classes/com/ruoyi/framework/web/service/UserDetailsServiceImpl.class


+ 0 - 3
ruoyi-framework/target/maven-archiver/pom.properties

@@ -1,3 +0,0 @@
-artifactId=ruoyi-framework
-groupId=com.ruoyi
-version=3.9.1

BIN
ruoyi-framework/target/ruoyi-framework-3.9.1.jar


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/config/GenConfig.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/controller/GenController.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/domain/GenTable.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/domain/GenTableColumn.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/service/GenTableColumnServiceImpl.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/service/GenTableServiceImpl.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/util/GenUtils.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/util/VelocityInitializer.class


BIN
ruoyi-generator/target/classes/com/ruoyi/generator/util/VelocityUtils.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/controller/SysJobController.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/controller/SysJobLogController.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/domain/SysJob.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/domain/SysJobLog.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/service/impl/SysJobServiceImpl.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/task/RyTask.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/AbstractQuartzJob.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/CronUtils.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/JobInvokeUtil.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/QuartzDisallowConcurrentExecution.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/QuartzJobExecution.class


BIN
ruoyi-quartz/target/classes/com/ruoyi/quartz/util/ScheduleUtils.class


+ 0 - 3
ruoyi-quartz/target/maven-archiver/pom.properties

@@ -1,3 +0,0 @@
-artifactId=ruoyi-quartz
-groupId=com.ruoyi
-version=3.9.1

+ 0 - 17
ruoyi-quartz/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,17 +0,0 @@
-com\ruoyi\quartz\util\QuartzDisallowConcurrentExecution.class
-com\ruoyi\quartz\util\CronUtils.class
-com\ruoyi\quartz\service\impl\SysJobLogServiceImpl.class
-com\ruoyi\quartz\controller\SysJobController.class
-com\ruoyi\quartz\util\ScheduleUtils.class
-com\ruoyi\quartz\service\ISysJobLogService.class
-com\ruoyi\quartz\mapper\SysJobMapper.class
-com\ruoyi\quartz\mapper\SysJobLogMapper.class
-com\ruoyi\quartz\domain\SysJob.class
-com\ruoyi\quartz\domain\SysJobLog.class
-com\ruoyi\quartz\controller\SysJobLogController.class
-com\ruoyi\quartz\task\RyTask.class
-com\ruoyi\quartz\util\AbstractQuartzJob.class
-com\ruoyi\quartz\util\JobInvokeUtil.class
-com\ruoyi\quartz\service\impl\SysJobServiceImpl.class
-com\ruoyi\quartz\service\ISysJobService.class
-com\ruoyi\quartz\util\QuartzJobExecution.class

BIN
ruoyi-quartz/target/ruoyi-quartz-3.9.1.jar


+ 1 - 2
ruoyi-system/src/main/java/com/ruoyi/system/domain/CesiumMapConfig.java

@@ -1,7 +1,6 @@
 package com.ruoyi.system.domain;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
+
 import com.fasterxml.jackson.annotation.JsonProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;

+ 1 - 2
ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedEquipment.java

@@ -2,8 +2,7 @@ package com.ruoyi.system.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 

+ 1 - 2
ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedFacility.java

@@ -2,8 +2,7 @@ package com.ruoyi.system.domain;
 
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 

+ 0 - 4
ruoyi-system/src/main/java/com/ruoyi/system/domain/WatershedModel.java

@@ -1,10 +1,6 @@
 package com.ruoyi.system.domain;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
 

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CesiumMapConfigServiceImpl.java

@@ -1,6 +1,6 @@
 package com.ruoyi.system.service.impl;
 
-import java.util.Date;
+
 import java.util.List;
 import com.ruoyi.common.utils.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;

BIN
ruoyi-system/target/classes/com/ruoyi/system/domain/CesiumMapConfig.class


BIN
ruoyi-system/target/classes/com/ruoyi/system/domain/SysConfig.class


BIN
ruoyi-system/target/classes/com/ruoyi/system/domain/SysLogininfor.class


BIN
ruoyi-system/target/classes/com/ruoyi/system/domain/SysOperLog.class


BIN
ruoyi-system/target/classes/com/ruoyi/system/domain/SysPost.class


Некоторые файлы не были показаны из-за большого количества измененных файлов