package com.xy.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xy.dto.DeviceTempSetDto;
import com.xy.entity.DeviceTempSet;
import com.xy.mapper.DeviceTempSetMapper;
import com.xy.utils.Emptys;
import com.xy.utils.MybatisPlusQuery;
import com.xy.utils.R;
import com.xy.utils.enums.DeviceTempSetStatusEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import static com.xy.utils.Beans.copy;

/**
 * <p>
 * 设备温度设置实现类
 * </p>
 *
 * @author hechunping
 * @since 2023/3/20
 */
@Service
@Api(tags = "设备温度设置")
public class DeviceTempSetServiceImpl extends ServiceImpl<DeviceTempSetMapper, DeviceTempSet> implements DeviceTempSetService {

    @ApiOperation("新增")
    @PostMapping("save")
    public R save(@RequestBody DeviceTempSetDto.Save dto) {
        DeviceTempSet save = copy(DeviceTempSet.class, dto);
        save.setStatus(DeviceTempSetStatusEnum.SETTING.getCode());
        save(save);
        return R.ok();
    }

    @ApiOperation("获取最新一条记录")
    @PostMapping("getLastOne")
    public R<DeviceTempSetDto.Vo> getLastOne(@RequestBody DeviceTempSetDto.GetLastOneDto dto) {
        LambdaQueryWrapper lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(dto, DeviceTempSet.class)
                .build()
                .orderByDesc(DeviceTempSet::getId)
                .last("limit 1");
        DeviceTempSet tempSet = getOne(lambdaQueryWrapper);
        if (Emptys.check(tempSet)) {
            return R.ok(copy(DeviceTempSetDto.Vo.class, tempSet));
        }
        return R.ok();
    }
}
