From c247f5bf64c98595cc7e4efc9e1ae7ff1df79c11 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 23 四月 2026 14:05:32 +0800
Subject: [PATCH] refactor(swagger): 迁移Swagger注解到OpenAPI 3.0
---
src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java | 223 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 214 insertions(+), 9 deletions(-)
diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
index c10da3f..2db55b4 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
@@ -1,20 +1,225 @@
package com.ruoyi.technology.service.impl;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.technology.bean.dto.TechnologyRoutingOperationParamDto;
+import com.ruoyi.technology.bean.dto.TechnologyRoutingOperationParamSyncDto;
+import com.ruoyi.technology.bean.vo.TechnologyRoutingOperationParamVo;
+import com.ruoyi.technology.mapper.TechnologyOperationParamMapper;
+import com.ruoyi.technology.mapper.TechnologyParamMapper;
+import com.ruoyi.technology.mapper.TechnologyRoutingOperationMapper;
import com.ruoyi.technology.mapper.TechnologyRoutingOperationParamMapper;
+import com.ruoyi.technology.pojo.TechnologyOperationParam;
+import com.ruoyi.technology.pojo.TechnologyParam;
+import com.ruoyi.technology.pojo.TechnologyRoutingOperation;
import com.ruoyi.technology.pojo.TechnologyRoutingOperationParam;
import com.ruoyi.technology.service.TechnologyRoutingOperationParamService;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
-/**
- * <p>
- * 鐢熶骇璁㈠崟宸ヨ壓璺嚎宸ュ簭鍙傛暟琛� 鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
- * @since 2026-04-20 10:22:16
- */
+import java.util.List;
+
@Service
-public class TechnologyRoutingOperationParamServiceImpl extends ServiceImpl<TechnologyRoutingOperationParamMapper, TechnologyRoutingOperationParam> implements TechnologyRoutingOperationParamService {
+@Transactional(rollbackFor = Exception.class)
+@RequiredArgsConstructor
+public class TechnologyRoutingOperationParamServiceImpl extends ServiceImpl<TechnologyRoutingOperationParamMapper, TechnologyRoutingOperationParam>
+ implements TechnologyRoutingOperationParamService {
+ private final TechnologyRoutingOperationParamMapper technologyRoutingOperationParamMapper;
+ private final TechnologyRoutingOperationMapper technologyRoutingOperationMapper;
+ private final TechnologyOperationParamMapper technologyOperationParamMapper;
+ private final TechnologyParamMapper technologyParamMapper;
+
+ @Override
+ public IPage<TechnologyRoutingOperationParamVo> pageTechnologyRoutingOperationParam(Page<TechnologyRoutingOperationParamDto> page,
+ TechnologyRoutingOperationParamDto dto) {
+ Page<TechnologyRoutingOperationParam> entityPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
+ return this.page(entityPage, buildQueryWrapper(dto))
+ .convert(item -> BeanUtil.copyProperties(item, TechnologyRoutingOperationParamVo.class));
+ }
+
+ @Override
+ public List<TechnologyRoutingOperationParamVo> listTechnologyRoutingOperationParam(TechnologyRoutingOperationParamDto dto) {
+ return BeanUtil.copyToList(this.list(buildQueryWrapper(dto)), TechnologyRoutingOperationParamVo.class);
+ }
+
+ @Override
+ public TechnologyRoutingOperationParamVo getTechnologyRoutingOperationParamInfo(Long id) {
+ TechnologyRoutingOperationParam item = this.getById(id);
+ if (item == null) {
+ return null;
+ }
+ return BeanUtil.copyProperties(item, TechnologyRoutingOperationParamVo.class);
+ }
+
+ @Override
+ public boolean saveTechnologyRoutingOperationParam(TechnologyRoutingOperationParam item) {
+ TechnologyRoutingOperation routingOperation = getRoutingOperation(item.getTechnologyRoutingOperationId());
+ fillFromOperationParam(item, routingOperation);
+ checkDuplicate(item);
+ return this.saveOrUpdate(item);
+ }
+
+ @Override
+ public boolean removeTechnologyRoutingOperationParam(Long id) {
+ return this.removeById(id);
+ }
+
+ @Override
+ public int syncTechnologyRoutingOperationParam(TechnologyRoutingOperationParamSyncDto syncDto) {
+ if (syncDto == null || syncDto.getTechnologyRoutingOperationId() == null) {
+ throw new ServiceException("宸ヨ壓璺嚎宸ュ簭ID涓嶈兘涓虹┖");
+ }
+ TechnologyRoutingOperation routingOperation = getRoutingOperation(syncDto.getTechnologyRoutingOperationId());
+ List<TechnologyOperationParam> operationParamList = technologyOperationParamMapper.selectList(
+ Wrappers.<TechnologyOperationParam>lambdaQuery()
+ .eq(TechnologyOperationParam::getTechnologyOperationId, routingOperation.getTechnologyOperationId())
+ .orderByAsc(TechnologyOperationParam::getId)
+ );
+ boolean replaceExisting = syncDto.getReplaceExisting() == null || syncDto.getReplaceExisting();
+ if (replaceExisting) {
+ technologyRoutingOperationParamMapper.delete(
+ Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
+ .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
+ );
+ }
+ int successCount = 0;
+ for (TechnologyOperationParam operationParam : operationParamList) {
+ boolean exists = technologyRoutingOperationParamMapper.selectCount(
+ Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
+ .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, routingOperation.getId())
+ .eq(TechnologyRoutingOperationParam::getTechnologyOperationParamId, operationParam.getId())
+ ) > 0;
+ if (!replaceExisting && exists) {
+ continue;
+ }
+ TechnologyRoutingOperationParam snapshot = new TechnologyRoutingOperationParam();
+ snapshot.setTechnologyRoutingOperationId(routingOperation.getId());
+ snapshot.setTechnologyOperationParamId(operationParam.getId());
+ snapshot.setTechnologyOperationId(operationParam.getTechnologyOperationId());
+ snapshot.setStandardValue(operationParam.getStandardValue());
+ fillFromOperationParam(snapshot, routingOperation);
+ technologyRoutingOperationParamMapper.insert(snapshot);
+ successCount++;
+ }
+ return successCount;
+ }
+
+ private LambdaQueryWrapper<TechnologyRoutingOperationParam> buildQueryWrapper(TechnologyRoutingOperationParamDto dto) {
+ TechnologyRoutingOperationParam query = dto == null ? new TechnologyRoutingOperationParam() : dto;
+ return Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
+ .eq(query.getId() != null, TechnologyRoutingOperationParam::getId, query.getId())
+ .eq(query.getTechnologyRoutingOperationId() != null,
+ TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, query.getTechnologyRoutingOperationId())
+ .eq(query.getTechnologyOperationId() != null,
+ TechnologyRoutingOperationParam::getTechnologyOperationId, query.getTechnologyOperationId())
+ .eq(query.getTechnologyOperationParamId() != null,
+ TechnologyRoutingOperationParam::getTechnologyOperationParamId, query.getTechnologyOperationParamId())
+ .eq(query.getParamId() != null, TechnologyRoutingOperationParam::getParamId, query.getParamId())
+ .eq(query.getParamType() != null, TechnologyRoutingOperationParam::getParamType, query.getParamType())
+ .like(query.getParamCode() != null && !query.getParamCode().isEmpty(),
+ TechnologyRoutingOperationParam::getParamCode, query.getParamCode())
+ .like(query.getParamName() != null && !query.getParamName().isEmpty(),
+ TechnologyRoutingOperationParam::getParamName, query.getParamName())
+ .orderByAsc(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId)
+ .orderByAsc(TechnologyRoutingOperationParam::getId);
+ }
+
+ private TechnologyRoutingOperation getRoutingOperation(Long technologyRoutingOperationId) {
+ if (technologyRoutingOperationId == null) {
+ throw new ServiceException("宸ヨ壓璺嚎宸ュ簭ID涓嶈兘涓虹┖");
+ }
+ TechnologyRoutingOperation routingOperation = technologyRoutingOperationMapper.selectById(technologyRoutingOperationId);
+ if (routingOperation == null) {
+ throw new ServiceException("宸ヨ壓璺嚎宸ュ簭涓嶅瓨鍦�");
+ }
+ return routingOperation;
+ }
+
+ private void fillFromOperationParam(TechnologyRoutingOperationParam item, TechnologyRoutingOperation routingOperation) {
+ if (item.getTechnologyOperationId() == null) {
+ item.setTechnologyOperationId(routingOperation.getTechnologyOperationId());
+ } else if (!item.getTechnologyOperationId().equals(routingOperation.getTechnologyOperationId())) {
+ throw new ServiceException("宸ュ簭ID涓庡伐鑹鸿矾绾垮伐搴忎笉鍖归厤");
+ }
+
+ if (item.getTechnologyOperationParamId() != null) {
+ TechnologyOperationParam operationParam = technologyOperationParamMapper.selectById(item.getTechnologyOperationParamId());
+ if (operationParam == null) {
+ throw new ServiceException("宸ュ簭鍙傛暟涓嶅瓨鍦�");
+ }
+ if (!routingOperation.getTechnologyOperationId().equals(operationParam.getTechnologyOperationId())) {
+ throw new ServiceException("宸ュ簭鍙傛暟涓嶅睘浜庡綋鍓嶅伐鑹鸿矾绾垮伐搴�");
+ }
+ TechnologyParam technologyParam = technologyParamMapper.selectById(operationParam.getTechnologyParamId());
+ if (technologyParam == null) {
+ throw new ServiceException("鍩虹鍙傛暟涓嶅瓨鍦�");
+ }
+ fillFromTechnologyParam(item, technologyParam);
+ if (item.getStandardValue() == null) {
+ item.setStandardValue(operationParam.getStandardValue());
+ }
+ return;
+ }
+
+ if (item.getParamId() != null) {
+ TechnologyParam technologyParam = technologyParamMapper.selectById(item.getParamId());
+ if (technologyParam == null) {
+ throw new ServiceException("鍩虹鍙傛暟涓嶅瓨鍦�");
+ }
+ fillFromTechnologyParam(item, technologyParam);
+ TechnologyOperationParam operationParam = technologyOperationParamMapper.selectOne(
+ Wrappers.<TechnologyOperationParam>lambdaQuery()
+ .eq(TechnologyOperationParam::getTechnologyOperationId, routingOperation.getTechnologyOperationId())
+ .eq(TechnologyOperationParam::getTechnologyParamId, item.getParamId())
+ .orderByAsc(TechnologyOperationParam::getId)
+ .last("limit 1")
+ );
+ if (operationParam != null) {
+ item.setTechnologyOperationParamId(operationParam.getId());
+ if (item.getStandardValue() == null) {
+ item.setStandardValue(operationParam.getStandardValue());
+ }
+ }
+ return;
+ }
+
+ throw new ServiceException("paramId鎴杢echnologyOperationParamId涓嶈兘涓虹┖");
+ }
+
+ private void fillFromTechnologyParam(TechnologyRoutingOperationParam item, TechnologyParam technologyParam) {
+ item.setParamId(technologyParam.getId());
+ item.setParamCode(technologyParam.getParamCode());
+ item.setParamName(technologyParam.getParamName());
+ item.setParamType(technologyParam.getParamType());
+ item.setParamFormat(technologyParam.getParamFormat());
+ item.setUnit(technologyParam.getUnit());
+ item.setIsRequired(technologyParam.getIsRequired());
+ if (item.getRemark() == null || item.getRemark().trim().isEmpty()) {
+ item.setRemark(technologyParam.getRemark());
+ }
+ }
+
+ private void checkDuplicate(TechnologyRoutingOperationParam item) {
+ boolean duplicate = technologyRoutingOperationParamMapper.selectCount(
+ Wrappers.<TechnologyRoutingOperationParam>lambdaQuery()
+ .eq(TechnologyRoutingOperationParam::getTechnologyRoutingOperationId, item.getTechnologyRoutingOperationId())
+ .eq(item.getTechnologyOperationParamId() != null,
+ TechnologyRoutingOperationParam::getTechnologyOperationParamId, item.getTechnologyOperationParamId())
+ .eq(item.getTechnologyOperationParamId() == null && item.getParamId() != null,
+ TechnologyRoutingOperationParam::getParamId, item.getParamId())
+ .eq(item.getTechnologyOperationParamId() == null && item.getParamId() == null && item.getParamCode() != null,
+ TechnologyRoutingOperationParam::getParamCode, item.getParamCode())
+ .ne(item.getId() != null, TechnologyRoutingOperationParam::getId, item.getId())
+ ) > 0;
+ if (duplicate) {
+ throw new ServiceException("宸ヨ壓璺嚎宸ュ簭鍙傛暟閲嶅");
+ }
+ }
}
--
Gitblit v1.9.3