From 94509204d25f7c0ad213ae2322be2bd5bfd17424 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 14 七月 2025 16:30:28 +0800
Subject: [PATCH] 1.初始化配煤计算器数据 2。配煤到待入库

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/init/MyStartupRunner.java |   87 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 80 insertions(+), 7 deletions(-)

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 f56a37d..771817d 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,12 +1,15 @@
 package com.ruoyi.web.controller.init;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.basic.dto.CoalFieldDto;
+import com.ruoyi.basic.dto.CoalPlanDto;
 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.basic.mapper.*;
+import com.ruoyi.basic.service.CoalFieldService;
+import com.ruoyi.basic.service.CoalPlanService;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.web.controller.init.dto.AreaDTO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -16,6 +19,10 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 @Slf4j
 @Component
@@ -26,6 +33,10 @@
     private CityMapper cityMapper;
     @Autowired
     private DistrictMapper districtMapper;
+    @Autowired
+    private CoalFieldService coalFieldService;
+    @Autowired
+    private CoalPlanService coalPlanService;
 
     /**
      * 椤圭洰鍚姩鏃堕渶瑕佹墽琛岀殑鏂规硶
@@ -37,6 +48,8 @@
     public void run(String... args) throws Exception {
         // 鍒濆鍖栫渷甯傚尯
         initRegion();
+        // 鍒濆鏂板閰嶇叅璁$畻鍣ㄤ腑鐨勭叅绉嶅瓧娈靛拰鏂规
+        initCoalFields();
     }
 
     private void initRegion() {
@@ -96,14 +109,74 @@
                 });
 
 
-                provinceMapper.insertOrUpdate(provinces);
-                cityMapper.insertOrUpdate(cities);
-                districtMapper.insertOrUpdate(districts);
-
+                provinceMapper.insert(provinces);
+                cityMapper.insert(cities);
+                districtMapper.insert(districts);
                 log.info("鍦板尯淇℃伅鍒濆鍖栫粨鏉�");
             }
         }
 
 
     }
+
+    private void initCoalFields() {
+        try {
+            // 1. 鍒濆鍖栧瓧娈甸�昏緫
+            Supplier<CoalFieldDto> dtoSupplier = CoalFieldDto::new; // 鍋囪瀛樺湪鏃犲弬鏋勯�犲嚱鏁�
+
+            List<CoalFieldDto> fields = Stream.of("鍙戠儹閲�", "纭垎", "鐏板垎", "姘村垎")
+                    .map(fieldName -> {
+                        CoalFieldDto dto = dtoSupplier.get();
+                        dto.setFieldName(fieldName); // 鍋囪瀛樺湪 setFieldName 鏂规硶
+                        dto.setFieldDescription("閰嶇叅璁$畻鍣ㄥ獟璐ㄥ瓧娈�");
+                        return dto;
+                    })
+                    .toList();
+
+            // 2. 淇濆瓨瀛楁锛堝鏋滀笉瀛樺湪锛�
+            Set<String> existingNames = coalFieldService.getFieldNamesByNames(
+                    fields.stream().map(CoalFieldDto::getFieldName).collect(Collectors.toSet())
+            );
+
+            fields.forEach(field -> {
+                if (!existingNames.contains(field.getFieldName())) {
+                    coalFieldService.addOrEditCoalField(field);
+                }
+            });
+
+            // 3. 鏌ヨ鎵�鏈夊瓧娈礗D
+            List<CoalFieldDto> allFields = coalFieldService.getFieldsByNames(
+                    fields.stream().map(CoalFieldDto::getFieldName).collect(Collectors.toSet())
+            );
+
+            // 4. 鍒涘缓鏂规
+
+            String planName = "閰嶇叅璁$畻鍣ㄦ柟妗�";
+            boolean planExists = coalPlanService.checkPlanExists(allFields.stream()
+                    .map(f -> f.getId().toString())
+                    .collect(Collectors.joining(",")));
+
+            if (!planExists) {
+                // 鍒涘缓鏂版柟妗�
+                CoalPlanDto planDto = new CoalPlanDto();
+                planDto.setPlan(planName);
+                planDto.setCoalFields(allFields.stream()
+                        .map(CoalFieldDto::getFields)
+                        .collect(Collectors.joining(",")));
+                planDto.setFieldIds(allFields.stream()
+                        .map(f -> f.getId().toString())
+                        .collect(Collectors.joining(",")));
+                planDto.setSchemeDesc("绯荤粺鐢熸垚閰嶇叅璁$畻鍣ㄦ墍闇�瀛楁鏂规");
+
+                coalPlanService.addOrEditCoalPlan(planDto);
+                log.info("鎴愬姛鍒涘缓閰嶇叅璁$畻鍣ㄦ柟妗�");
+            } else {
+                log.info("閰嶇叅璁$畻鍣ㄦ柟妗堝凡瀛樺湪锛岃烦杩囧垱寤�");
+            }
+        } catch (Exception e) {
+            // 璁板綍绯荤粺寮傚父鏃ュ織锛屽苟杞崲涓轰笟鍔″紓甯告姏鍑猴紙瑙﹀彂鍥炴粴锛�
+            log.error("閰嶇叅璁$畻鍣ㄥ垵濮嬪寲澶辫触", e);
+            throw new BaseException("鍒濆鍖栭厤鐓ゆ柟妗堝け璐ワ紝璇风◢鍚庨噸璇�");
+        }
+    }
 }

--
Gitblit v1.9.3