|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|