Selaa lähdekoodia

设备门锁记录

lijin 7 kuukautta sitten
vanhempi
commit
491114609d

+ 19 - 0
device-api-cloud/src/main/java/com/xy/feign/DeviceDoorRecordFeign.java

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.DeviceDoorRecordService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 设备门锁记录表 feign
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface DeviceDoorRecordFeign extends DeviceDoorRecordService {
+
+}

+ 45 - 0
device-api-service/src/main/java/com/xy/entity/DeviceDoorRecord.java

@@ -0,0 +1,45 @@
+package com.xy.entity;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备门锁记录表
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="DeviceDoorRecord对象", description="设备门锁记录表")
+public class DeviceDoorRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(value = "设备id")
+    private Long deviceId;
+
+    @ApiModelProperty(value = "门id")
+    private Integer door;
+
+    @ApiModelProperty(value = "状态")
+    private Boolean status;
+
+    @ApiModelProperty(value = "类型 1=交易 2=补货 3=其他")
+    private Integer type;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+
+}

+ 16 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceDoorRecordMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.DeviceDoorRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 设备门锁记录表 Mapper 接口
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+public interface DeviceDoorRecordMapper extends BaseMapper<DeviceDoorRecord> {
+
+}

+ 15 - 0
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceDoorRecordMapper.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xy.mapper.DeviceDoorRecordMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.DeviceDoorRecord">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="door" property="door" />
+        <result column="status" property="status" />
+        <result column="type" property="type" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+</mapper>

+ 50 - 0
device-api-service/src/main/java/com/xy/service/DeviceDoorRecordServiceImpl.java

@@ -0,0 +1,50 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.dto.DeviceDoorRecordDto;
+import com.xy.entity.DeviceDoorRecord;
+import com.xy.mapper.DeviceDoorRecordMapper;
+import com.xy.utils.Emptys;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+import static com.xy.utils.Beans.copy;
+
+
+/**
+ * <p>
+ * 设备门锁记录表 服务实现类
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "设备门锁记录表")
+public class DeviceDoorRecordServiceImpl extends ServiceImpl<DeviceDoorRecordMapper, DeviceDoorRecord> implements DeviceDoorRecordService {
+
+    @PostMapping("list")
+    @ApiOperation("集合查询")
+    public R<List<DeviceDoorRecordDto.Vo>> list(@RequestBody DeviceDoorRecordDto.SelectList selectList) {
+        LambdaQueryWrapper<DeviceDoorRecord> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceDoorRecord>()
+                .eq(DeviceDoorRecord::getDeviceId, selectList.getDeviceId())
+                .eq(DeviceDoorRecord::getDoor, Emptys.check(selectList.getDoor()) ? selectList.getDoor() : 0)
+                .eq(Emptys.check(selectList.getStatus()), DeviceDoorRecord::getStatus, selectList.getStatus())
+                .ge(Emptys.check(selectList.getBeginTime()), DeviceDoorRecord::getCreateTime, selectList.getBeginTime())
+                .le(Emptys.check(selectList.getEndTime()), DeviceDoorRecord::getCreateTime, selectList.getEndTime())
+                .orderByAsc(DeviceDoorRecord::getCreateTime);
+        List<DeviceDoorRecord> deviceDoorRecords = list(lambdaQueryWrapper);
+        List<DeviceDoorRecordDto.Vo> vos = copy(DeviceDoorRecordDto.Vo.class, deviceDoorRecords);
+        return R.ok(vos);
+    }
+
+}

+ 21 - 4
device-api-service/src/main/java/com/xy/service/DeviceStatusServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yitter.idgen.YitIdHelper;
 import com.xy.config.DeviceThreadPoolConfig;
 import com.xy.dbmapper.SyncUpdate;
 import com.xy.device.EnumDeviceTempConfig;
@@ -12,10 +13,7 @@ import com.xy.dto.CommandMqtt;
 import com.xy.dto.DeviceEventMsgDto;
 import com.xy.dto.DeviceStatusDto;
 import com.xy.dto.DeviceTempRecordsDto;
-import com.xy.entity.DeviceConfig;
-import com.xy.entity.DeviceStatus;
-import com.xy.entity.DeviceSysinfo;
-import com.xy.entity.SysDictRedis;
+import com.xy.entity.*;
 import com.xy.mapper.DeviceStatusMapper;
 import com.xy.mapper.entity.DeviceStatusCount;
 import com.xy.utils.*;
@@ -65,6 +63,8 @@ public class DeviceStatusServiceImpl extends ServiceImpl<DeviceStatusMapper, Dev
 
     private MqttServiceImpl mqttService;
 
+    private DeviceDoorRecordServiceImpl deviceDoorRecordService;
+
     @Override
     @ApiOperation("上报信息")
     public R up(DeviceStatusDto.Up up) {
@@ -162,8 +162,25 @@ public class DeviceStatusServiceImpl extends ServiceImpl<DeviceStatusMapper, Dev
     @Override
     @ApiOperation("开关门")
     public R door(DeviceStatusDto.Door door) {
+        LocalDateTime now = LocalDateTime.now();
+        //修改门锁状态
         DeviceStatus deviceStatus = copy(DeviceStatus.class, door).setUpdateTime(LocalDateTime.now());
         updateById(deviceStatus);
+        //增加记录
+        FunctionUtils.ParamsNoResult<Tuple.Tuple2<Integer, Boolean>> fun = params -> deviceDoorRecordService.save(new DeviceDoorRecord()
+                .setId(YitIdHelper.nextId())
+                .setDeviceId(door.getDeviceId())
+                .setDoor(params.getV1())
+                .setStatus(params.getV2())
+                .setType(door.getType())
+                .setCreateTime(now)
+        );
+        if (Emptys.check(door.getDoorStateL())) {
+            fun.run(new Tuple.Tuple2<>(0, door.getDoorStateL() == 1));
+        }
+        if (Emptys.check(door.getDoorStateR())) {
+            fun.run(new Tuple.Tuple2<>(1, door.getDoorStateR() == 1));
+        }
         return R.ok();
     }
 

+ 70 - 0
device-api/src/main/java/com/xy/dto/DeviceDoorRecordDto.java

@@ -0,0 +1,70 @@
+package com.xy.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 设备门锁记录表
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+public class DeviceDoorRecordDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SelectList {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备id", required = true)
+        private Long deviceId;
+
+        @ApiModelProperty(value = "门id")
+        private Integer door;
+
+        @ApiModelProperty(value = "状态 true=开门 false=关门")
+        private Boolean status;
+
+        @ApiModelProperty(value = "开始时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime beginTime;
+
+        @ApiModelProperty(value = "结束时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime endTime;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        private Long id;
+
+        @ApiModelProperty(value = "设备id")
+        private Long deviceId;
+
+        @ApiModelProperty(value = "门id")
+        private Integer door;
+
+        @ApiModelProperty(value = "状态 true=开门 false=关门")
+        private Boolean status;
+
+        @ApiModelProperty(value = "类型 1=交易 2=补货 3=其他")
+        private Integer type;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+
+    }
+
+}

+ 2 - 0
device-api/src/main/java/com/xy/dto/DeviceStatusDto.java

@@ -44,6 +44,8 @@ public class DeviceStatusDto {
         @ApiModelProperty("右柜门状态")
         private Integer doorStateR;
 
+        @ApiModelProperty("类型 1=交易 2=补货 3=其他")
+        private Integer type = 3;
     }
 
     @Data

+ 16 - 0
device-api/src/main/java/com/xy/service/DeviceDoorRecordService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 设备门锁记录表 服务类
+ * </p>
+ *
+ * @author lijin
+ * @since 2024-07-30
+ */
+@RestMappingController("/device-door-record")
+public interface DeviceDoorRecordService {
+
+}