From 1bbe6f787d58b768dce5370aa4e0d242c5e4b62d Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期二, 21 四月 2026 17:26:53 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/technology/service/impl/TechnologyParamServiceImpl.java | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 158 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyParamServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyParamServiceImpl.java
index 1afea09..a3e8f5e 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyParamServiceImpl.java
@@ -1,20 +1,170 @@
package com.ruoyi.technology.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.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.technology.bean.dto.TechnologyParamDto;
+import com.ruoyi.technology.bean.vo.TechnologyParamVo;
import com.ruoyi.technology.mapper.TechnologyParamMapper;
import com.ruoyi.technology.pojo.TechnologyParam;
import com.ruoyi.technology.service.TechnologyParamService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
-/**
- * <p>
- * 鍩虹鍙傛暟琛� 鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
- * @since 2026-04-20 09:45:20
- */
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
@Service
+@RequiredArgsConstructor
public class TechnologyParamServiceImpl extends ServiceImpl<TechnologyParamMapper, TechnologyParam> implements TechnologyParamService {
+ private static final List<Integer> VALID_PARAM_TYPES = Arrays.asList(1, 2, 3, 4);
+ private static final String PARAM_CODE_PREFIX = "PARAM_";
+ private static final Byte DATE_PARAM_TYPE = (byte) 4;
+
+ /**
+ * 鍒嗛〉鏌ヨ鍩虹鍙傛暟骞舵牸寮忓寲鏃ユ湡绫诲瀷灞曠ず銆�
+ */
+ @Override
+ public IPage<TechnologyParamVo> baseParamList(Page<TechnologyParamDto> page, TechnologyParamDto baseParam) {
+ LambdaQueryWrapper<TechnologyParam> queryWrapper = new LambdaQueryWrapper<>();
+ if (baseParam != null && StringUtils.isNotEmpty(baseParam.getParamName())) {
+ queryWrapper.like(TechnologyParam::getParamName, baseParam.getParamName());
+ }
+ queryWrapper.orderByDesc(TechnologyParam::getId);
+
+ Page<TechnologyParam> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+ Page<TechnologyParam> paramPage = page(entityPage, queryWrapper);
+
+ Page<TechnologyParamVo> resultPage = new Page<>(paramPage.getCurrent(), paramPage.getSize(), paramPage.getTotal());
+ List<TechnologyParamVo> records = new ArrayList<>(paramPage.getRecords().size());
+ for (TechnologyParam item : paramPage.getRecords()) {
+ TechnologyParamVo vo = new TechnologyParamVo();
+ BeanUtils.copyProperties(item, vo);
+ if (DATE_PARAM_TYPE.equals(item.getParamType()) && StringUtils.isNotEmpty(item.getParamFormat())) {
+ vo.setParamFormat(toDisplayDatePattern(item.getParamFormat()));
+ }
+ records.add(vo);
+ }
+ resultPage.setRecords(records);
+ return resultPage;
+ }
+
+ /**
+ * 鏂板鍩虹鍙傛暟骞剁敓鎴愬敮涓�鍙傛暟缂栫爜銆�
+ */
+ @Override
+ public int addBaseParam(TechnologyParamDto baseParam) {
+ if (baseParam == null) {
+ throw new RuntimeException("鏂板鍙傛暟涓嶈兘涓虹┖");
+ }
+ checkBaseParam(baseParam);
+ baseParam.setParamCode(generateParamCode());
+ baseParam.setCreateUser(SecurityUtils.getUsername());
+ baseParam.setCreateTime(LocalDateTime.now());
+ if (baseParam.getIsRequired() == null) {
+ baseParam.setIsRequired((byte) 0);
+ }
+ return baseMapper.insert(baseParam);
+ }
+
+ /**
+ * 淇敼鍩虹鍙傛暟骞朵繚鐣欏師鏈夊弬鏁扮紪鐮併��
+ */
+ @Override
+ public int updateBaseParam(TechnologyParamDto baseParam) {
+ if (baseParam == null || baseParam.getId() == null) {
+ throw new RuntimeException("淇敼鍙傛暟ID涓嶈兘涓虹┖");
+ }
+ checkBaseParam(baseParam);
+ TechnologyParam current = baseMapper.selectById(baseParam.getId());
+ if (current == null) {
+ throw new RuntimeException("鍙傛暟涓嶅瓨鍦�");
+ }
+ if (StringUtils.isEmpty(baseParam.getParamCode())) {
+ baseParam.setParamCode(current.getParamCode());
+ }
+ baseParam.setUpdateUser(SecurityUtils.getUsername());
+ baseParam.setUpdateTime(LocalDateTime.now());
+ return baseMapper.updateById(baseParam);
+ }
+
+ /**
+ * 鍙傛暟瀹氫箟鍚堟硶鏍¢獙銆�
+ */
+ private void checkBaseParam(TechnologyParamDto baseParam) {
+ if (StringUtils.isEmpty(baseParam.getParamName())) {
+ throw new RuntimeException("鍙傛暟鍚嶇О涓嶈兘涓虹┖");
+ }
+ if (baseParam.getParamType() == null || !VALID_PARAM_TYPES.contains(Integer.valueOf(baseParam.getParamType()))) {
+ throw new RuntimeException("闈炴硶鍙傛暟绫诲瀷");
+ }
+
+ if (DATE_PARAM_TYPE.equals(baseParam.getParamType())) {
+ if (StringUtils.isEmpty(baseParam.getParamFormat())) {
+ throw new RuntimeException("鏃ユ湡绫诲瀷蹇呴』閰嶇疆鍙傛暟鏍煎紡(濡�: yyyy-MM-dd)");
+ }
+ try {
+ String standardPattern = normalizeDatePattern(baseParam.getParamFormat());
+ DateTimeFormatter.ofPattern(standardPattern);
+ baseParam.setParamFormat(standardPattern);
+ } catch (Exception e) {
+ throw new RuntimeException("鏃ユ湡鏍煎紡闈炴硶: " + baseParam.getParamFormat());
+ }
+ } else {
+ baseParam.setParamFormat(baseParam.getParamFormat());
+ }
+ }
+
+ /**
+ * 鐢熸垚鍙傛暟鍞竴缂栫爜锛屼緵宸ヨ壓鍙傛暟鍜岀敓浜ц鍗曞揩鐓у紩鐢ㄣ��
+ */
+ private String generateParamCode() {
+ LambdaQueryWrapper<TechnologyParam> wrapper = new LambdaQueryWrapper<>();
+ wrapper.select(TechnologyParam::getParamCode)
+ .likeRight(TechnologyParam::getParamCode, PARAM_CODE_PREFIX)
+ .orderByDesc(TechnologyParam::getParamCode)
+ .last("limit 1");
+
+ TechnologyParam last = baseMapper.selectOne(wrapper);
+ int nextNum = 1;
+ if (last != null && StringUtils.isNotEmpty(last.getParamCode())) {
+ try {
+ String numStr = last.getParamCode().replace(PARAM_CODE_PREFIX, "");
+ nextNum = Integer.parseInt(numStr) + 1;
+ } catch (Exception e) {
+ log.error("瑙f瀽 paramCode 寮傚父", e);
+ }
+ }
+ return PARAM_CODE_PREFIX + String.format("%04d", nextNum);
+ }
+
+ private String normalizeDatePattern(String pattern) {
+ return pattern.trim()
+ .replace('Y', 'y')
+ .replace('D', 'd')
+ .replace('S', 's');
+ }
+
+ private String toDisplayDatePattern(String pattern) {
+ return normalizeDatePattern(pattern);
+ }
+
+ /**
+ * 鎵归噺鍒犻櫎鍩虹鍙傛暟銆�
+ */
+ @Override
+ public int deleteBaseParamByIds(Long[] ids) {
+ if (ids == null || ids.length == 0) {
+ throw new RuntimeException("鍒犻櫎ID涓嶈兘涓虹┖");
+ }
+ return baseMapper.deleteBatchIds(Arrays.asList(ids));
+ }
}
--
Gitblit v1.9.3