zss
2026-04-25 f43cbe675407f42f72945e901f34b44d494129f3
feat(technology): 添加工艺路线工序排序功能
已修改4个文件
78 ■■■■ 文件已修改
src/main/java/com/ruoyi/technology/controller/TechnologyRoutingOperationController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/technology/service/TechnologyRoutingOperationService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationParamServiceImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/technology/service/impl/TechnologyRoutingOperationServiceImpl.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
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);
}
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;
    }
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()