ids
status:0,1状态
pageId:父级页ID
navController.jave
/**
* 批量组排序
*/
@RequestMapping(value = "screen_sort")
@ResponseBody
public ResponseData doScreenSort(@RequestParam(required = false, value = "ids[]") Integer[] ids, @RequestParam("status") Integer status, @RequestParam("pageId") Integer pageId) {
if (Detect.notEmpty(ids)) {
List<Integer> idList = Arrays.asList(ids);
try {
Integer b = iDmsNavigationScreenService.navScreenSort(idList, status, pageId);
if (b==1) {
return ResponseUtil.success("修改成功");
} else {
if(b==2) {
return ResponseUtil.businessError("不可上移");
} else if(b==3) {
return ResponseUtil.businessError("不可下移");
} else {
return ResponseUtil.businessError("移动失败");
}
}
} catch (Exception e) {
log.error("do_move_up_v_down_nav_screen_sort,err--{}", e);
return ResponseUtil.businessError("移动失败");
}
} else {
return ResponseUtil.paramInvalidError("参数错误");
}
}
iDmsNavigationScreenService.java
/**
* 批量上下移
*/
Integer navScreenSort(List<Integer> ids, Integer status, Integer pageId);
navServiceImpl.java
@Override
public Integer navScreenSort(List<Integer> checkedList, Integer status, Integer pageId) {
//组上线列表
EntityWrapper<DmsNavigationScreen> entityWrapper = new EntityWrapper<>();
entityWrapper.eq("page_id", pageId);
entityWrapper.eq("fr_epg_status", LoadData.getDicIdByKey(Constant.DB_DESKTOP_SCREEN_STATUS_ONLINE));
entityWrapper.isNull("deleted_at");
entityWrapper.orderBy("sort", true);
List<DmsNavigationScreen> screens = iDmsNavigationScreenService.selectList(entityWrapper);
if (!screens.isEmpty()) {
List<Integer> onlinesArrayList = new ArrayList<>();
//所选位置 ID对应
Map<Integer,Integer> keyMapList = new LinkedHashMap<>();
Map<Integer,Integer> sortMapList = new LinkedHashMap<>();
Map<Integer,Integer> dataMapList = new LinkedHashMap<>();
Integer k = 0;
for (DmsNavigationScreen screen : screens) {
onlinesArrayList.add(screen.getId());
sortMapList.put(screen.getId(), screen.getSort());
if(checkedList.contains(screen.getId())) {
keyMapList.put(screen.getId(),k);
}
k++;
}
Integer onlinesArrayLength = onlinesArrayList.size();
if(status==0) {
if (keyMapList.values().contains(0)) {
System.out.println("不可上移");
return 2;
}
for(Integer keys :keyMapList.keySet()){
Integer key = keyMapList.get(keys);
Integer tmp = onlinesArrayList.get(key - 1);
Integer sortTmp = sortMapList.get(tmp);
Integer sorts = sortMapList.get(onlinesArrayList.get(key));
sortMapList.put(onlinesArrayList.get(key - 1), sorts);
dataMapList.put(onlinesArrayList.get(key - 1), sorts);
onlinesArrayList.set(key - 1, onlinesArrayList.get(key));
sortMapList.put(onlinesArrayList.get(key), sortTmp);
dataMapList.put(onlinesArrayList.get(key), sortTmp);
onlinesArrayList.set(key, tmp);
}
} else {
if (keyMapList.values().contains(onlinesArrayLength - 1)) {
System.out.println("不可下移");
return 3;
}
Integer checkedListLength = checkedList.size();
List<Integer> checkedKeyArrayList = new ArrayList<Integer>(keyMapList.values());
for (int i = checkedListLength - 1; i >= 0; i--) {
Integer v = checkedKeyArrayList.get(i);
Integer t = v++;
Integer tmp = onlinesArrayList.get(t);
Integer sortTmp = sortMapList.get(tmp);
Integer sorts = sortMapList.get(onlinesArrayList.get(v));
sortMapList.put(onlinesArrayList.get(t), sorts);
dataMapList.put(onlinesArrayList.get(t), sorts);
onlinesArrayList.set(t, onlinesArrayList.get(v));
sortMapList.put(onlinesArrayList.get(v), sortTmp);
dataMapList.put(onlinesArrayList.get(t), sortTmp);
onlinesArrayList.set(v, tmp);
}
}
//return true;
return dmsNavigationScreenMapper.updateScreenSort(dataMapList) > 0 ? 1 : 0;
}
return 0;
}
dmsNavigationScreenMapper.java
/**
* 批量更新排序
*/
Integer updateScreenSort(@Param("mapList") Map<Integer,Integer> dataMapList);
mapper.xml
<update id="updateScreenSort" parameterType="java.util.Map">
UPDATE dms_navigation_screen SET sort = CASE id
<foreach collection="mapList" index="index" item="item">
<if test="item != null">
WHEN #{index} THEN #{item}
</if>
</foreach>
END WHERE id IN (
<foreach collection="mapList" item="item" index="index" separator=",">
<if test="item != null">
#{index}
</if>
</foreach>
)
</update>