From 578ea7a56b5fd6019cd96549f1176ce2574fc13a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 14 三月 2026 10:27:29 +0800
Subject: [PATCH] feat: 基础参数配置接口
---
src/main/java/com/ruoyi/basic/controller/BaseParamController.java | 60 +++++++
src/main/java/com/ruoyi/basic/mapper/BaseParamMapper.java | 16 ++
doc/宁夏-中盛建材.sql | 23 ++
src/main/java/com/ruoyi/basic/dto/BaseParamDto.java | 79 +++++++++
src/main/resources/mapper/basic/BaseParamMapper.xml | 25 +++
src/main/java/com/ruoyi/basic/service/impl/BaseParamServiceImpl.java | 157 +++++++++++++++++++
src/main/java/com/ruoyi/basic/pojo/BaseParam.java | 81 ++++++++++
src/main/java/com/ruoyi/basic/service/BaseParamService.java | 25 +++
8 files changed, 465 insertions(+), 1 deletions(-)
diff --git "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql" "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
index 33e8ed8..18b76f7 100644
--- "a/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
+++ "b/doc/\345\256\201\345\244\217-\344\270\255\347\233\233\345\273\272\346\235\220.sql"
@@ -175,4 +175,25 @@
ALTER TABLE `product-inventory-management-zsjc`.`production_plan`
DROP COLUMN `data_sync_type`,
- MODIFY COLUMN `data_source_type` tinyint NULL DEFAULT 1 COMMENT '鏁版嵁鏉ユ簮绫诲瀷锛�1=閽夐拤鍚屾 2=鎵嬪姩鏂板' AFTER `form_modified_time`;
\ No newline at end of file
+ MODIFY COLUMN `data_source_type` tinyint NULL DEFAULT 1 COMMENT '鏁版嵁鏉ユ簮绫诲瀷锛�1=閽夐拤鍚屾 2=鎵嬪姩鏂板' AFTER `form_modified_time`;
+
+DROP TABLE IF EXISTS `base_param`;
+CREATE TABLE `base_param`
+(
+ id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '涓婚敭ID',
+ param_key VARCHAR(100) NOT NULL COMMENT '鍙傛暟鍞竴鏍囪瘑',
+ param_name VARCHAR(100) NOT NULL COMMENT '鍙傛暟鍚嶇О',
+ param_type TINYINT NOT NULL COMMENT '鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰)',
+ value_mode TINYINT DEFAULT 1 COMMENT '鍊兼ā寮�(1鍗曞�� 2鍖洪棿)',
+ unit VARCHAR(50) COMMENT '鍗曚綅',
+ default_value VARCHAR(200) COMMENT '榛樿鍊�(鍗曞�煎弬鏁�)',
+ default_min DECIMAL(10, 2) COMMENT '榛樿鏈�灏忓��(鍖洪棿鍙傛暟)',
+ default_max DECIMAL(10, 2) COMMENT '榛樿鏈�澶у��(鍖洪棿鍙傛暟)',
+ is_required TINYINT DEFAULT 0 COMMENT '鏄惁蹇呭~(0鍚� 1鏄�)',
+ remark VARCHAR(255) COMMENT '澶囨敞',
+ create_user VARCHAR(64) COMMENT '鍒涘缓浜�',
+ create_time DATETIME COMMENT '鍒涘缓鏃堕棿',
+ update_user VARCHAR(64) COMMENT '淇敼浜�',
+ update_time DATETIME COMMENT '淇敼鏃堕棿',
+ tenant_id BIGINT NOT NULL COMMENT '绉熸埛ID'
+) COMMENT = '鍩虹鍙傛暟瀹氫箟琛�';
diff --git a/src/main/java/com/ruoyi/basic/controller/BaseParamController.java b/src/main/java/com/ruoyi/basic/controller/BaseParamController.java
new file mode 100644
index 0000000..08f3df0
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/controller/BaseParamController.java
@@ -0,0 +1,60 @@
+package com.ruoyi.basic.controller;
+
+import com.ruoyi.basic.pojo.BaseParam;
+import com.ruoyi.basic.service.BaseParamService;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟鎺у埗灞�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 16:42
+ */
+@RestController
+@RequestMapping("/baseParam")
+public class BaseParamController extends BaseController {
+
+ @Autowired
+ private BaseParamService baseParamService;
+
+ @GetMapping("list")
+ @Log(title = "鍩虹鍙傛暟鏁版嵁闆嗗悎", businessType = BusinessType.OTHER)
+ @ApiOperation("鍩虹鍙傛暟鏁版嵁闆嗗悎")
+ public AjaxResult baseParamList(BaseParam baseParam) {
+ List<BaseParam> list = baseParamService.baseParamList(baseParam);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鏂板鍩虹鍙傛暟", businessType = BusinessType.INSERT)
+ @ApiOperation("鏂板鍩虹鍙傛暟")
+ public AjaxResult baseParamAdd(@RequestBody BaseParam baseParam) {
+ return toAjax(baseParamService.addBaseParam(baseParam));
+ }
+
+ @PutMapping("/edit")
+ @Log(title = "淇敼鍩虹鍙傛暟", businessType = BusinessType.UPDATE)
+ @ApiOperation("淇敼鍩虹鍙傛暟")
+ public AjaxResult baseParamEdit(@RequestBody BaseParam baseParam) {
+ return toAjax(baseParamService.updateBaseParam(baseParam));
+ }
+
+ @DeleteMapping("/remove/{ids}")
+ @Log(title = "鍒犻櫎鍩虹鍙傛暟", businessType = BusinessType.DELETE)
+ @ApiOperation("鍒犻櫎鍩虹鍙傛暟")
+ public AjaxResult baseParamRemove(@PathVariable Long[] ids) {
+ return toAjax(baseParamService.deleteBaseParamByIds(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/basic/dto/BaseParamDto.java b/src/main/java/com/ruoyi/basic/dto/BaseParamDto.java
new file mode 100644
index 0000000..e54ea8d
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/dto/BaseParamDto.java
@@ -0,0 +1,79 @@
+package com.ruoyi.basic.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟Dto
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 17:40
+ */
+@Data
+@Api("鍩虹鍙傛暟瀹氫箟Dto")
+public class BaseParamDto {
+
+ @ApiModelProperty("涓婚敭ID")
+ private Long id;
+
+ @ApiModelProperty("鍙傛暟鍞竴鏍囪瘑")
+ private String paramKey;
+
+ @ApiModelProperty("鍙傛暟鍚嶇О")
+ private String paramName;
+
+ @ApiModelProperty("鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰)")
+ private Integer paramType;
+
+ @ApiModelProperty("鍊兼ā寮�(1鍗曞�� 2鍖洪棿)")
+ private Integer valueMode;
+
+ @ApiModelProperty("鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty("榛樿鍊�(鍗曞�煎弬鏁�)")
+ private String defaultValue;
+
+ @ApiModelProperty("榛樿鏈�灏忓��(鍖洪棿鍙傛暟)")
+ private BigDecimal defaultMin;
+
+ @ApiModelProperty("榛樿鏈�澶у��(鍖洪棿鍙傛暟)")
+ private BigDecimal defaultMax;
+
+ @ApiModelProperty("鏄惁蹇呭~(0鍚� 1鏄�)")
+ private Integer isRequired;
+
+ @ApiModelProperty("浜у搧绫诲瀷琛↖D鍚嶇О")
+ private String baseProductTypeName;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ private String updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/basic/mapper/BaseParamMapper.java b/src/main/java/com/ruoyi/basic/mapper/BaseParamMapper.java
new file mode 100644
index 0000000..4d4ff41
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/mapper/BaseParamMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.pojo.BaseParam;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟Mapper
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 16:39
+ */
+public interface BaseParamMapper extends BaseMapper<BaseParam> {
+}
diff --git a/src/main/java/com/ruoyi/basic/pojo/BaseParam.java b/src/main/java/com/ruoyi/basic/pojo/BaseParam.java
new file mode 100644
index 0000000..27ce582
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/pojo/BaseParam.java
@@ -0,0 +1,81 @@
+package com.ruoyi.basic.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟琛�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 16:33
+ */
+@Data
+@TableName("base_param")
+@Api("鍩虹鍙傛暟瀹氫箟")
+public class BaseParam {
+
+ @TableId(type = IdType.AUTO)
+ @ApiModelProperty("涓婚敭ID")
+ private Long id;
+
+ @ApiModelProperty("鍙傛暟鍞竴鏍囪瘑")
+ private String paramKey;
+
+ @ApiModelProperty("鍙傛暟鍚嶇О")
+ private String paramName;
+
+ @ApiModelProperty("鍙傛暟绫诲瀷(1鏁板瓧 2鏂囨湰)")
+ private Integer paramType;
+
+ @ApiModelProperty("鍊兼ā寮�(1鍗曞�� 2鍖洪棿)")
+ private Integer valueMode;
+
+ @ApiModelProperty("鍗曚綅")
+ private String unit;
+
+ @ApiModelProperty("榛樿鍊�(鍗曞�煎弬鏁�)")
+ private String defaultValue;
+
+ @ApiModelProperty("榛樿鏈�灏忓��(鍖洪棿鍙傛暟)")
+ private BigDecimal defaultMin;
+
+ @ApiModelProperty("榛樿鏈�澶у��(鍖洪棿鍙傛暟)")
+ private BigDecimal defaultMax;
+
+ @ApiModelProperty("鏄惁蹇呭~(0鍚� 1鏄�)")
+ private Integer isRequired;
+
+ @ApiModelProperty("澶囨敞")
+ private String remark;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUser;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("淇敼浜�")
+ private String updateUser;
+
+ @ApiModelProperty("淇敼鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("绉熸埛ID")
+ private Long tenantId;
+}
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/basic/service/BaseParamService.java b/src/main/java/com/ruoyi/basic/service/BaseParamService.java
new file mode 100644
index 0000000..ee50e5a
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/BaseParamService.java
@@ -0,0 +1,25 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.basic.pojo.BaseParam;
+
+import java.util.List;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟鎺ュ彛
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 16:40
+ */
+public interface BaseParamService extends IService<BaseParam> {
+ List<BaseParam> baseParamList(BaseParam baseParam);
+
+ int addBaseParam(BaseParam baseParam);
+
+ int updateBaseParam(BaseParam baseParam);
+
+ int deleteBaseParamByIds(Long[] ids);
+}
diff --git a/src/main/java/com/ruoyi/basic/service/impl/BaseParamServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/BaseParamServiceImpl.java
new file mode 100644
index 0000000..6cf1af6
--- /dev/null
+++ b/src/main/java/com/ruoyi/basic/service/impl/BaseParamServiceImpl.java
@@ -0,0 +1,157 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.mapper.BaseParamMapper;
+import com.ruoyi.basic.pojo.BaseParam;
+import com.ruoyi.basic.service.BaseParamService;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * <br>
+ * 鍩虹鍙傛暟瀹氫箟鎺ュ彛瀹炵幇绫�
+ * </br>
+ *
+ * @author deslrey
+ * @version 1.0
+ * @since 2026/03/13 16:41
+ */
+@Slf4j
+@Service
+@Api("鍩虹鍙傛暟瀹氫箟鎺ュ彛瀹炵幇绫�")
+public class BaseParamServiceImpl extends ServiceImpl<BaseParamMapper, BaseParam> implements BaseParamService {
+
+ @Override
+ public List<BaseParam> baseParamList(BaseParam baseParam) {
+ LambdaQueryWrapper<BaseParam> queryWrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotEmpty(baseParam.getParamName())) {
+ queryWrapper.like(BaseParam::getParamName, baseParam.getParamName());
+ }
+ List<BaseParam> list = list(queryWrapper);
+ if (list == null || list.isEmpty()) {
+ return new ArrayList<>(0);
+ }
+ return list;
+ }
+
+ @Override
+ public int addBaseParam(BaseParam baseParam) {
+
+ if (baseParam == null) {
+ throw new RuntimeException("鏂板鍙傛暟涓嶈兘涓虹┖");
+ }
+ // 鍙傛暟鏍¢獙
+ checkBaseParam(baseParam, false);
+ // 鑷姩鐢熸垚paramKey
+ baseParam.setParamKey(generateParamKey());
+ baseParam.setCreateUser(SecurityUtils.getUsername());
+ baseParam.setCreateTime(LocalDateTime.now());
+
+ return baseMapper.insert(baseParam);
+ }
+
+ @Override
+ public int updateBaseParam(BaseParam baseParam) {
+ if (baseParam == null || baseParam.getId() == null) {
+ throw new RuntimeException("淇敼鍙傛暟ID涓嶈兘涓虹┖");
+ }
+ // 鍙傛暟鏍¢獙
+ checkBaseParam(baseParam, true);
+ baseParam.setUpdateUser(SecurityUtils.getUsername());
+ baseParam.setUpdateTime(LocalDateTime.now());
+
+ return baseMapper.updateById(baseParam);
+ }
+
+ /**
+ * 鐢熸垚鍙傛暟鍞竴key
+ */
+ private String generateParamKey() {
+ String prefix = "PARAM_";
+ // 鏌ヨ褰撳墠鏈�澶ey
+ LambdaQueryWrapper<BaseParam> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(BaseParam::getParamKey)
+ .likeRight(BaseParam::getParamKey, prefix)
+ .orderByDesc(BaseParam::getParamKey)
+ .last("limit 1");
+ BaseParam last = baseMapper.selectOne(wrapper);
+ int nextNum = 1;
+ if (last != null) {
+ String lastKey = last.getParamKey();
+ String numStr = lastKey.replace(prefix, "");
+ nextNum = Integer.parseInt(numStr) + 1;
+ }
+ return prefix + String.format("%04d", nextNum);
+ }
+
+ /**
+ * 鍙傛暟鍚堟硶鎬ф牎楠�
+ */
+ private void checkBaseParam(BaseParam baseParam, boolean isUpdate) {
+ if (baseParam == null) {
+ throw new RuntimeException("鍙傛暟瀵硅薄涓嶈兘涓虹┖");
+ }
+ if (StringUtils.isEmpty(baseParam.getParamName())) {
+ throw new RuntimeException("鍙傛暟鍚嶇О涓嶈兘涓虹┖");
+ }
+ if (baseParam.getParamType() == null ||
+ !(baseParam.getParamType() == 1 || baseParam.getParamType() == 2)) {
+ throw new RuntimeException("鍙傛暟绫诲瀷蹇呴』涓�1(鏁板瓧)鎴�2(鏂囨湰)");
+ }
+ if (baseParam.getValueMode() == null ||
+ !(baseParam.getValueMode() == 1 || baseParam.getValueMode() == 2)) {
+ throw new RuntimeException("鍊兼ā寮忓繀椤讳负1(鍗曞��)鎴�2(鍖洪棿)");
+ }
+
+ // 鍗曞�兼ā寮�
+ if (baseParam.getValueMode() == 1) {
+ if (StringUtils.isEmpty(baseParam.getDefaultValue())) {
+ throw new RuntimeException("鍗曞�煎弬鏁伴粯璁ゅ�间笉鑳戒负绌�");
+ }
+ if (baseParam.getParamType() == 1) {
+ try {
+ new BigDecimal(baseParam.getDefaultValue());
+ } catch (Exception e) {
+ throw new RuntimeException("榛樿鍊煎繀椤讳负鏁板瓧");
+ }
+ }
+
+ baseParam.setDefaultMin(null);
+ baseParam.setDefaultMax(null);
+ }
+
+ // 鍖洪棿妯″紡
+ if (baseParam.getValueMode() == 2) {
+ if (baseParam.getParamType() != 1) {
+ throw new RuntimeException("鍙湁鏁板瓧绫诲瀷鎵嶈兘浣跨敤鍖洪棿妯″紡");
+ }
+ if (baseParam.getDefaultMin() == null || baseParam.getDefaultMax() == null) {
+ throw new RuntimeException("鍖洪棿鍙傛暟鏈�灏忓�煎拰鏈�澶у�间笉鑳戒负绌�");
+ }
+ if (baseParam.getDefaultMin().compareTo(baseParam.getDefaultMax()) > 0) {
+ throw new RuntimeException("鏈�灏忓�间笉鑳藉ぇ浜庢渶澶у��");
+ }
+
+ baseParam.setDefaultValue(null);
+ }
+ }
+
+ @Override
+ public int deleteBaseParamByIds(Long[] ids) {
+ if (ids == null || ids.length == 0) {
+ throw new RuntimeException("鍒犻櫎ID涓嶈兘涓虹┖");
+ }
+
+ return baseMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+}
diff --git a/src/main/resources/mapper/basic/BaseParamMapper.xml b/src/main/resources/mapper/basic/BaseParamMapper.xml
new file mode 100644
index 0000000..042b374
--- /dev/null
+++ b/src/main/resources/mapper/basic/BaseParamMapper.xml
@@ -0,0 +1,25 @@
+<?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.BaseParamMapper">
+
+ <resultMap id="BaseResultMap" type="com.ruoyi.basic.pojo.BaseParam">
+ <id column="id" property="id"/>
+ <result column="param_key" property="paramKey"/>
+ <result column="param_name" property="paramName"/>
+ <result column="param_type" property="paramType"/>
+ <result column="value_mode" property="valueMode"/>
+ <result column="unit" property="unit"/>
+ <result column="default_value" property="defaultValue"/>
+ <result column="default_min" property="defaultMin"/>
+ <result column="default_max" property="defaultMax"/>
+ <result column="is_required" property="isRequired"/>
+ <result column="remark" property="remark"/>
+ <result column="create_user" property="createUser"/>
+ <result column="create_time" property="createTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="tenant_id" property="tenantId"/>
+ </resultMap>
+
+
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3