vdi/nex-be/src/main/java/com/unisinsight/project/controller/DeviceImageMappingControlle...

113 lines
5.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.unisinsight.project.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.unisinsight.project.entity.dao.DeviceImageMapping;
import com.unisinsight.project.entity.req.DeviceImageMappingReq;
import com.unisinsight.project.entity.res.DeviceImageMappingRes;
import com.unisinsight.project.entity.res.ListReq;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.DeviceImageMappingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @description:
* @author: rdpnr_puzhi
* @create: 2025/08/07
*/
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/device/image/mapping")
@Api(tags = "终端镜像映射关系类")
public class DeviceImageMappingController {
@Resource
private DeviceImageMappingService deviceImageMappingService;
@ApiOperation(value = "终端镜像映射新增")
@PostMapping("/add")
public Result<?> insert(@RequestBody ListReq<DeviceImageMappingReq> deviceImageMappingReq) {
if (Objects.isNull(deviceImageMappingReq.getData())) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("终端镜像映射新增请求参数为:{}", JSONUtil.toJsonStr(deviceImageMappingReq));
QueryWrapper<DeviceImageMapping> wrapper = new QueryWrapper<>();
if (CollectionUtil.isEmpty(deviceImageMappingReq.getData()) && ObjectUtils.isNotEmpty(deviceImageMappingReq.getDeviceId())) {
wrapper.lambda().eq(DeviceImageMapping::getDeviceId, deviceImageMappingReq.getDeviceId());
List<DeviceImageMapping> list = deviceImageMappingService.list(wrapper);
List<Long> collect = list.stream().map(DeviceImageMapping::getId).filter(Objects::nonNull).distinct().collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(collect)) {
boolean removedByIds = deviceImageMappingService.removeByIds(collect);
log.info("终端镜像映射新增接口删除了 {} 条旧数据ID列表: {}", removedByIds, collect);
}
return Result.successResult();
}
List<DeviceImageMappingReq> reqData = deviceImageMappingReq.getData();
List<DeviceImageMappingReq> addList = reqData.stream().distinct().filter(e -> Objects.isNull(e.getId())).collect(Collectors.toList());
wrapper.lambda().eq(DeviceImageMapping::getDeviceId, reqData.get(0).getDeviceId());
List<DeviceImageMapping> list = deviceImageMappingService.list(wrapper);
if (CollectionUtil.isNotEmpty(list)) {
Set<Long> requestIds = reqData.stream()
.map(DeviceImageMappingReq::getId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
List<Long> idsToDelete = list.stream()
.map(DeviceImageMapping::getId)
.filter(Objects::nonNull)
.filter(id -> !requestIds.contains(id))
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(idsToDelete)) {
deviceImageMappingService.removeByIds(idsToDelete);
log.info("删除了 {} 条不匹配的旧数据ID列表: {}", idsToDelete.size(), idsToDelete);
}
}
if (CollectionUtil.isNotEmpty(addList)) {
List<DeviceImageMapping> deviceImageMappings = BeanUtil.copyToList(addList, DeviceImageMapping.class);
List<DeviceImageMapping> deviceImageMappingList = deviceImageMappings.stream().peek(e -> {
e.setCreateUser("admin");
}).collect(Collectors.toList());
boolean insert = deviceImageMappingService.saveBatch(deviceImageMappingList);
log.info("终端镜像映射新增insert:{}", insert);
if (!insert) {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
}
}
return Result.successResult();
}
@ApiOperation(value = "终端镜像映射查询")
@PostMapping("/select")
public Result<List<DeviceImageMappingRes>> select(@RequestBody DeviceImageMappingReq deviceImageMappingReq) {
if (Objects.isNull(deviceImageMappingReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("终端镜像映射查询请求参数为:{}", JSONUtil.toJsonStr(deviceImageMappingReq));
return deviceImageMappingService.select(deviceImageMappingReq);
}
}