2026-04-28 ebd79c8749eea0c4b3ca88b4eac0229cb11d1684
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()