From f43cbe675407f42f72945e901f34b44d494129f3 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 25 四月 2026 11:01:50 +0800
Subject: [PATCH] feat(technology): 添加工艺路线工序排序功能
---
src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java | 2 +
src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java | 35 +++++++++--------
src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java | 7 +++
src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java | 34 +++++++++++++++++
4 files changed, 62 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java b/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java
index 37868f8..eea52a0 100644
--- a/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java
+++ b/src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java
@@ -7,6 +7,7 @@
import com.ruoyi.technology.bean.vo.TechnologyRoutingOperationVo;
import com.ruoyi.technology.pojo.TechnologyRoutingOperation;
import com.ruoyi.technology.service.TechnologyRoutingOperationService;
+import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
@@ -57,4 +58,10 @@
public R remove(@PathVariable("id") Long id) {
return R.ok(technologyRoutingOperationService.removeTechnologyRoutingOperation(id));
}
+
+ @PostMapping ("/sort")
+ @Operation(summary = "鎺掑簭宸ヨ壓璺嚎宸ュ簭")
+ public R sort(@RequestBody TechnologyRoutingOperation technologyRoutingOperation) {
+ return R.ok(technologyRoutingOperationService.sort(technologyRoutingOperation));
+ }
}
diff --git a/src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java b/src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java
index 25b468f..40c8710 100644
--- a/src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java
+++ b/src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java
@@ -21,4 +21,6 @@
boolean saveTechnologyRoutingOperation(TechnologyRoutingOperation technologyRoutingOperation);
boolean removeTechnologyRoutingOperation(Long id);
+
+ int sort(TechnologyRoutingOperation technologyRoutingOperation);
}
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 2db55b4..9f270fa 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java
@@ -3,6 +3,7 @@
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.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -90,23 +91,25 @@
);
}
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;
+ if (CollectionUtils.isNotEmpty(operationParamList)) {
+ 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++;
}
- 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;
}
diff --git a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java
index 1daf6dc..bff3a44 100644
--- a/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java
+++ b/src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java
@@ -76,6 +76,40 @@
return removed;
}
+ @Override
+ public int sort(TechnologyRoutingOperation technologyRoutingOperation) {
+ //鏌ヨ琚敼鍔ㄧ殑杩欐潯鏁版嵁
+ TechnologyRoutingOperation oldtechnologyRoutingOperation = technologyRoutingOperationMapper.selectById(technologyRoutingOperation.getId());
+ //鏌ヨ璇ュ伐鑹鸿矾绾跨殑鎵�鏈夊伐搴忓苟鎸夌収椤哄簭鎺掑簭
+ List<TechnologyRoutingOperation> technologyRouteOperations = technologyRoutingOperationMapper.selectList(Wrappers.<TechnologyRoutingOperation>lambdaQuery()
+ .eq(TechnologyRoutingOperation::getTechnologyRoutingId, oldtechnologyRoutingOperation.getTechnologyRoutingId())
+ .orderByAsc(TechnologyRoutingOperation::getDragSort));
+ // 鑾峰彇鐩爣浣嶇疆锛堢Щ鍔ㄥ埌绗嚑涓箣鍚庯級
+ Integer targetPosition = technologyRoutingOperation.getDragSort();
+ if (targetPosition != null && targetPosition >= 0) {
+ // 绉诲姩鍏冪礌鍒版柊鐨勪綅缃�
+ technologyRouteOperations.remove(oldtechnologyRoutingOperation);
+ technologyRouteOperations.add(targetPosition-1, oldtechnologyRoutingOperation);
+ // 鏇存柊鎵�鏈夊彈褰卞搷鐨勬帓搴忓瓧娈�
+ for (int i = 0; i < technologyRouteOperations.size(); i++) {
+ TechnologyRoutingOperation item = technologyRouteOperations.get(i);
+ if (!item.getId().equals(oldtechnologyRoutingOperation.getId())) {
+ // 妫�鏌ユ槸鍚﹂渶瑕佹洿鏂版帓搴忓��
+ if (item.getDragSort() != i+1) {
+ item.setDragSort(i+1);
+ technologyRoutingOperationMapper.updateById(item);
+ }
+ } else {
+ // 鏇存柊鍘熻褰曠殑鏂版帓搴忎綅缃�
+ oldtechnologyRoutingOperation.setDragSort(targetPosition);
+ technologyRoutingOperationMapper.updateById(oldtechnologyRoutingOperation);
+ }
+ }
+ return 1;
+ }
+ return 0;
+ }
+
private Integer nextDragSort(Long technologyRoutingId) {
TechnologyRoutingOperation lastOperation = technologyRoutingOperationMapper.selectOne(
Wrappers.<TechnologyRoutingOperation>lambdaQuery()
--
Gitblit v1.9.3