From 1e8ccfec6ebcf7787def13165d9932b0cccefc49 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 20 六月 2025 14:34:45 +0800
Subject: [PATCH] 1.文件上传格式调整 2.表格调整

---
 main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql    |   47 +++++++----
 main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql                 |    1 
 ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java                             |   78 ++++++++++++++++---
 basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql            |    1 
 main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql              |   26 +++---
 basic-server/src/main/resources/db/migration/postgresql/V20250603102701__create_table_coal_info.sql             |    1 
 main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql |    5 
 main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql   |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java                                       |    6 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java                              |   20 ++---
 basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql             |   21 ++--
 main-business/src/main/resources/db/migration/postgresql/V20250613093400__create_table_production_master.sql    |    4 
 basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql            |    1 
 main-business/src/main/resources/db/migration/postgresql/V20250604101800__create_table_production.sql           |    2 
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java                                     |   15 ++-
 15 files changed, 143 insertions(+), 87 deletions(-)

diff --git a/basic-server/src/main/resources/db/migration/postgresql/V20250603102701__create_table_coal_info.sql b/basic-server/src/main/resources/db/migration/postgresql/V20250603102701__create_table_coal_info.sql
index 85d44bd..fa5fdf7 100644
--- a/basic-server/src/main/resources/db/migration/postgresql/V20250603102701__create_table_coal_info.sql
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250603102701__create_table_coal_info.sql
@@ -6,7 +6,6 @@
     maintainer_id    int4         NOT NULL    DEFAULT 0,                 -- 缁存姢浜猴紝涓嶅厑璁镐负绌�
     maintenance_date DATE         NOT NULL,                              -- 缁存姢鏃ユ湡锛屼笉鍏佽涓虹┖
 
-    -- 鏂板瀛楁
     deleted          int4         NOT NULL    DEFAULT 0,                 -- 鏄惁鍒犻櫎锛堣蒋鍒犻櫎鏍囧織锛�
     create_by        VARCHAR(255),                                       -- 鍒涘缓浜�
     create_time      TIMESTAMP WITHOUT TIME ZONE, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
diff --git a/basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql b/basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql
index f5fdb5b..8e04bea 100644
--- a/basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql
@@ -2,7 +2,6 @@
 CREATE TABLE coal_field
 (
     id                BIGSERIAL PRIMARY KEY,                              -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
-
     fields            VARCHAR(255) NOT NULL,                              --鐓よ川瀛楁
     field_name        VARCHAR(255) NOT NULL,                              -- 鐓よ川鎻忚堪
     field_description VARCHAR(255) NOT NULL,                              -- 鐓よ川鎻忚堪
diff --git a/basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql b/basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql
index d339eec..2d4170c 100644
--- a/basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql
@@ -1,17 +1,17 @@
 -- 鍒涘缓鐓よ川淇℃伅琛�
 CREATE TABLE coal_plan
 (
-    id          BIGSERIAL PRIMARY KEY,                              -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
+    id          BIGSERIAL PRIMARY KEY,           -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
+    plan        VARCHAR(255) NOT NULL,           --鐓よ川鏂规
+    field_ids   VARCHAR(255) NOT NULL,           --鐓よ川鏂规瀛楁id
+    coal_fields BIGINT       NOT NULL,           -- 鐓よ川鏂规瀛楁
+    scheme_desc VARCHAR(255),                    -- 瀛楁鎻忚堪
 
-    plan        VARCHAR(255) NOT NULL,                              --鐓よ川鏂规
-    field_ids        VARCHAR(255) NOT NULL,                              --鐓よ川鏂规瀛楁id
-    coal_fields BIGINT       NOT NULL,                              -- 鐓よ川鏂规瀛楁
-
-    deleted     INT          NOT NULL    DEFAULT 0,                 -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
-    create_by   VARCHAR(255),                                       -- 鍒涘缓浜虹敤鎴峰悕
-    create_time TIMESTAMP WITHOUT TIME ZONE, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
-    update_by   VARCHAR(255),                                       -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
-    update_time TIMESTAMP WITHOUT TIME ZONE  -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+    deleted     INT          NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
+    create_by   VARCHAR(255),                    -- 鍒涘缓浜虹敤鎴峰悕
+    create_time TIMESTAMP WITHOUT TIME ZONE,     -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
+    update_by   VARCHAR(255),                    -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
+    update_time TIMESTAMP WITHOUT TIME ZONE      -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
 );
 
 -- 琛ㄦ敞閲�
@@ -22,6 +22,7 @@
 COMMENT ON COLUMN coal_plan.plan IS '鐓よ川鏂规';
 COMMENT ON COLUMN coal_plan.coal_fields IS '鐓よ川鏂规瀛楁';
 COMMENT ON COLUMN coal_plan.field_ids IS '鐓よ川鏂规瀛楁id';
+COMMENT ON COLUMN coal_plan.scheme_desc IS '瀛楁鎻忚堪';
 COMMENT ON COLUMN coal_plan.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
 COMMENT ON COLUMN coal_plan.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
 COMMENT ON COLUMN coal_plan.create_time IS '璁板綍鍒涘缓鏃堕棿';
diff --git a/basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql b/basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql
index 16355ac..0079081 100644
--- a/basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql
@@ -2,7 +2,6 @@
 CREATE TABLE coal_value
 (
     id          BIGSERIAL PRIMARY KEY,           -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
-
     plan_id     VARCHAR(255) NOT NULL,           --鍏宠仈鐓よ川鏂规涓婚敭ID
     coal_value  VARCHAR(255) NOT NULL,           -- 瀛楁鍊�
     fields      VARCHAR(255) NOT NULL,           -- 瀛楁
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250604101800__create_table_production.sql b/main-business/src/main/resources/db/migration/postgresql/V20250604101800__create_table_production.sql
index 2f9b09e..c1e6c28 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250604101800__create_table_production.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250604101800__create_table_production.sql
@@ -4,7 +4,6 @@
     id                      BIGSERIAL PRIMARY KEY,             -- 涓婚敭ID
     production_master_id    BIGINT         NOT NULL DEFAULT 0, -- 鐢熶骇涓昏〃ID
     coal_id                 BIGINT         NOT NULL DEFAULT 0, -- 鐓ょID
-    coal                    VARCHAR(50)    NOT NULL,           -- 鐓ょ
     production_quantity     INT            NOT NULL,           -- 鐢熶骇鏁伴噺
     labor_cost              DECIMAL(10, 2) NOT NULL,           -- 浜哄伐鎴愭湰
     energy_consumption_cost DECIMAL(10, 2) NOT NULL,           -- 鑳借�楁垚鏈�
@@ -28,7 +27,6 @@
 -- 娣诲姞瀛楁娉ㄩ噴
 COMMENT ON COLUMN production.id IS '涓婚敭ID';
 COMMENT ON COLUMN production.coal_id IS '鐓ょID';
-COMMENT ON COLUMN production.coal IS '鐓ょ';
 COMMENT ON COLUMN production.production_quantity IS '鐢熶骇鏁伴噺';
 COMMENT ON COLUMN production.labor_cost IS '浜哄伐鎴愭湰';
 COMMENT ON COLUMN production.energy_consumption_cost IS '鑳借�楁垚鏈�';
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql b/main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql
index 37bbf2e..97c44c1 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250604104500__create_table_pending_inventory.sql
@@ -1,27 +1,33 @@
 -- 鍒涘缓寰呭叆搴撹〃
 CREATE TABLE pending_inventory
 (
-    id                        BIGSERIAL PRIMARY KEY,                             -- 涓婚敭ID
-    supplier_name             VARCHAR(255)   NOT NULL,                           -- 渚涜揣鍟嗗悕绉�
-    coal                      VARCHAR(50)    NOT NULL,                           -- 鐓ょ
-    unit                      VARCHAR(50)    NOT NULL,                           -- 鍗曚綅
-    inventory_quantity        DECIMAL(10, 2) NOT NULL,                           -- 搴撳瓨鏁伴噺
-    price_including_tax       DECIMAL(10, 2) NOT NULL,                           -- 鍗曚环锛堝惈绋庯級
-    total_price_including_tax DECIMAL(10, 2) NOT NULL,                           -- 鎬讳环锛堝惈绋庯級
-    registrant                VARCHAR(50)    NOT NULL,                           -- 鐧昏浜�
-    registration_time         TIMESTAMP      NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 鐧昏鏃堕棿
+    id                         BIGSERIAL PRIMARY KEY,                            -- 涓婚敭ID
+    supplier_name              VARCHAR(255)               NOT NULL,              -- 渚涜揣鍟嗗悕绉�
+    coal                       VARCHAR(50)                NOT NULL,              -- 鐓ょ
+    unit                       VARCHAR(50)                NOT NULL,              -- 鍗曚綅
+    inventory_quantity         NUMERIC(10,2)              NOT NULL,              -- 搴撳瓨鏁伴噺
+    price_including_tax        NUMERIC(10,2)              NOT NULL,              -- 鍗曚环锛堝惈绋庯級
+    total_price_including_tax  NUMERIC(10,2)              NOT NULL,              -- 鎬讳环锛堝惈绋庯級
+    registrant                 VARCHAR(50),                                      -- 鐧昏浜�
+    registration_time          TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP,          -- 鐧昏鏃堕棿
+    price_excluding_tax        VARCHAR(255),                                     -- 鍗曚环锛堜笉鍚◣锛�
+    total_price_excluding_tax  VARCHAR(255),                                     -- 鎬讳环锛堜笉鍚◣锛�
+    registrant_id              VARCHAR(32),                                      -- 鐧昏浜篒D
+    registration_date          DATE,                                             -- 鐧昏鏃ユ湡
+    supplier_id                BIGINT,                                           -- 渚涜揣鍟咺D
+    coal_id                    BIGINT,                                            -- 鐓ょID
 
-    deleted                   INT            NOT NULL DEFAULT 0,                 -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
-    create_by                 VARCHAR(255),                                      -- 鍒涘缓浜虹敤鎴峰悕
-    create_time               TIMESTAMP WITHOUT TIME ZONE,                       -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
-    update_by                 VARCHAR(255),                                      -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
-    update_time               TIMESTAMP WITHOUT TIME ZONE                        -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+    deleted                    INTEGER         DEFAULT 0,                        -- 杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�
+    create_by                  VARCHAR(255),                                     -- 鍒涘缓璇ヨ褰曠殑鐢ㄦ埛
+    create_time                TIMESTAMP(6),                                     -- 璁板綍鍒涘缓鏃堕棿
+    update_by                  VARCHAR(255),                                     -- 鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�
+    update_time                TIMESTAMP(6)                                     -- 璁板綍鏈�鍚庢洿鏂版椂闂�
+
 );
 
--- 娣诲姞琛ㄦ敞閲�
 COMMENT ON TABLE pending_inventory IS '寰呭叆搴撹〃';
 
--- 娣诲姞瀛楁娉ㄩ噴
+-- 瀛楁娉ㄩ噴
 COMMENT ON COLUMN pending_inventory.id IS '涓婚敭ID';
 COMMENT ON COLUMN pending_inventory.supplier_name IS '渚涜揣鍟嗗悕绉�';
 COMMENT ON COLUMN pending_inventory.coal IS '鐓ょ';
@@ -31,9 +37,16 @@
 COMMENT ON COLUMN pending_inventory.total_price_including_tax IS '鎬讳环锛堝惈绋庯級';
 COMMENT ON COLUMN pending_inventory.registrant IS '鐧昏浜�';
 COMMENT ON COLUMN pending_inventory.registration_time IS '鐧昏鏃堕棿';
+COMMENT ON COLUMN pending_inventory.price_excluding_tax IS '鍗曚环锛堜笉鍚◣锛�';
+COMMENT ON COLUMN pending_inventory.total_price_excluding_tax IS '鎬讳环锛堜笉鍚◣锛�';
+COMMENT ON COLUMN pending_inventory.registrant_id IS '鐧昏浜篒D';
+COMMENT ON COLUMN pending_inventory.registration_date IS '鐧昏鏃ユ湡';
+COMMENT ON COLUMN pending_inventory.supplier_id IS '渚涜揣鍟咺D';
+COMMENT ON COLUMN pending_inventory.coal_id IS '鐓ょID';
 
 COMMENT ON COLUMN pending_inventory.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
 COMMENT ON COLUMN pending_inventory.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
 COMMENT ON COLUMN pending_inventory.create_time IS '璁板綍鍒涘缓鏃堕棿';
 COMMENT ON COLUMN pending_inventory.update_by IS '鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�';
-COMMENT ON COLUMN pending_inventory.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
\ No newline at end of file
+COMMENT ON COLUMN pending_inventory.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
+
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql b/main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql
index 94908ff..a8043a8 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250604111200__create_table_official_inventory.sql
@@ -14,6 +14,7 @@
     registrant_id             VARCHAR(50)    NOT NULL,           -- 鐧昏浜篿d
     type             VARCHAR(50)    NOT NULL,           -- 鐧昏浜篿d
     pending_id                BIGINT,                            -- 寰呭叆搴搃d
+    merge_id                BIGINT,                            -- 鍚堝苟id
     registration_date         TIMESTAMP WITHOUT TIME ZONE,
 
     deleted                   INT            NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
@@ -37,6 +38,7 @@
 COMMENT ON COLUMN official_inventory.pending_replenishment IS '寰呰ˉ搴�';
 COMMENT ON COLUMN official_inventory.registrant_id IS '鐧昏浜篿d';
 COMMENT ON COLUMN official_inventory.registration_date IS '鐧昏鏃ユ湡';
+COMMENT ON COLUMN official_inventory.merge_id IS '鍚堝苟id';
 
 COMMENT ON COLUMN official_inventory.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
 COMMENT ON COLUMN official_inventory.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql b/main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql
index b18e909..4d56603 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250610161312__create_table_tree.sql
@@ -2,7 +2,6 @@
 CREATE TABLE tree
 (
     id          BIGSERIAL PRIMARY KEY,                              -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
-
     name        VARCHAR(255) NOT NULL,                              -- 鍚嶇О
     parent_id   BIGINT,                                             -- 鐖秈d
 
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql b/main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql
index 7cd894a..dba4929 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250610161313__create_table_archive.sql
@@ -1,21 +1,20 @@
 -- 鍒涘缓妗f琛�
 CREATE TABLE archive
 (
-    id          BIGSERIAL PRIMARY KEY,                              -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
+    id          BIGSERIAL PRIMARY KEY,                                 -- 涓婚敭ID
+    name        VARCHAR(255)                          NOT NULL,        -- 妗f鍚嶇О
+    type        VARCHAR(255)                          NOT NULL,        -- 妗f绫诲瀷锛屼緥濡傦細鍚堝悓銆佹姤鍛娿�佽瘉浠剁瓑
+    status      VARCHAR(50)                           NOT NULL,        -- 妗f鐘舵�侊紝渚嬪锛氭湁鏁堛�佽繃鏈熴�佷綔搴�
 
-    name        VARCHAR(255) NOT NULL,                              -- 妗f鍚嶇О
-    type        VARCHAR(255) NOT NULL,                              -- 妗f绫诲瀷锛堝锛氬悎鍚屻�佹姤鍛娿�佽瘉浠剁瓑锛�
-    status      VARCHAR(50)  NOT NULL,                              -- 鐘舵�侊紙濡傦細鏈夋晥銆佽繃鏈熴�佷綔搴燂級
-
-    deleted     INT          NOT NULL    DEFAULT 0,                 -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
-    create_by   VARCHAR(255),                                       -- 鍒涘缓浜虹敤鎴峰悕
-    create_time TIMESTAMP WITHOUT TIME ZONE, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
-    update_by   VARCHAR(255),                                       -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
-    update_time TIMESTAMP WITHOUT TIME ZONE  -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿-- 鐧昏鏃ユ湡
+    deleted     INTEGER                     DEFAULT 0 NOT NULL,        -- 杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�
+    create_by   VARCHAR(255),                                          -- 鍒涘缓璇ヨ褰曠殑鐢ㄦ埛
+    create_time TIMESTAMP(6),                                          -- 璁板綍鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
+    update_by   VARCHAR(255),                                          -- 鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�
+    update_time TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+    tree_id     BIGINT                                                 -- 鏍戣妭鐐笽D
 );
 
--- 琛ㄦ敞閲�
-COMMENT ON TABLE archive IS '妗f淇℃伅琛紝璁板綍绯荤粺涓悇绫绘。妗堢殑鍩烘湰淇℃伅';
+COMMENT ON TABLE archive IS '妗f淇℃伅琛�';
 
 -- 瀛楁娉ㄩ噴
 COMMENT ON COLUMN archive.id IS '涓婚敭ID';
@@ -26,4 +25,5 @@
 COMMENT ON COLUMN archive.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
 COMMENT ON COLUMN archive.create_time IS '璁板綍鍒涘缓鏃堕棿';
 COMMENT ON COLUMN archive.update_by IS '鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�';
-COMMENT ON COLUMN archive.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
\ No newline at end of file
+COMMENT ON COLUMN archive.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
+COMMENT ON COLUMN archive.tree_id IS '鏍戣妭鐐笽D';
\ No newline at end of file
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250613093400__create_table_production_master.sql b/main-business/src/main/resources/db/migration/postgresql/V20250613093400__create_table_production_master.sql
index f5343db..01a1ba2 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250613093400__create_table_production_master.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250613093400__create_table_production_master.sql
@@ -2,7 +2,7 @@
 CREATE TABLE production_master
 (
     id                      BIGSERIAL PRIMARY KEY,             -- 涓婚敭ID
-    coal                    VARCHAR(50)    NOT NULL,           -- 鐓ょ
+    coal_id                 BIGINT,                            -- 鐓ょID
     production_quantity     INT            NOT NULL,           -- 鐢熶骇鏁伴噺
     labor_cost              DECIMAL(10, 2) NOT NULL,           -- 浜哄伐鎴愭湰
     energy_consumption_cost DECIMAL(10, 2) NOT NULL,           -- 鑳借�楁垚鏈�
@@ -24,7 +24,7 @@
 
 -- 娣诲姞瀛楁娉ㄩ噴
 COMMENT ON COLUMN production_master.id IS '涓婚敭ID';
-COMMENT ON COLUMN production_master.coal IS '鐓ょ';
+COMMENT ON COLUMN production_master.coal_id IS '鐓ょID';
 COMMENT ON COLUMN production_master.production_quantity IS '鐢熶骇鏁伴噺';
 COMMENT ON COLUMN production_master.labor_cost IS '浜哄伐鎴愭湰';
 COMMENT ON COLUMN production_master.energy_consumption_cost IS '鑳借�楁垚鏈�';
diff --git a/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql b/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql
index 37318d5..2243aab 100644
--- a/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql
+++ b/main-business/src/main/resources/db/migration/postgresql/V20250613112800__create_table_production_inventory.sql
@@ -4,10 +4,9 @@
     id                   BIGSERIAL PRIMARY KEY,          -- 涓婚敭ID
     production_master_id BIGINT      NOT NULL DEFAULT 0, -- 鐢熶骇涓昏〃ID
     coal_id              BIGINT      NOT NULL DEFAULT 0, -- 鐓ょID
-    coal                 VARCHAR(50) NOT NULL,           -- 鐓ょ
+    official_id              BIGINT      NOT NULL DEFAULT 0, -- 搴撳瓨ID
     inventory_quantity   INT         NOT NULL,           -- 搴撳瓨鏁伴噺
     used_quantity        INT         NOT NULL,           -- 浣跨敤鏁伴噺
-
 
     deleted              INT         NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
     create_by            VARCHAR(255),                   -- 鍒涘缓浜虹敤鎴峰悕
@@ -23,7 +22,7 @@
 COMMENT ON COLUMN production_inventory.id IS '涓婚敭ID';
 COMMENT ON COLUMN production_inventory.production_master_id IS '鐢熶骇涓昏〃ID';
 COMMENT ON COLUMN production_inventory.coal_id IS '鐓ょID';
-COMMENT ON COLUMN production_inventory.coal IS '鐓ょ';
+COMMENT ON COLUMN production_inventory.official_id IS '搴撳瓨ID';
 COMMENT ON COLUMN production_inventory.inventory_quantity IS '搴撳瓨鏁伴噺';
 COMMENT ON COLUMN production_inventory.used_quantity IS '浣跨敤鏁伴噺';
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
index 1c51d86..cf2094e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -10,16 +10,19 @@
 import com.ruoyi.basic.mapper.StorageBlobMapper;
 import com.ruoyi.basic.service.StorageBlobService;
 import com.ruoyi.common.core.domain.MinioResult;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.exception.file.InvalidExtensionException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.MinioUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.io.FilenameUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -53,29 +56,76 @@
         List<StorageBlobDTO> storageBlobDTOs = new ArrayList<>();
         for (MultipartFile file : files) {
             try {
+                validateFileExtension(file);
+
                 MinioResult res = minioUtils.upload(bucketName, file, false);
-                StorageBlobDTO dto = new StorageBlobDTO();
-                dto.setContentType(file.getContentType());
-                dto.setBucketFilename(res.getBucketFileName());
-                dto.setOriginalFilename(res.getOriginalName());
-                dto.setByteSize(file.getSize());
-                dto.setKey(IdUtils.simpleUUID());
-                dto.setBucketName(bucketName);
-                dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
-                dto.setDownloadUrl(minioUtils.getDownloadUrl(res.getBucketFileName(), bucketName));
-                if (type != null){
-                    dto.setType(type);
-                }
-                // 鎻掑叆鏁版嵁搴�
+
+                StorageBlobDTO dto = buildStorageBlobDTO(file, res, bucketName, type);
+
                 storageBlobMapper.insert(dto);
                 storageBlobDTOs.add(dto);
+
             } catch (InvalidExtensionException e) {
-                throw new RuntimeException("minio鏂囦欢涓婁紶寮傚父锛�" + e);
+                throw new RuntimeException("涓嶆敮鎸佺殑鏂囦欢绫诲瀷锛�" + file.getOriginalFilename(), e);
+            } catch (Exception e) {
+                throw new RuntimeException("涓婁紶鏂囦欢澶辫触锛�" + file.getOriginalFilename(), e);
             }
         }
         return storageBlobDTOs;
     }
 
+    private void validateFileExtension(MultipartFile file) throws InvalidExtensionException {
+        String filename = file.getOriginalFilename();
+        String extension = FilenameUtils.getExtension(filename).toLowerCase();
+        List<String> allowedExtensions = Arrays.asList(
+                // 鍥剧墖
+                "jpg", "jpeg", "png", "gif", "bmp", "webp", "tiff", "ico", "svg",
+
+                // 鏂囨。
+                "pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "rtf", "md", "csv", "odt",
+
+                // 瑙嗛
+                "mp4", "mov", "avi", "wmv", "flv", "mkv", "webm", "mpeg", "3gp","MOV",
+
+                // 闊抽
+                "mp3", "wav", "ogg", "aac", "flac", "m4a", "wma", "amr",
+
+                // 鍘嬬缉鍖�
+                "zip", "rar", "7z", "tar", "gz", "bz2", "xz",
+
+                // 缂栫▼浠g爜鏂囦欢
+                "java", "py", "js", "ts", "html", "css", "cpp", "c", "cs", "json", "xml", "sql", "yaml", "yml", "sh", "bat",
+
+                // 瀹夎绋嬪簭 & 浜岃繘鍒�
+                "exe", "apk", "dmg", "msi", "bin", "iso",
+
+                // 璁捐绫�
+                "psd", "ai", "xd", "sketch", "fig"
+        );
+
+        if (!allowedExtensions.contains(extension)) {
+            throw new BaseException("鏂囦欢绫诲瀷涓嶈鍏佽锛�" + extension);
+        }
+    }
+
+    private StorageBlobDTO buildStorageBlobDTO(MultipartFile file, MinioResult res, String bucketName, Long type) {
+        StorageBlobDTO dto = new StorageBlobDTO();
+        dto.setContentType(file.getContentType());
+        dto.setBucketFilename(res.getBucketFileName());
+        dto.setOriginalFilename(res.getOriginalName());
+        dto.setByteSize(file.getSize());
+        dto.setKey(IdUtils.simpleUUID());
+        dto.setBucketName(bucketName);
+        dto.setUrl(minioUtils.getPreviewUrl(res.getBucketFileName(), bucketName, false));
+        dto.setDownloadUrl(minioUtils.getDownloadUrl(res.getBucketFileName(), bucketName));
+
+        if (type != null) {
+            dto.setType(type);
+        }
+
+        return dto;
+    }
+
     @Override
     public int deleteStorageBlobs(StorageAttachment attachment) {
         List<StorageAttachment> attachments = storageAttachmentMapper.selectList(new LambdaQueryWrapper<StorageAttachment>()
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
index d5455c4..682d43b 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
@@ -1,11 +1,5 @@
 package com.ruoyi.common.utils.file;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.Objects;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException;
@@ -14,6 +8,13 @@
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.uuid.Seq;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.Objects;
 
 /**
  * 鏂囦欢涓婁紶宸ュ叿绫�
@@ -25,7 +26,7 @@
     /**
      * 榛樿澶у皬 50M
      */
-    public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L;
+    public static final long DEFAULT_MAX_SIZE = 1000 * 1024 * 1024L;
 
     /**
      * 榛樿鐨勬枃浠跺悕鏈�澶ч暱搴� 100
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
index f968f1a..c050fef 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java
@@ -22,9 +22,9 @@
     public static final String[] FLASH_EXTENSION = { "swf", "flv" };
 
     public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
-            "asf", "rm", "rmvb" };
+            "asf", "rm", "rmvb","mov","MOV" };
 
-    public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
+    public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb","mov","MOV" };
 
     public static final String[] DEFAULT_ALLOWED_EXTENSION = {
             // 鍥剧墖
@@ -34,7 +34,7 @@
             // 鍘嬬缉鏂囦欢
             "rar", "zip", "gz", "bz2",
             // 瑙嗛鏍煎紡
-            "mp4", "avi", "rmvb",
+            "mp4", "avi", "rmvb","mov","MOV",
             // pdf
             "pdf" };
 
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 6b82043..f0d3ea4 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -1,12 +1,5 @@
 package com.ruoyi.framework.web.service;
 
-import jakarta.annotation.Resource;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.stereotype.Component;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.UserConstants;
@@ -14,11 +7,7 @@
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.exception.user.BlackListException;
-import com.ruoyi.common.exception.user.CaptchaException;
-import com.ruoyi.common.exception.user.CaptchaExpireException;
-import com.ruoyi.common.exception.user.UserNotExistsException;
-import com.ruoyi.common.exception.user.UserPasswordNotMatchException;
+import com.ruoyi.common.exception.user.*;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.MessageUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -28,6 +17,13 @@
 import com.ruoyi.framework.security.context.AuthenticationContextHolder;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
+import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Component;
 
 /**
  * 鐧诲綍鏍¢獙鏂规硶

--
Gitblit v1.9.3