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()