spring boot 批量更新数据

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>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值