From 388bd216d4eb70b367ada95118d1087b45f07ae3 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 09 六月 2025 17:53:48 +0800
Subject: [PATCH] 1.煤质部分 2.代入库部分
---
main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java | 38 +
basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java | 18
basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql | 31 +
main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java | 40 +
main-business/pom.xml | 4
main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java | 8
basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java | 45 ++
basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalValueServiceImpl.java | 74 +++
basic-server/src/main/java/com/ruoyi/basic/controller/CoalValueController.java | 54 ++
basic-server/src/main/java/com/ruoyi/basic/service/CoalPlanService.java | 28 +
main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java | 8
main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java | 4
basic-server/src/main/java/com/ruoyi/basic/controller/CoalPlanController.java | 63 +++
basic-server/src/main/java/com/ruoyi/basic/entity/CoalPlan.java | 40 ++
basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java | 2
basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalPlanServiceImpl.java | 68 +++
basic-server/src/main/java/com/ruoyi/basic/mapper/CoalValueMapper.java | 18
main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java | 8
basic-server/src/main/java/com/ruoyi/basic/service/CoalValueService.java | 24 +
basic-server/src/main/resources/mapper/CoalPlanMapper.xml | 28 +
basic-server/src/main/java/com/ruoyi/basic/entity/CoalValue.java | 46 ++
basic-server/src/main/resources/mapper/CoalFieldMapper.xml | 28 +
main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java | 42 ++
main-business/src/main/resources/mapper/PendingInventoryMapper.xml | 4
main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java | 51 ++
basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java | 8
basic-server/src/main/resources/mapper/CoalValueMapper.xml | 28 +
basic-server/src/main/java/com/ruoyi/basic/mapper/CoalPlanMapper.java | 18
basic-server/src/main/java/com/ruoyi/basic/dto/CoalValueDto.java | 13
basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java | 28 +
main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java | 11
basic-server/src/main/java/com/ruoyi/basic/controller/CoalFieldController.java | 63 +++
basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java | 107 +++++
main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java | 8
basic-server/src/main/java/com/ruoyi/basic/dto/CoalPlanDto.java | 8
basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql | 27 +
basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql | 28 +
37 files changed, 1,095 insertions(+), 26 deletions(-)
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CoalFieldController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalFieldController.java
new file mode 100644
index 0000000..214c686
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalFieldController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CoalFieldDto;
+import com.ruoyi.basic.entity.CoalField;
+import com.ruoyi.basic.service.CoalFieldService;
+import com.ruoyi.common.core.domain.R;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐓よ川缁存姢瀛楁 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/coalField")
+public class CoalFieldController {
+
+ private CoalFieldService coalFieldService;
+
+ /**
+ * 鐓よ川缁存姢瀛楁鏌ヨ
+ */
+ @GetMapping("/list")
+ public R<IPage<CoalField>> list(Page page, CoalFieldDto coalFieldDto) {
+ IPage<CoalField> list = coalFieldService.selectCoalFieldList(page, coalFieldDto);
+ return R.ok(list);
+ }
+
+ /**
+ * All鐓よ川缁存姢瀛楁鏌ヨ 杩斿洖
+ */
+ @GetMapping("/coalFieldList")
+ public R<List<CoalField>> coalFieldList(CoalFieldDto coalFieldDto) {
+ return R.ok(coalFieldService.selectAllList(coalFieldDto));
+ }
+
+ /**
+ * 鐓よ川缁存姢瀛楁鏂板淇敼
+ */
+ @PostMapping("/addOrEditCoalField")
+ public R addOrEditCoalField(@RequestBody CoalFieldDto coalFieldDto) {
+ return R.ok(coalFieldService.addOrEditCoalField(coalFieldDto));
+ }
+
+ /**
+ * 鐓よ川缁存姢瀛楁鍒犻櫎
+ */
+ @DeleteMapping("/delCoalInfo")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(coalFieldService.delCoalFieldByIds(ids));
+ }
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CoalPlanController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalPlanController.java
new file mode 100644
index 0000000..363eb06
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalPlanController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CoalPlanDto;
+import com.ruoyi.basic.entity.CoalPlan;
+import com.ruoyi.basic.service.CoalPlanService;
+import com.ruoyi.common.core.domain.R;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐓よ川鏂规 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/coalPlan")
+public class CoalPlanController {
+
+ private CoalPlanService coalPlanService;
+
+ /**
+ * 鐓よ川鏂规鏌ヨ
+ */
+ @GetMapping("/list")
+ public R<IPage<CoalPlan>> list(Page page, CoalPlanDto coalPlanDto) {
+ IPage<CoalPlan> list = coalPlanService.selectCoalFieldList(page, coalPlanDto);
+ return R.ok(list);
+ }
+
+ /**
+ * All鐓よ川鏂规鏌ヨ 杩斿洖
+ */
+ @GetMapping("/coalPlanList")
+ public R<List<CoalPlan>> coalPlanList() {
+ return R.ok(coalPlanService.selectAllList());
+ }
+
+ /**
+ * 鐓よ川鏂规鏂板淇敼
+ */
+ @PostMapping("/addOrEditCoalPlan")
+ public R addOrEditCoalPlan(@RequestBody CoalPlanDto coalPlanDto) {
+ return R.ok(coalPlanService.addOrEditCoalPlan(coalPlanDto));
+ }
+
+ /**
+ * 鐓よ川鏂规瀛楁鍒犻櫎
+ */
+ @DeleteMapping("/delCoalPlan")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(coalPlanService.delCoalPlanByIds(ids));
+ }
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CoalValueController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalValueController.java
new file mode 100644
index 0000000..0a30a4c
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CoalValueController.java
@@ -0,0 +1,54 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CoalValueDto;
+import com.ruoyi.basic.entity.CoalValue;
+import com.ruoyi.basic.service.CoalValueService;
+import com.ruoyi.common.core.domain.R;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/basic/coalValue")
+public class CoalValueController {
+
+ private CoalValueService coalValueService;
+
+ /**
+ * 鐓よ川鏂规鏌ヨ
+ */
+ @GetMapping("/list")
+ public R<IPage<CoalValue>> list(Page page, CoalValueDto coalValueDto) {
+ IPage<CoalValue> list = coalValueService.selectCoalFieldList(page, coalValueDto);
+ return R.ok(list);
+ }
+
+
+ /**
+ * 鐓よ川鏂规鍊兼柊澧炰慨鏀�
+ */
+ @PostMapping("/addOrEditCoalValue")
+ public R addOrEditCoalValue(@RequestBody CoalValueDto coalValueDto) {
+ return R.ok(coalValueService.addOrEditCoalValue(coalValueDto));
+ }
+
+ /**
+ * 鐓よ川鏂规瀛楁鍒犻櫎
+ */
+ @DeleteMapping("/delCoalValue")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(coalValueService.delCoalValueByIds(ids));
+ }
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java
new file mode 100644
index 0000000..6defeca
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalFieldDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.entity.CoalField;
+import lombok.Data;
+
+@Data
+public class CoalFieldDto extends CoalField {
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/CoalPlanDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalPlanDto.java
new file mode 100644
index 0000000..7282531
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalPlanDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.entity.CoalPlan;
+import lombok.Data;
+
+@Data
+public class CoalPlanDto extends CoalPlan {
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/CoalValueDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalValueDto.java
new file mode 100644
index 0000000..55d2db8
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/CoalValueDto.java
@@ -0,0 +1,13 @@
+package com.ruoyi.basic.dto;
+
+import com.ruoyi.basic.entity.CoalValue;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class CoalValueDto extends CoalValue {
+
+ private List<Map<String, String>> fieldValue;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java
new file mode 100644
index 0000000..567a88b
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalField.java
@@ -0,0 +1,45 @@
+package com.ruoyi.basic.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.ruoyi.common.core.domain.MyBaseEntity;
+
+/**
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 瀹炰綋绫�
+ *
+ * @author ruoyi
+ * @date 2025-06-09
+ */
+@Data
+@TableName("coal_field")
+public class CoalField extends MyBaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 瀛楁
+ */
+ @TableField(value = "fields")
+ private String fields;
+ /**
+ * 瀛楁鍚�
+ */
+ @TableField(value = "field_name")
+ private String fieldName;
+
+ /**
+ * 瀛楁鍚嶆暟瀛�
+ */
+ @TableField(value = "field_name")
+ private String fieldNumber;
+ /**
+ * 瀛楁鎻忚堪
+ */
+ @TableField(value = "field_description")
+ private String fieldDescription;
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/entity/CoalPlan.java b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalPlan.java
new file mode 100644
index 0000000..0c097ff
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalPlan.java
@@ -0,0 +1,40 @@
+package com.ruoyi.basic.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.ruoyi.common.core.domain.MyBaseEntity;
+
+/**
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 瀹炰綋绫�
+ *
+ * @author ruoyi
+ * @date 2025-06-09
+ */
+@Data
+@TableName("coal_plan")
+public class CoalPlan extends MyBaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+ /**
+ * 鐓よ川鏂规
+ */
+ @TableField(value = "plan")
+ private String plan;
+ /**
+ * 鐓よ川鏂规瀛楁
+ */
+ @TableField(value = "coal_fields")
+ private String coalFields;
+
+ /**
+ * 鐓よ川鏂规瀛楁
+ */
+ @TableField(value = "scheme_desc")
+ private String schemeDesc;
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/entity/CoalValue.java b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalValue.java
new file mode 100644
index 0000000..84b2a8c
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/entity/CoalValue.java
@@ -0,0 +1,46 @@
+package com.ruoyi.basic.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import com.ruoyi.common.core.domain.MyBaseEntity;
+
+/**
+ * 鐓よ川鏂规瀛楁鍊� 瀹炰綋绫�
+ *
+ * @author ruoyi
+ * @date 2025-06-09
+ */
+@Data
+@TableName("coal_value")
+public class CoalValue extends MyBaseEntity {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍏宠仈閲囪喘鍏ュ簱涓婚敭ID
+ */
+ @TableField(value = "plan_id")
+ private Long planId;
+ /**
+ * 瀛楁鍊�
+ */
+ @TableField(value = "coal_value")
+ private String coalValue;
+ /**
+ * 瀛楁
+ */
+ @TableField(value = "fields")
+ private String fields;
+ /**
+ * 瀛楁鍚�
+ */
+ @TableField(value = "field_name")
+ private String fieldName;
+
+}
\ No newline at end of file
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java
new file mode 100644
index 0000000..7a61957
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalFieldMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.entity.CoalField;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Mapper
+public interface CoalFieldMapper extends BaseMapper<CoalField> {
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalPlanMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalPlanMapper.java
new file mode 100644
index 0000000..472e117
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalPlanMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.entity.CoalPlan;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Mapper
+public interface CoalPlanMapper extends BaseMapper<CoalPlan> {
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalValueMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalValueMapper.java
new file mode 100644
index 0000000..6865bf2
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/CoalValueMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.entity.CoalValue;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Mapper
+public interface CoalValueMapper extends BaseMapper<CoalValue> {
+
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java b/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java
new file mode 100644
index 0000000..574cc98
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/CoalFieldService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CoalFieldDto;
+import com.ruoyi.basic.entity.CoalField;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+public interface CoalFieldService extends IService<CoalField> {
+
+ IPage<CoalField> selectCoalFieldList(Page page, CoalFieldDto coalFieldDto);
+
+ int addOrEditCoalField(CoalFieldDto coalFieldDto);
+
+ int delCoalFieldByIds(Long[] ids);
+
+ List<CoalField> selectAllList(CoalFieldDto coalFieldDto);
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/CoalPlanService.java b/basic-server/src/main/java/com/ruoyi/basic/service/CoalPlanService.java
new file mode 100644
index 0000000..0ff8f37
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/CoalPlanService.java
@@ -0,0 +1,28 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.CoalPlanDto;
+import com.ruoyi.basic.entity.CoalPlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+public interface CoalPlanService extends IService<CoalPlan> {
+
+ IPage<CoalPlan> selectCoalFieldList(Page page, CoalPlanDto coalPlanDto);
+
+ int addOrEditCoalPlan(CoalPlanDto coalPlanDto);
+
+ int delCoalPlanByIds(Long[] ids);
+
+ List<CoalPlan> selectAllList();
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/CoalValueService.java b/basic-server/src/main/java/com/ruoyi/basic/service/CoalValueService.java
new file mode 100644
index 0000000..205c205
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/CoalValueService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.dto.CoalValueDto;
+import com.ruoyi.basic.entity.CoalValue;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+public interface CoalValueService extends IService<CoalValue> {
+
+ IPage<CoalValue> selectCoalFieldList(Page page, CoalValueDto coalValueDto);
+
+ int addOrEditCoalValue(CoalValueDto coalValueDto);
+
+ int delCoalValueByIds(Long[] ids);
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java
new file mode 100644
index 0000000..e01e082
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalFieldServiceImpl.java
@@ -0,0 +1,107 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.CoalFieldDto;
+import com.ruoyi.basic.entity.CoalField;
+import com.ruoyi.basic.mapper.CoalFieldMapper;
+import com.ruoyi.basic.service.CoalFieldService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Service
+@RequiredArgsConstructor
+public class CoalFieldServiceImpl extends ServiceImpl<CoalFieldMapper, CoalField> implements CoalFieldService {
+
+ private final CoalFieldMapper coalFieldMapper;
+
+ // 姝e垯琛ㄨ揪寮忥細鍖归厤 "fieldXX" 鏍煎紡锛孹X 涓轰袱浣嶆暟瀛�
+ private static final Pattern FIELD_PATTERN = Pattern.compile("^field(\\d{2})$");
+
+ @Override
+ public IPage<CoalField> selectCoalFieldList(Page page, CoalFieldDto coalFieldDto) {
+ LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.hasText(coalFieldDto.getFieldName())) {
+ queryWrapper.like(CoalField::getFieldName, coalFieldDto.getFieldName());
+ }
+ queryWrapper.orderByDesc(CoalField::getCreateTime);
+ return coalFieldMapper.selectPage(page, queryWrapper);
+ }
+
+ @Override
+ public int addOrEditCoalField(CoalFieldDto coalFieldDto) {
+ CoalField coalField = new CoalField();
+ BeanUtils.copyProperties(coalFieldDto, coalField);
+ if (Objects.isNull(coalFieldDto.getId())) {
+ // 鏂板鎿嶄綔锛氱敓鎴愬敮涓�鐨� fieldXX 缂栧彿
+ String nextFieldNumber = generateNextFieldNumber();
+ coalField.setFields(nextFieldNumber);
+ return coalFieldMapper.insert(coalField);
+ } else {
+ // 鏇存柊鎿嶄綔锛氫笉淇敼 fieldNumber
+ return coalFieldMapper.updateById(coalField);
+ }
+ }
+
+ @Override
+ public int delCoalFieldByIds(Long[] ids) {
+ // 妫�鏌ュ弬鏁�
+ if (ids == null || ids.length == 0) {
+ return 0;
+ }
+ // 鏋勯�犳洿鏂版潯浠�
+ UpdateWrapper<CoalField> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", ids)
+ .set("deleted", 1); // 璁剧疆 deleted 涓� 1 琛ㄧず宸插垹闄�
+ // 鎵ц鎵归噺閫昏緫鍒犻櫎
+ return coalFieldMapper.update(null, updateWrapper);
+ }
+
+ @Override
+ public List<CoalField> selectAllList(CoalFieldDto coalFieldDto) {
+ return coalFieldMapper.selectList(null);
+ }
+
+ private String generateNextFieldNumber() {
+ // 鑾峰彇鎵�鏈夊凡瀛樺湪鐨� CoalField 璁板綍锛屽寘鎷凡鍒犻櫎鐨�
+ LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.in(CoalField::getDeleted, 0, 1);
+ List<CoalField> existingFields = coalFieldMapper.selectList(queryWrapper);
+
+ // 鎻愬彇骞惰В鏋愭墍鏈夊凡瀛樺湪鐨� fieldXX 缂栧彿
+ int maxNumber = 0;
+ for (CoalField field : existingFields) {
+ String fields = field.getFields();
+ if (fields != null) {
+ Matcher matcher = FIELD_PATTERN.matcher(fields);
+ if (matcher.matches()) {
+ String numberPart = matcher.group(1);
+ int currentNumber = Integer.parseInt(numberPart);
+ maxNumber = Math.max(maxNumber, currentNumber);
+ }
+ }
+ }
+
+ // 鐢熸垚涓嬩竴涓紪鍙凤紙鏍煎紡涓轰袱浣嶆暟瀛楋紝涓嶈冻琛ラ浂锛�
+ int nextNumber = maxNumber + 1;
+ return String.format("field%02d", nextNumber);
+ }
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java
index 4b38b0e..a4ffd27 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalInfoServiceImpl.java
@@ -48,7 +48,7 @@
BeanUtils.copyProperties(coalInfoDto, coalInfo);
coalInfo.setMaintainerId(SecurityUtils.getUserId());
coalInfo.setMaintenanceDate(DateUtils.getNowDate());
- if (Objects.isNull(coalInfo.getId())) {
+ if (Objects.isNull(coalInfoDto.getId())) {
return coalInfoMapper.insert(coalInfo);
} else {
return coalInfoMapper.updateById(coalInfo);
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalPlanServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalPlanServiceImpl.java
new file mode 100644
index 0000000..7c6e7f5
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalPlanServiceImpl.java
@@ -0,0 +1,68 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.CoalPlanDto;
+import com.ruoyi.basic.entity.CoalPlan;
+import com.ruoyi.basic.mapper.CoalPlanMapper;
+import com.ruoyi.basic.service.CoalPlanService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Service
+@RequiredArgsConstructor
+public class CoalPlanServiceImpl extends ServiceImpl<CoalPlanMapper, CoalPlan> implements CoalPlanService {
+
+ private final CoalPlanMapper coalPlanMapper;
+
+ @Override
+ public IPage<CoalPlan> selectCoalFieldList(Page page, CoalPlanDto coalPlanDto) {
+ LambdaQueryWrapper<CoalPlan> queryWrapper = new LambdaQueryWrapper<>();
+ return coalPlanMapper.selectPage(page,queryWrapper);
+ }
+
+ @Override
+ public int addOrEditCoalPlan(CoalPlanDto coalPlanDto) {
+ CoalPlan coalPlan = new CoalPlan();
+ BeanUtils.copyProperties(coalPlanDto, coalPlan);
+ if (Objects.isNull(coalPlanDto.getId())) {
+ return coalPlanMapper.insert(coalPlan);
+ } else {
+ return coalPlanMapper.updateById(coalPlan);
+ }
+ }
+
+ @Override
+ public int delCoalPlanByIds(Long[] ids) {
+ // 妫�鏌ュ弬鏁�
+ if (ids == null || ids.length == 0) {
+ return 0;
+ }
+ // 鏋勯�犳洿鏂版潯浠�
+ UpdateWrapper<CoalPlan> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", ids)
+ .set("deleted", 1); // 璁剧疆 deleted 涓� 1 琛ㄧず宸插垹闄�
+ // 鎵ц鎵归噺閫昏緫鍒犻櫎
+ return coalPlanMapper.update(null, updateWrapper);
+ }
+
+ @Override
+ public List<CoalPlan> selectAllList() {
+ return coalPlanMapper.selectList(null);
+ }
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalValueServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalValueServiceImpl.java
new file mode 100644
index 0000000..b5e4eb4
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CoalValueServiceImpl.java
@@ -0,0 +1,74 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.CoalValueDto;
+import com.ruoyi.basic.entity.CoalField;
+import com.ruoyi.basic.entity.CoalValue;
+import com.ruoyi.basic.mapper.CoalFieldMapper;
+import com.ruoyi.basic.mapper.CoalValueMapper;
+import com.ruoyi.basic.service.CoalValueService;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-09
+ */
+@Service
+@RequiredArgsConstructor
+public class CoalValueServiceImpl extends ServiceImpl<CoalValueMapper, CoalValue> implements CoalValueService {
+
+ private final CoalValueMapper coalValueMapper;
+
+ private final CoalFieldMapper coalFieldMapper;
+
+ @Override
+ public IPage<CoalValue> selectCoalFieldList(Page page, CoalValueDto coalValueDto) {
+ LambdaQueryWrapper<CoalValue> queryWrapper = new LambdaQueryWrapper<>();
+ return coalValueMapper.selectPage(page, queryWrapper);
+ }
+
+ @Override
+ public int addOrEditCoalValue(CoalValueDto coalValueDto) {
+ CoalValue coalValue = new CoalValue();
+ BeanUtils.copyProperties(coalValueDto, coalValue);
+ coalValue.setPlanId(coalValueDto.getPlanId());
+ int i = 0;
+ if (Objects.isNull(coalValueDto.getId())) {
+ List<Map<String, String>> fieldValue = coalValueDto.getFieldValue();
+ for (Map<String, String> field : fieldValue) {
+ for (Map.Entry<String, String> entry : field.entrySet()) {
+ String key = entry.getKey(); // 鑾峰彇 key锛岃繖閲屼細寰楀埌 "field01"
+ String value = entry.getValue(); // 鑾峰彇 value锛岃繖閲屼細寰楀埌 "99"
+ LambdaQueryWrapper<CoalField> queryWrapper = new LambdaQueryWrapper<>();
+ CoalField coalField = coalFieldMapper.selectOne(queryWrapper.eq(CoalField::getFields, key));
+ coalValue.setCoalValue(value);
+ coalValue.setFields(coalField.getFields());
+ coalValue.setFieldName(coalField.getFieldName());
+ coalValue.setId(null);
+ i = coalValueMapper.insert(coalValue);
+ }
+ }
+ return i;
+ } else {
+ return coalValueMapper.updateById(coalValue);
+ }
+ }
+
+ @Override
+ public int delCoalValueByIds(Long[] ids) {
+ return 0;
+ }
+}
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
new file mode 100644
index 0000000..6651721
--- /dev/null
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606163300__create_table_coal_field.sql
@@ -0,0 +1,28 @@
+-- 鍒涘缓鐓よ川淇℃伅琛�
+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, -- 鐓よ川鎻忚堪
+
+ deleted INT NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
+ create_by VARCHAR(255), -- 鍒涘缓浜虹敤鎴峰悕
+ create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
+ update_by VARCHAR(255), -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+);
+
+-- 琛ㄦ敞閲�
+COMMENT ON TABLE coal_field IS '鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹�';
+
+-- 瀛楁娉ㄩ噴
+COMMENT ON COLUMN coal_field.id IS '涓婚敭ID';
+COMMENT ON COLUMN coal_field.fields IS '鐓ょ绫诲瀷id';
+COMMENT ON COLUMN coal_field.field_name IS '鐓ょ绫诲瀷';
+COMMENT ON COLUMN coal_field.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
+COMMENT ON COLUMN coal_field.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
+COMMENT ON COLUMN coal_field.create_time IS '璁板綍鍒涘缓鏃堕棿';
+COMMENT ON COLUMN coal_field.update_by IS '鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�';
+COMMENT ON COLUMN coal_field.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
\ No newline at end of file
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
new file mode 100644
index 0000000..9daa595
--- /dev/null
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606170900__create_table_coal_plan.sql
@@ -0,0 +1,27 @@
+-- 鍒涘缓鐓よ川淇℃伅琛�
+CREATE TABLE coal_plan
+(
+ id BIGSERIAL PRIMARY KEY, -- 涓婚敭ID锛岃嚜鍔ㄩ�掑
+
+ plan VARCHAR(255) NOT NULL, --鐓よ川鏂规
+ coal_fields BIGINT NOT NULL, -- 鐓よ川鏂规瀛楁
+
+ deleted INT NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
+ create_by VARCHAR(255), -- 鍒涘缓浜虹敤鎴峰悕
+ create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
+ update_by VARCHAR(255), -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+);
+
+-- 琛ㄦ敞閲�
+COMMENT ON TABLE coal_plan IS '鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹�';
+
+-- 瀛楁娉ㄩ噴
+COMMENT ON COLUMN coal_plan.id IS '涓婚敭ID';
+COMMENT ON COLUMN coal_plan.plan IS '鐓よ川鏂规';
+COMMENT ON COLUMN coal_plan.coal_fields 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 '璁板綍鍒涘缓鏃堕棿';
+COMMENT ON COLUMN coal_plan.update_by IS '鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�';
+COMMENT ON COLUMN coal_plan.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
\ No newline at end of file
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
new file mode 100644
index 0000000..59d6491
--- /dev/null
+++ b/basic-server/src/main/resources/db/migration/postgresql/V20250606171000__create_table_coal_value.sql
@@ -0,0 +1,31 @@
+-- 鍒涘缓鐓よ川淇℃伅琛�
+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, -- 瀛楁
+ field_name VARCHAR(255) NOT NULL, -- 瀛楁鍚�
+
+ deleted INT NOT NULL DEFAULT 0, -- 杞垹闄ゆ爣蹇楋細0=鏈垹闄わ紝1=宸插垹闄�
+ create_by VARCHAR(255), -- 鍒涘缓浜虹敤鎴峰悕
+ create_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, -- 鍒涘缓鏃堕棿锛岄粯璁ゅ綋鍓嶆椂闂�
+ update_by VARCHAR(255), -- 鏈�鍚庢洿鏂颁汉鐢ㄦ埛鍚�
+ update_time TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP -- 鏈�鍚庢洿鏂版椂闂达紝榛樿褰撳墠鏃堕棿
+);
+
+-- 琛ㄦ敞閲�
+COMMENT ON TABLE coal_value IS '鐓よ川淇℃伅琛紝璁板綍鐓ょ偔璐ㄩ噺妫�娴嬬浉鍏虫暟鎹�';
+
+-- 瀛楁娉ㄩ噴
+COMMENT ON COLUMN coal_value.id IS '涓婚敭ID';
+COMMENT ON COLUMN coal_value.plan_id IS '鍏宠仈鐓よ川鏂规涓婚敭ID';
+COMMENT ON COLUMN coal_value.coal_value IS '瀛楁鍊�';
+COMMENT ON COLUMN coal_value.fields IS '瀛楁';
+COMMENT ON COLUMN coal_value.field_name IS '瀛楁鍚�';
+COMMENT ON COLUMN coal_value.deleted IS '杞垹闄ゆ爣蹇楋紝0=鏈垹闄わ紝1=宸插垹闄�';
+COMMENT ON COLUMN coal_value.create_by IS '鍒涘缓璇ヨ褰曠殑鐢ㄦ埛';
+COMMENT ON COLUMN coal_value.create_time IS '璁板綍鍒涘缓鏃堕棿';
+COMMENT ON COLUMN coal_value.update_by IS '鏈�鍚庝慨鏀硅璁板綍鐨勭敤鎴�';
+COMMENT ON COLUMN coal_value.update_time IS '璁板綍鏈�鍚庢洿鏂版椂闂�';
\ No newline at end of file
diff --git a/basic-server/src/main/resources/mapper/CoalFieldMapper.xml b/basic-server/src/main/resources/mapper/CoalFieldMapper.xml
new file mode 100644
index 0000000..55beb38
--- /dev/null
+++ b/basic-server/src/main/resources/mapper/CoalFieldMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.basic.mapper.CoalFieldMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.basic.entity.CoalField">
+ <id column="id" property="id"/>
+ <result column="deleted" property="deleted"/>
+ <result column="create_by" property="createBy"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_by" property="updateBy"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="fields" property="fields"/>
+ <result column="field_name" property="fieldName"/>
+ <result column="field_description" property="fieldDescription"/>
+ </resultMap>
+
+ <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+ <sql id="Base_Column_List">
+ deleted,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ id, fields, field_name, field_description
+ </sql>
+
+</mapper>
\ No newline at end of file
diff --git a/basic-server/src/main/resources/mapper/CoalPlanMapper.xml b/basic-server/src/main/resources/mapper/CoalPlanMapper.xml
new file mode 100644
index 0000000..1619359
--- /dev/null
+++ b/basic-server/src/main/resources/mapper/CoalPlanMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.basic.mapper.CoalPlanMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.basic.entity.CoalPlan">
+ <id column="id" property="id" />
+ <result column="deleted" property="deleted" />
+ <result column="create_by" property="createBy" />
+ <result column="create_time" property="createTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="plan" property="plan" />
+ <result column="coal_field_id" property="coalFieldId" />
+ <result column="field_names" property="fieldNames" />
+ </resultMap>
+
+ <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+ <sql id="Base_Column_List">
+ deleted,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ id, plan, coal_field_id, field_names
+ </sql>
+
+</mapper>
\ No newline at end of file
diff --git a/basic-server/src/main/resources/mapper/CoalValueMapper.xml b/basic-server/src/main/resources/mapper/CoalValueMapper.xml
new file mode 100644
index 0000000..eed77d3
--- /dev/null
+++ b/basic-server/src/main/resources/mapper/CoalValueMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.basic.mapper.CoalValueMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.basic.entity.CoalValue">
+ <id column="id" property="id" />
+ <result column="deleted" property="deleted" />
+ <result column="create_by" property="createBy" />
+ <result column="create_time" property="createTime" />
+ <result column="update_by" property="updateBy" />
+ <result column="update_time" property="updateTime" />
+ <result column="fields" property="fields" />
+ <result column="field_name" property="fieldName" />
+ <result column="field_value" property="fieldValue" />
+ </resultMap>
+
+ <!-- 閫氱敤鏌ヨ缁撴灉鍒� -->
+ <sql id="Base_Column_List">
+ deleted,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ id, fields, field_name, field_value
+ </sql>
+
+</mapper>
\ No newline at end of file
diff --git a/main-business/pom.xml b/main-business/pom.xml
index b2cc32b..c1f56f7 100644
--- a/main-business/pom.xml
+++ b/main-business/pom.xml
@@ -40,6 +40,10 @@
<groupId>org.flywaydb</groupId>
<artifactId>flyway-database-postgresql</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>basic-server</artifactId>
+ </dependency>
</dependencies>
<properties>
diff --git a/main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java b/main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java
index dd4b2e8..b9cac2d 100644
--- a/main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java
+++ b/main-business/src/main/java/com/ruoyi/business/controller/OfficialInventoryController.java
@@ -1,21 +1,39 @@
package com.ruoyi.business.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.OfficialInventoryDto;
+import com.ruoyi.business.entity.OfficialInventory;
+import com.ruoyi.business.service.OfficialInventoryService;
+import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
- import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
/**
-* <p>
- * 姝e紡搴撳瓨琛� 鍓嶇鎺у埗鍣�
- * </p>
-*
-* @author ruoyi
-* @since 2025-06-04
-*/
+ * <p>
+ * 姝e紡搴撳瓨琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ruoyi
+ * @since 2025-06-04
+ */
@RestController
@AllArgsConstructor
-@RequestMapping("/business/officialInventory")
- public class OfficialInventoryController {
+@RequestMapping("/officialInventory")
+public class OfficialInventoryController {
+ private OfficialInventoryService officialInventoryService;
+
+ /**
+ * 姝e紡搴撳簱琛ㄦ煡璇�
+ */
+ @GetMapping("/list")
+ public R<IPage<OfficialInventory>> list(Page page, OfficialInventoryDto officialInventoryDto) {
+ IPage<OfficialInventory> list = officialInventoryService.selectOfficialInventoryList(page,officialInventoryDto);
+ return R.ok(list);
}
+
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java b/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java
index 1aac7da..0968c40 100644
--- a/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java
+++ b/main-business/src/main/java/com/ruoyi/business/controller/PendingInventoryController.java
@@ -1,8 +1,13 @@
package com.ruoyi.business.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.PendingInventoryDto;
+import com.ruoyi.business.entity.PendingInventory;
+import com.ruoyi.business.service.PendingInventoryService;
+import com.ruoyi.common.core.domain.R;
import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
/**
* <p>
@@ -15,7 +20,34 @@
@RestController
@AllArgsConstructor
-@RequestMapping("/business/pendingInventory")
+@RequestMapping("/pendingInventory")
public class PendingInventoryController {
+ private PendingInventoryService pendingInventoryService;
+
+ /**
+ * 寰呭叆搴撹〃鏌ヨ
+ */
+ @GetMapping("/list")
+ public R<IPage<PendingInventory>> list(Page page, PendingInventoryDto pendingInventoryDto) {
+ IPage<PendingInventory> list = pendingInventoryService.selectPendingInventoryList(page,pendingInventoryDto);
+ return R.ok(list);
+ }
+
+ /**
+ * 鏂板淇敼
+ */
+ @PostMapping("/addOrEditPending")
+ public R addOrEditPending(@RequestBody PendingInventoryDto pendingInventoryDto) {
+ return R.ok(pendingInventoryService.addOrEditPending(pendingInventoryDto));
+ }
+
+ /**
+ * 鍒犻櫎
+ */
+ @DeleteMapping("/delPending")
+ public R remove(@RequestBody Long[] ids) {
+ return R.ok(pendingInventoryService.delByIds(ids));
+ }
+
}
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java b/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
new file mode 100644
index 0000000..9d668b7
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/dto/OfficialInventoryDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.business.dto;
+
+import com.ruoyi.business.entity.OfficialInventory;
+import lombok.Data;
+
+@Data
+public class OfficialInventoryDto extends OfficialInventory {
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
new file mode 100644
index 0000000..01a78a7
--- /dev/null
+++ b/main-business/src/main/java/com/ruoyi/business/dto/PendingInventoryDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.business.dto;
+
+import com.ruoyi.business.entity.PendingInventory;
+import lombok.Data;
+
+@Data
+public class PendingInventoryDto extends PendingInventory {
+}
diff --git a/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java b/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
index 943b592..c30d533 100644
--- a/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
+++ b/main-business/src/main/java/com/ruoyi/business/entity/PendingInventory.java
@@ -35,8 +35,8 @@
/**
* 鐓ょ
*/
- @TableField(value = "coal_type")
- private String coalType;
+ @TableField(value = "coal")
+ private String coal;
/**
* 鍗曚綅
*/
@@ -65,8 +65,8 @@
/**
* 鐧昏浜�
*/
- @TableField(value = "registrant")
- private String registrant;
+ @TableField(value = "registrant_id")
+ private String registrantId;
/**
* 鐧昏鏃堕棿
*/
diff --git a/main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java b/main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java
index ae1dc65..4d7a915 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/OfficialInventoryService.java
@@ -1,5 +1,8 @@
package com.ruoyi.business.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.OfficialInventoryDto;
import com.ruoyi.business.entity.OfficialInventory;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -13,4 +16,5 @@
*/
public interface OfficialInventoryService extends IService<OfficialInventory> {
+ IPage<OfficialInventory> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto);
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java b/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java
index aed794e..1d12d25 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/PendingInventoryService.java
@@ -1,5 +1,8 @@
package com.ruoyi.business.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.PendingInventoryDto;
import com.ruoyi.business.entity.PendingInventory;
import com.baomidou.mybatisplus.extension.service.IService;
@@ -13,4 +16,9 @@
*/
public interface PendingInventoryService extends IService<PendingInventory> {
+ IPage<PendingInventory> selectPendingInventoryList(Page page, PendingInventoryDto pendingInventoryDto);
+
+ int addOrEditPending(PendingInventoryDto pendingInventoryDto);
+
+ int delByIds(Long[] ids);
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
index 516da13..fdc9186 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/OfficialInventoryServiceImpl.java
@@ -1,5 +1,9 @@
package com.ruoyi.business.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.business.dto.OfficialInventoryDto;
import com.ruoyi.business.entity.OfficialInventory;
import com.ruoyi.business.mapper.OfficialInventoryMapper;
import com.ruoyi.business.service.OfficialInventoryService;
@@ -19,4 +23,11 @@
@RequiredArgsConstructor
public class OfficialInventoryServiceImpl extends ServiceImpl<OfficialInventoryMapper, OfficialInventory> implements OfficialInventoryService {
+ private final OfficialInventoryMapper officialInventoryMapper;
+
+ @Override
+ public IPage<OfficialInventory> selectOfficialInventoryList(Page page, OfficialInventoryDto officialInventoryDto) {
+ LambdaQueryWrapper<OfficialInventory> queryWrapper = new LambdaQueryWrapper<>();
+ return officialInventoryMapper.selectPage(page, queryWrapper);
+ }
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
index 820e71a..ac74173 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PendingInventoryServiceImpl.java
@@ -1,11 +1,21 @@
package com.ruoyi.business.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.CoalFieldMapper;
+import com.ruoyi.basic.mapper.CoalValueMapper;
+import com.ruoyi.business.dto.PendingInventoryDto;
import com.ruoyi.business.entity.PendingInventory;
import com.ruoyi.business.mapper.PendingInventoryMapper;
import com.ruoyi.business.service.PendingInventoryService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
+import com.ruoyi.common.utils.bean.BeanUtils;
import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
/**
* <p>
@@ -19,4 +29,41 @@
@RequiredArgsConstructor
public class PendingInventoryServiceImpl extends ServiceImpl<PendingInventoryMapper, PendingInventory> implements PendingInventoryService {
+ private final PendingInventoryMapper pendingInventoryMapper;
+
+ private final CoalValueMapper coalValueMapper;
+
+ private final CoalFieldMapper coalFieldMapper;
+
+ @Override
+ public IPage<PendingInventory> selectPendingInventoryList(Page page, PendingInventoryDto pendingInventoryDto) {
+ LambdaQueryWrapper<PendingInventory> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.orderByDesc(PendingInventory::getCreateTime);
+ return pendingInventoryMapper.selectPage(page, queryWrapper);
+ }
+
+ @Override
+ public int addOrEditPending(PendingInventoryDto pendingInventoryDto) {
+ PendingInventory pendingInventory = new PendingInventory();
+ BeanUtils.copyProperties(pendingInventoryDto, pendingInventory);
+ if (Objects.isNull(pendingInventoryDto.getId())) {
+ return pendingInventoryMapper.insert(pendingInventory);
+ } else {
+ return pendingInventoryMapper.updateById(pendingInventory);
+ }
+ }
+
+ @Override
+ public int delByIds(Long[] ids) {
+ // 妫�鏌ュ弬鏁�
+ if (ids == null || ids.length == 0) {
+ return 0;
+ }
+ // 鏋勯�犳洿鏂版潯浠�
+ UpdateWrapper<PendingInventory> updateWrapper = new UpdateWrapper<>();
+ updateWrapper.in("id", ids)
+ .set("deleted", 1); // 璁剧疆 deleted 涓� 1 琛ㄧず宸插垹闄�
+ // 鎵ц鎵归噺閫昏緫鍒犻櫎
+ return pendingInventoryMapper.update(null, updateWrapper);
+ }
}
diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
index 642cfea..54b2b7b 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/PurchaseRegistrationServiceImpl.java
@@ -6,12 +6,16 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.dto.PurchaseRegistrationDto;
+import com.ruoyi.business.entity.PendingInventory;
import com.ruoyi.business.entity.PurchaseRegistration;
+import com.ruoyi.business.mapper.PendingInventoryMapper;
import com.ruoyi.business.mapper.PurchaseRegistrationMapper;
import com.ruoyi.business.service.PurchaseRegistrationService;
import com.ruoyi.common.utils.bean.BeanUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
import java.util.Objects;
@@ -30,6 +34,8 @@
private final PurchaseRegistrationMapper purchaseRegistrationMapper;
+ private final PendingInventoryMapper pendingInventoryMapper;
+
@Override
public IPage<PurchaseRegistration> selectPurchaseRegistrationList(Page page, PurchaseRegistrationDto purchaseRegistrationDto) {
LambdaQueryWrapper<PurchaseRegistration> queryWrapper = new LambdaQueryWrapper<>();
@@ -38,17 +44,47 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public int addOrEditPR(PurchaseRegistrationDto purchaseRegistrationDto) {
+ // 鍙傛暟鏍¢獙
+ Assert.notNull(purchaseRegistrationDto, "閲囪喘鐧昏淇℃伅涓嶈兘涓虹┖");
+
+ // 鍒涘缓閲囪喘鐧昏瀹炰綋骞跺鍒跺睘鎬�
PurchaseRegistration purchaseRegistration = new PurchaseRegistration();
- BeanUtils.copyProperties(purchaseRegistrationDto,purchaseRegistration);
-
+ BeanUtils.copyProperties(purchaseRegistrationDto, purchaseRegistration);
+
if (Objects.isNull(purchaseRegistrationDto.getId())) {
- return purchaseRegistrationMapper.insert(purchaseRegistration);
+ // 鏂板閲囪喘鐧昏
+ int insertCount = purchaseRegistrationMapper.insert(purchaseRegistration);
+ if (insertCount > 0) {
+ // 閲囪喘鐧昏鎴愬姛锛屽悓姝ュ垱寤哄緟鍏ュ簱璁板綍
+ PendingInventory pendingInventory = createPendingInventory(purchaseRegistration);
+ return pendingInventoryMapper.insert(pendingInventory);
+ }
+ return insertCount;
} else {
+ // 鏇存柊閲囪喘鐧昏
return purchaseRegistrationMapper.updateById(purchaseRegistration);
}
}
+ /**
+ * 鏍规嵁閲囪喘鐧昏淇℃伅鍒涘缓寰呭叆搴撹褰�
+ * @param purchaseRegistration 閲囪喘鐧昏瀹炰綋
+ * @return 寰呭叆搴撳疄浣�
+ */
+ private PendingInventory createPendingInventory(PurchaseRegistration purchaseRegistration) {
+ PendingInventory pendingInventory = new PendingInventory();
+ // 澶嶅埗鍩烘湰灞炴��
+ BeanUtils.copyProperties(purchaseRegistration, pendingInventory);
+
+ // 璁剧疆寰呭叆搴撹褰曠壒鏈夌殑灞炴�э紙濡傛灉鏈夛級
+ // pendingInventory.setStatus(InventoryStatus.PENDING);
+ // pendingInventory.setCreateTime(LocalDateTime.now());
+
+ return pendingInventory;
+ }
+
@Override
public int delByIds(Long[] ids) {
// 妫�鏌ュ弬鏁�
diff --git a/main-business/src/main/resources/mapper/PendingInventoryMapper.xml b/main-business/src/main/resources/mapper/PendingInventoryMapper.xml
index dc8d8bd..384f9ef 100644
--- a/main-business/src/main/resources/mapper/PendingInventoryMapper.xml
+++ b/main-business/src/main/resources/mapper/PendingInventoryMapper.xml
@@ -11,13 +11,13 @@
<result column="update_by" property="updateBy" />
<result column="update_time" property="updateTime" />
<result column="supplier_name" property="supplierName" />
- <result column="coal_type" property="coalType" />
+ <result column="coal" property="coal" />
<result column="unit" property="unit" />
<result column="inventory_quantity" property="inventoryQuantity" />
<result column="price_including_tax" property="priceIncludingTax" />
<result column="total_price_including_tax" property="totalPriceIncludingTax" />
<result column="cost_per_unit" property="costPerUnit" />
- <result column="registrant" property="registrant" />
+ <result column="registrant_id" property="registrantId" />
<result column="registration_time" property="registrationTime" />
</resultMap>
--
Gitblit v1.9.3