113 lines
5.1 KiB
Java
113 lines
5.1 KiB
Java
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);
|
||
}
|
||
|
||
|
||
}
|