From 718e95b4d0fa5cda71724a48a4c34114c57fa523 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期二, 03 六月 2025 12:58:03 +0800
Subject: [PATCH] 区域代码初始化

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java |  102 +++++++++++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/basic/entity/District.java              |   17 +++++
 ruoyi-admin/src/main/resources/doc/area.json                                 |    0 
 ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql    |   12 +--
 ruoyi-system/src/main/java/com/ruoyi/basic/entity/City.java                  |   17 +++++
 pom.xml                                                                      |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/dto/AreaDTO.java     |   12 ++++
 ruoyi-system/src/main/java/com/ruoyi/basic/entity/Province.java              |   17 +++++
 8 files changed, 162 insertions(+), 17 deletions(-)

diff --git a/pom.xml b/pom.xml
index 6f6211f..bae27b4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -224,7 +224,7 @@
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-core</artifactId>
-            <version>3.5.12</version> <!-- 涓庝綘鐨� Spring Boot 鍏煎鐨勭増鏈� -->
+            <version>3.5.12</version>
         </dependency>
 
         <!--mybatis-plus-->
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java
index 9129ba7..f56a37d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java
@@ -1,11 +1,109 @@
 package com.ruoyi.web.controller.init;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.basic.entity.City;
+import com.ruoyi.basic.entity.District;
+import com.ruoyi.basic.entity.Province;
+import com.ruoyi.basic.mapper.CityMapper;
+import com.ruoyi.basic.mapper.DistrictMapper;
+import com.ruoyi.basic.mapper.ProvinceMapper;
+import com.ruoyi.web.controller.init.dto.AreaDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.CommandLineRunner;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
 @Component
-public class MyStartupRunner implements CommandLineRunner{
+public class MyStartupRunner implements CommandLineRunner {
+    @Autowired
+    private ProvinceMapper provinceMapper;
+    @Autowired
+    private CityMapper cityMapper;
+    @Autowired
+    private DistrictMapper districtMapper;
+
+    /**
+     * 椤圭洰鍚姩鏃堕渶瑕佹墽琛岀殑鏂规硶
+     *
+     * @param args
+     * @throws Exception
+     */
     @Override
     public void run(String... args) throws Exception {
-        System.out.println("锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛侊紒锛�");
+        // 鍒濆鍖栫渷甯傚尯
+        initRegion();
+    }
+
+    private void initRegion() {
+        // 鍒ゆ柇鏄槸鍚︽湁鐪佸競鍖轰俊鎭�
+        List<Province> olds = provinceMapper.selectList(null);
+        if (olds.isEmpty()) {
+            // 璇诲彇鍦板尯json鏂囦欢
+            List<AreaDTO> areaDTOS = null;
+            try {
+                // 浠� resources/doc/ 鍔犺浇 JSON 鏂囦欢
+                ClassPathResource resource = new ClassPathResource("doc/area.json");
+
+                ObjectMapper objectMapper = new ObjectMapper();
+                areaDTOS = objectMapper.readValue(
+                        resource.getInputStream(),
+                        objectMapper.getTypeFactory().constructCollectionType(List.class, AreaDTO.class)
+                );
+            } catch (Exception e) {
+                log.error("璇诲彇鍦板尯json鏂囦欢澶辫触:" + e);
+            }
+
+            List<Province> provinces = new ArrayList<>();
+            List<City> cities = new ArrayList<>();
+            List<District> districts = new ArrayList<>();
+
+            if (!areaDTOS.isEmpty()) {
+                log.info("鍦板尯淇℃伅鍒濆鍖栧紑濮�");
+
+                // 鐪�
+                areaDTOS.forEach(areaDTO -> {
+                    Province province = new Province();
+                    province.setId(Long.parseLong(areaDTO.getNo()));
+                    province.setName(areaDTO.getName());
+                    provinces.add(province);
+
+                    if (!areaDTO.getChildren().isEmpty()) {
+                        // 甯�
+                        areaDTO.getChildren().forEach(cityDTO -> {
+                            City city = new City();
+                            city.setId(Long.parseLong(cityDTO.getNo()));
+                            city.setName(cityDTO.getName());
+                            city.setProvinceId(Long.valueOf(areaDTO.getNo()));
+                            cities.add(city);
+
+                            if (!cityDTO.getChildren().isEmpty()) {
+                                // 鍖�
+                                cityDTO.getChildren().forEach(districtDTO -> {
+                                    District district = new District();
+                                    district.setId(Long.parseLong(districtDTO.getNo()));
+                                    district.setName(districtDTO.getName());
+                                    district.setCityId(Long.valueOf(cityDTO.getNo()));
+                                    districts.add(district);
+                                });
+                            }
+                        });
+                    }
+                });
+
+
+                provinceMapper.insertOrUpdate(provinces);
+                cityMapper.insertOrUpdate(cities);
+                districtMapper.insertOrUpdate(districts);
+
+                log.info("鍦板尯淇℃伅鍒濆鍖栫粨鏉�");
+            }
+        }
+
+
     }
 }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/dto/AreaDTO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/dto/AreaDTO.java
new file mode 100644
index 0000000..ba17ff4
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/dto/AreaDTO.java
@@ -0,0 +1,12 @@
+package com.ruoyi.web.controller.init.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AreaDTO {
+    private String name;
+    private String no;
+    private List<AreaDTO> children;
+}
diff --git a/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql
index 1c42f2e..0062192 100644
--- a/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql
+++ b/ruoyi-admin/src/main/resources/db/beforeSql/postgresql/beforeSQL__sys.sql
@@ -1158,14 +1158,10 @@
 COMMENT ON COLUMN sys_notice.remark IS '澶囨敞';
 
 -- 鎻掑叆鍒濆鍖栨暟鎹�
-INSERT INTO sys_notice (notice_id, notice_title, notice_type, notice_content, status, create_by, create_time, update_by,
-                        update_time, remark)
-VALUES (1, '娓╅Θ鎻愰啋锛�2018-07-01 鑻ヤ緷鏂扮増鏈彂甯冨暒', '2', E'\\x鏂扮増鏈唴瀹�'::bytea, '0', 'admin', NOW(), '', NULL,
-        '绠$悊鍛�'),
-       (2, '缁存姢閫氱煡锛�2018-07-01 鑻ヤ緷绯荤粺鍑屾櫒缁存姢', '1', E'\\x缁存姢鍐呭'::bytea, '0', 'admin', NOW(), '', NULL, '绠$悊鍛�');
-
-
-
+INSERT INTO sys_notice
+VALUES ('1', '娓╅Θ鎻愰啋锛�2018-07-01 鑻ヤ緷鏂扮増鏈彂甯冨暒', '2', '鏂扮増鏈唴瀹�', '0', 'admin', NOW(), '', NULL, '绠$悊鍛�');
+INSERT INTO sys_notice
+VALUES ('2', '缁存姢閫氱煡锛�2018-07-01 鑻ヤ緷绯荤粺鍑屾櫒缁存姢', '1', '缁存姢鍐呭', '0', 'admin', NOW(), '', NULL, '绠$悊鍛�');
 
 -- ----------------------------
 -- 18銆佷唬鐮佺敓鎴愪笟鍔¤〃
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/doc/area.json b/ruoyi-admin/src/main/resources/doc/area.json
similarity index 100%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/doc/area.json
rename to ruoyi-admin/src/main/resources/doc/area.json
diff --git a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/City.java b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/City.java
index fab1b25..6ab5449 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/City.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/City.java
@@ -1,8 +1,11 @@
 package com.ruoyi.basic.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 鍩庡競琛� 瀹炰綋绫�
@@ -12,7 +15,7 @@
  */
 @Data
 @TableName("city")
-public class City extends BaseEntity {
+public class City implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -31,4 +34,14 @@
      */
     @TableField(value = "province_id")
     private Long provinceId;
+
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/District.java b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/District.java
index 112617f..6816bb3 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/District.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/District.java
@@ -1,8 +1,11 @@
 package com.ruoyi.basic.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 鍖鸿〃 瀹炰綋绫�
@@ -12,7 +15,7 @@
  */
 @Data
 @TableName("district")
-public class District extends BaseEntity {
+public class District implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -31,4 +34,14 @@
      */
     @TableField(value = "city_id")
     private Long cityId;
+
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
 }
\ No newline at end of file
diff --git a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/Province.java b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/Province.java
index f818f8f..a067c48 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/basic/entity/Province.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/basic/entity/Province.java
@@ -1,8 +1,11 @@
 package com.ruoyi.basic.entity;
 
 import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
-import com.ruoyi.common.core.domain.BaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
 
 /**
  * 鐪佽〃 瀹炰綋绫�
@@ -12,7 +15,7 @@
  */
 @Data
 @TableName("province")
-public class Province extends BaseEntity {
+public class Province implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -26,4 +29,14 @@
      */
     @TableField(value = "name")
     private String name;
+
+    /** 鍒涘缓鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    /** 鏇存柊鏃堕棿 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
 }
\ No newline at end of file

--
Gitblit v1.9.3