beetlsql3-dev
Mlxa0324 2 years ago
parent 86d6dd2199
commit d66f27ea72

@ -61,6 +61,7 @@ import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
import static com.ibeetl.jlw.enums.CopyFromEnum.FROM_OPEN_COURSE;
import static com.ibeetl.jlw.enums.GlobalUpStatusEnum.UP;
import static java.lang.Math.min;
import static java.math.BigDecimal.ROUND_HALF_UP;
import static java.util.stream.Collectors.toSet;
/**
@ -1289,13 +1290,19 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
/**
* : <br>
*
*
*
*
* ID
* ID
* ID
*
* @param id ID
* @param leftId ID
* @param rightId ID
* @param leftId ID ID
* @param rightId ID ID
*
* ==>
* ==>
*
*
*
* @Author: 87966
* @Date: 2023/1/9 16:44
*/
@ -1311,23 +1318,60 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService<Tea
// 是否有元素
boolean isHaveRight = allElement.stream().anyMatch(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(rightId));
// 断言
Assert.isTrue(isHaveSelf, "未查询到要移动的元素!");
Assert.isFalse(!isHaveLeft && !isHaveRight, "左右元素ID不能同时为空");
// 自身元素
TeacherOpenCourseMergeCourseInfo selfElement = allElement.stream()
.filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(id)).findFirst().get();
// 左侧元素
TeacherOpenCourseMergeCourseInfo leftElement = allElement.stream()
.filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(leftId)).findFirst().orElse(null);
// 右侧元素
TeacherOpenCourseMergeCourseInfo rightElement = allElement.stream()
.filter(item -> item.getTeacherOpenCourseMergeCourseInfoId().equals(rightId)).findFirst().orElse(null);
// 定义排序值
BigDecimal clacedOrder = null;
// 左移动,无法确定右侧边界,适用于置顶
if (isHaveLeft && !isHaveRight) {
BigDecimal leftOrder = defaultIfNull(leftElement.getTeacherOpenCourseMergeCourseInfoOrder(), BigDecimal.ZERO);
// 数据库里存小数点后六位的排序值
// 随机取值 0.0001 到 0.0005之间
BigDecimal randomNum = RandomUtil.randomBigDecimal(new BigDecimal("0.0001"), new BigDecimal("0.0005")).setScale(6, ROUND_HALF_UP);
// 计算后的排序值
clacedOrder = leftOrder.subtract(randomNum);
}
// 右移动,无法确定左侧边界,适用于置底
else if (!isHaveLeft && isHaveRight) {
BigDecimal rightOrder = defaultIfNull(rightElement.getTeacherOpenCourseMergeCourseInfoOrder(), BigDecimal.ZERO);
// 数据库里存小数点后六位的排序值
// 随机取值 0.0001 到 0.0005之间
BigDecimal randomNum = RandomUtil.randomBigDecimal(new BigDecimal("0.0001"), new BigDecimal("0.0005")).setScale(6, ROUND_HALF_UP);
// 计算后的排序值
clacedOrder = rightOrder.add(randomNum);
}
// 可以确定左右两侧边界,移动的比较精准
else if (isHaveLeft && isHaveRight) {
BigDecimal leftOrder = defaultIfNull(leftElement.getTeacherOpenCourseMergeCourseInfoOrder(), BigDecimal.ZERO);
BigDecimal rightOrder = defaultIfNull(rightElement.getTeacherOpenCourseMergeCourseInfoOrder(), BigDecimal.ONE);
// 随机取值
BigDecimal randomNum = RandomUtil.randomBigDecimal(leftOrder, rightOrder).setScale(6, ROUND_HALF_UP);
// 计算后的排序值
clacedOrder = rightOrder.add(randomNum);
}
// 最后更新排序值
if (clacedOrder != null) {
TeacherOpenCourseMergeCourseInfo updatePO = new TeacherOpenCourseMergeCourseInfo();
updatePO.setTeacherOpenCourseMergeCourseInfoId(selfElement.getTeacherOpenCourseMergeCourseInfoId());
updatePO.setTeacherOpenCourseMergeCourseInfoOrder(clacedOrder);
updateTemplate(updatePO);
}
}
}

@ -593,9 +593,14 @@ public class TeacherOpenCourseMergeCourseInfoController{
*
*
*
* ==>
* ==>
*
*
*
* @param id ID
* @param leftId ID
* @param rightId ID
* @param leftId ID ID
* @param rightId ID ID
* @return {@link JsonResult}
* @Author: 87966
* @Date: 2023/1/9 16:44

Loading…
Cancel
Save