java+postgresql+swagger-单表关联insert、delete、update操作(五)

入参为json,然后根据需要对表进行操作:

1、实体:

1、表实体:

package com.example.springbootmybatisplus.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Data
@TableName(value = "tb_devicestatus")
@ApiModel(value = "设备定位信息")
public class TbDevicestatus implements Serializable {
    /**
     * 设备号
     */
    @TableId(value = "devicenumber", type = IdType.AUTO)
    @ApiModelProperty(value = "设备号")
    private String devicenumber;

    /**
     * 点源
     */
    @TableField(value = "pointsource")
    @ApiModelProperty(value = "点源")
    private Short pointSource;

    /**
     * 设备状态:0 未启用;1 离线;2 静止;3 行驶中
     */
    @TableField(value = "devicestate")
    @ApiModelProperty(value = "设备状态:0 未启用;1 离线;2 静止;3 行驶中")
    private Short deviceState;

    /**
     * 定位方式:0 GPS;1 基站;2 WiFi;3 北斗;4 GPS/北斗混合
     */
    @TableField(value = "locationtype")
    @ApiModelProperty(value = "定位方式:0 GPS;1 基站;2 WiFi;3 北斗;4 GPS/北斗混合")
    private Short locationType;

    /**
     * 原始纬度
     */
    @TableField(value = "devicelat")
    @ApiModelProperty(value = "原始纬度")
    private BigDecimal deviceLat;

    /**
     * 原始经度
     */
    @TableField(value = "devicelng")
    @ApiModelProperty(value = "原始经度")
    private BigDecimal deviceLng;

    /**
     * 当前电量
     */
    @TableField(value = "batterypct")
    @ApiModelProperty(value = "当前电量")
    private BigDecimal batteryPct;

    /**
     * 定位时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat
    @TableField(value = "locationtime")
    @ApiModelProperty(value = "定位时间")
    private Date locationTime;

    /**
     * 通讯时间
     */
    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat
    @TableField(value = "lasttime")
    @ApiModelProperty(value = "通讯时间")
    private Date lastTime;

    /**
     * 速度(km/h)
     */
    @TableField(value = "speed")
    @ApiModelProperty(value = "速度(km/h)")
    private BigDecimal speed;

    /**
     * 速度(km/h)
     */
    @TableField(value = "nowstatelocation")
    @ApiModelProperty(value = "当前状态定位时间")
    private Date nowStateLocation;

    /**
     * 设备的最新一次离线时间
     */
    @TableField(value = "lastoffelinetime")
    @ApiModelProperty(value = "设备的最新一次离线时间")
    private Date lastOffelineTime;

    /**
     * 备注json
     */
    @TableField(value = "jsonstring")
    private String jsonString;
    /**
     * 创建时间
     */
    @TableField(value = "createdat")
    @ApiModelProperty(value = "创建时间")
    private Date createdAt;
    /**
     * 创建操作人
     */
    @TableField(value = "createdbyid")
    @ApiModelProperty(value = "创建操作人")
    private String createdById;
    /**
     * 更新时间
     */
    @TableField(value = "updatedat")
    @ApiModelProperty(value = "更新时间")
    private Date updatedAt;
    /**
     * 更新操作人
     */
    @TableField(value = "updatedbyid")
    @ApiModelProperty(value = "更新操作人")
    private String updatedById;
    /**
     * 删除时间
     */
    @TableField(value = "deletedat")
    @ApiModelProperty(value = "删除时间")
    private Date deletedAt;
    /**
     * 删除操作人
     */
    @TableField(value = "deletedbyid")
    @ApiModelProperty(value = "删除操作人")
    private String deletedById;
    /**
     * 是否删除(f否t是)
     */
    @TableField(value = "deleted")
    private Boolean deleted;
}

2、接收json的实体:

package com.example.springbootmybatisplus.dto;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
@Data
public class DeviceStatusDto {
    private String devicenumber;
    private Short pointSource;
    private Short deviceState;
    private Short locationType;
    private BigDecimal deviceLat;
    private BigDecimal deviceLng;
    private BigDecimal batteryPct;
    private Date locationTime;
    private Date lastTime;
    private BigDecimal speed;
    private Date nowStateLocation;
    private Date lastOffelineTime;
    private String jsonString;
    private Date createdAt;
    private String createdById;
    private Date updatedAt;
    private String updatedById;
    private Date deletedAt;
    private String deletedById;
    private Boolean deleted;
}

3、Mapper:

package com.example.springbootmybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;



@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {
    @Select("select 1 from tb_devicestatus where devicenumber = #{devicenumber} and pointsource=#{pointsource}")
    Integer getDeviceStatusByDevicenumber(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);

    @Delete("DELETE FROM tb_devicestatus WHERE devicenumber = #{devicenumber} and pointsource=#{pointsource}")
    int deleteDeviceStateList(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);

}
package com.example.springbootmybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface ObjectMapper extends BaseMapper<DeviceStatusDto> {

}

4、Service:

package com.example.springbootmybatisplus.service;

import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Objects;


@Service
public class TbDevicestatusService {
    private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);

    @Autowired
    private TbDevicestatusMapper tbDevicestatusMapper;

    public void addDeviceStatus(String msg) {
        try {
            /**
             * 接收入参json导新实体中
             * */
            DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
            /**
             * 判断接收的实体是否为空
             */
            if (Objects.isNull(deviceStatusDto)) {
                log.info("设备定位信息接收为空");
                return;
            }
            /**
             * 实体中的数据在表中是否存在,存在根据函数输出1,不存在输出null
             */
            Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
            /**
             * 若数据已在表中存在,则删掉
             */
            if (existCount!=null && existCount > 0) {
                tbDevicestatusMapper.deleteDeviceStateList(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
                log.info("设备已存在,已删除:{}", deviceStatusDto.getDevicenumber());
            }
            /**
             * 根据需要将实体中数据写进新的参数中,并写进表实体中
             */
            TbDevicestatus tbDevicestatus = insertIntoTbDevicestatus(deviceStatusDto);
            /**
             * 将实体中的数据写入表中
             */
            tbDevicestatusMapper.insert(tbDevicestatus);
            log.info("设备数据已插入:{}", deviceStatusDto.getDevicenumber());
        } catch (Exception e) {
            log.error("异常信息:" + e.getMessage());
        }
    }

    public TbDevicestatus insertIntoTbDevicestatus(DeviceStatusDto deviceStatusDto) {
        TbDevicestatus aa = new TbDevicestatus();
        aa.setDevicenumber(deviceStatusDto.getDevicenumber());
        aa.setDeviceState(deviceStatusDto.getDeviceState());
        aa.setDeviceLng(deviceStatusDto.getDeviceLng());
        aa.setDeviceLat(deviceStatusDto.getDeviceLat());
        aa.setLocationType(deviceStatusDto.getLocationType());
        aa.setBatteryPct(deviceStatusDto.getBatteryPct());
        aa.setLocationTime(deviceStatusDto.getLocationTime());
        aa.setLastTime(deviceStatusDto.getLastTime());
        aa.setPointSource(deviceStatusDto.getPointSource());
        aa.setSpeed(deviceStatusDto.getSpeed());
        aa.setNowStateLocation(deviceStatusDto.getNowStateLocation());
        aa.setLastOffelineTime(deviceStatusDto.getLastOffelineTime());
        return aa;
    }
}

5、Controller:

package com.example.springbootmybatisplus.contronller;


import com.example.springbootmybatisplus.service.TbDevicestatusService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("/device-status")
@Api(tags = "DeviceStatusController")
public class TbDeviceStatusController {
    @Autowired
    private TbDevicestatusService tbDevicestatusService;

    @PostMapping("/insert1")
    public ResponseEntity<String> insert1(@RequestBody String msg) {
       try {
           tbDevicestatusService.addDeviceStatus(msg);
           return ResponseEntity.status(HttpStatus.CREATED).body("1111");
       }catch (Exception e){
           return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("2222");
       }
    }
}

另一种写法:

Mapper:

package com.example.springbootmybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;

@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {
    @Select("select 1 from tb_devicestatus where devicenumber = #{devicenumber} and pointsource=#{pointsource}")
    Integer getDeviceStatusByDevicenumber(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);
}

Service:

package com.example.springbootmybatisplus.service;

import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Objects;


@Service
public class TbDevicestatusService {
    private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);

    @Autowired
    private TbDevicestatusMapper tbDevicestatusMapper;

    public void addDeviceStatus(String msg) {
        try {
            DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
            if (Objects.isNull(deviceStatusDto)) {
                log.info("设备定位信息接收为空");
                return;
            }
            Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
            if (existCount != null && existCount > 0) {
                TbDevicestatus tbDevicestatus=deleteTbDevicestatus(deviceStatusDto);
                tbDevicestatusMapper.deleteById(tbDevicestatus);
                log.info("设备已存在,已删除:{}", deviceStatusDto.getDevicenumber());
            }
            TbDevicestatus tbDevicestatus = insertIntoTbDevicestatus(deviceStatusDto);
            tbDevicestatusMapper.insert(tbDevicestatus);
            log.info("设备数据已插入:{}", deviceStatusDto.getDevicenumber());
        } catch (Exception e) {
            log.error("异常信息:" + e.getMessage());
        }
    }

    public TbDevicestatus insertIntoTbDevicestatus(DeviceStatusDto deviceStatusDto) {
        TbDevicestatus aa = new TbDevicestatus();
        aa.setDevicenumber(deviceStatusDto.getDevicenumber());
        aa.setDeviceState(deviceStatusDto.getDeviceState());
        aa.setDeviceLng(deviceStatusDto.getDeviceLng());
        aa.setDeviceLat(deviceStatusDto.getDeviceLat());
        aa.setLocationType(deviceStatusDto.getLocationType());
        aa.setBatteryPct(deviceStatusDto.getBatteryPct());
        aa.setLocationTime(deviceStatusDto.getLocationTime());
        aa.setLastTime(deviceStatusDto.getLastTime());
        aa.setPointSource(deviceStatusDto.getPointSource());
        aa.setSpeed(deviceStatusDto.getSpeed());
        aa.setNowStateLocation(deviceStatusDto.getNowStateLocation());
        aa.setLastOffelineTime(deviceStatusDto.getLastOffelineTime());
        return aa;
    }

    public TbDevicestatus deleteTbDevicestatus(DeviceStatusDto deviceStatusDto){
        TbDevicestatus bb=new TbDevicestatus();
        bb.setDevicenumber(deviceStatusDto.getDevicenumber());
        bb.setPointSource(deviceStatusDto.getPointSource());
        return bb;
    }
}

6、调用接口打印的日志:

7、update相关操作:

Mapper:

package com.example.springbootmybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;



@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {

}

Controller:

package com.example.springbootmybatisplus.service;

import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.Objects;


@Service
public class TbDevicestatusService {
    private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);

    @Autowired
    private TbDevicestatusMapper tbDevicestatusMapper;

    public void addDeviceStatus(String msg) {
        try {
            DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
            if (Objects.isNull(deviceStatusDto)) {
                log.info("设备定位信息接收为空");
                return;
            }
            Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
            if (existCount != null && existCount > 0) {
                TbDevicestatus tbDevicestatus=updateTbDevicestatus(deviceStatusDto);
                tbDevicestatusMapper.updateById(tbDevicestatus);
                log.info("设备:{}", deviceStatusDto.getDevicenumber()+"的updateat时间已更新成"+new Date());
            }
        } catch (Exception e) {
            log.error("异常信息:" + e.getMessage());
        }
    }
    public TbDevicestatus updateTbDevicestatus(DeviceStatusDto deviceStatusDto){
        TbDevicestatus cc=new TbDevicestatus();
        cc.setDevicenumber(deviceStatusDto.getDevicenumber());
        cc.setPointSource(deviceStatusDto.getPointSource());
        cc.setUpdatedAt(new Date());
        return cc;
    }
}

调用接口打印日志:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值