parent
344776a768
commit
0cbe9be165
@ -1,84 +1,92 @@
|
|||||||
package cc.yunxi.domain.po;
|
package cc.yunxi.domain.po;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.Date;
|
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.Setter;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* 回收柜设备表
|
* 回收柜设备表
|
||||||
* </p>
|
|
||||||
*
|
*
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
@ApiModel(value = "RecycleDevice", description = "回收柜设备表")
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("nx_recycle_device")
|
@TableName("nx_recycle_device")
|
||||||
@ApiModel(value = "RecycleDevice对象", description = "回收柜设备表")
|
|
||||||
public class RecycleDevice {
|
public class RecycleDevice {
|
||||||
|
@TableId(value = "ID", type = IdType.ASSIGN_UUID)
|
||||||
@ApiModelProperty("主键id")
|
@ApiModelProperty("主键ID")
|
||||||
@EqualsAndHashCode.Exclude
|
|
||||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
|
||||||
private String id;
|
private String id;
|
||||||
|
@TableField(value = "DEVICE_CODE")
|
||||||
@ApiModelProperty("设备编码")
|
@ApiModelProperty("设备编码")
|
||||||
@TableField("devsn")
|
private String deviceCode;
|
||||||
private String devsn;
|
@TableField(value = "DEVICE_NAME")
|
||||||
|
@ApiModelProperty("设备名称")
|
||||||
@ApiModelProperty("烟雾报警 0未报警 1报警")
|
private String deviceName;
|
||||||
@TableField("allSmoke")
|
@TableField(value = "CITY")
|
||||||
private Integer allSmoke;
|
@ApiModelProperty("设备城市")
|
||||||
|
private String city;
|
||||||
@ApiModelProperty("是否满溢 0未满溢 1满溢")
|
@TableField(value = "ADDRESS")
|
||||||
@TableField("isSpill")
|
@ApiModelProperty("地址")
|
||||||
private Integer isSpill;
|
private String address;
|
||||||
|
@TableField(value = "STATUS")
|
||||||
@ApiModelProperty("是否超重报警 0未报警 1报警")
|
@ApiModelProperty(value = "在线状态")
|
||||||
@TableField("weightSpill")
|
private Integer status;
|
||||||
private Integer weightSpill;
|
@TableField(value = "USE_STATUS")
|
||||||
|
@ApiModelProperty("启用状态")
|
||||||
@ApiModelProperty("是否压缩报警 0未报警 1报警")
|
private Integer useStatus;
|
||||||
@TableField("compressdSpill")
|
@TableField(value = "IP_ADDRESS")
|
||||||
private Integer compressdSpill;
|
@ApiModelProperty("IP地址")
|
||||||
|
private String ipAddress;
|
||||||
@ApiModelProperty("当前设备整体重量,多筒累加 kg")
|
@TableField(value = "BOX_WEIGHT")
|
||||||
@TableField("weight")
|
@ApiModelProperty("箱体重量")
|
||||||
private Double weight;
|
private Double boxWeight;
|
||||||
|
@TableField(value = "BE_LONG_STATION_CODE")
|
||||||
@ApiModelProperty("筒数量")
|
@ApiModelProperty("所属回收站")
|
||||||
@TableField("size")
|
private String beLongStationCode;
|
||||||
private Integer size;
|
@TableField(value = "BE_LONG_COMPANY_ID")
|
||||||
|
@ApiModelProperty("所属商户")
|
||||||
@ApiModelProperty("配置的版本号")
|
private String beLongCompanyId;
|
||||||
@TableField("appConfigVersion")
|
@TableField(value = "LATITUDE")
|
||||||
private String appConfigVersion;
|
@ApiModelProperty("纬度")
|
||||||
|
private String latitude;
|
||||||
|
@TableField(value = "LONGITUDE")
|
||||||
|
@ApiModelProperty("经度")
|
||||||
|
private String longitude;
|
||||||
|
@TableField("F_CREATOR_USER_ID")
|
||||||
|
@ApiModelProperty("创建用户")
|
||||||
|
private String creatorUserId;
|
||||||
|
@TableField("F_CREATOR_TIME")
|
||||||
@ApiModelProperty("创建时间")
|
@ApiModelProperty("创建时间")
|
||||||
@TableField("f_creator_time")
|
private Date creatorTime;
|
||||||
private LocalDateTime createTime;
|
@TableField("F_LAST_MODIFY_TIME")
|
||||||
|
@ApiModelProperty("修改时间")
|
||||||
@ApiModelProperty("更新时间")
|
private Date lastModifyTime;
|
||||||
@TableField("f_last_modify_time")
|
@TableField("F_LAST_MODIFY_USER_ID")
|
||||||
private LocalDateTime updateTime;
|
@ApiModelProperty("修改人")
|
||||||
|
private String lastModifyUserId;
|
||||||
@ApiModelProperty("公司id")
|
@TableField("COMPANY_ID")
|
||||||
@TableField("company_id")
|
@ApiModelProperty("公司")
|
||||||
private String companyId;
|
private String companyId;
|
||||||
|
@TableField("ORGANIZE_JSON_ID")
|
||||||
@ApiModelProperty("组织id")
|
@ApiModelProperty("组织id")
|
||||||
@TableField("organize_json_id")
|
|
||||||
private String organizeJsonId;
|
private String organizeJsonId;
|
||||||
|
@TableField("F_FLOW_ID")
|
||||||
|
@ApiModelProperty("工作流")
|
||||||
|
private String flowId;
|
||||||
|
@TableField("F_DELETE_TIME")
|
||||||
|
@ApiModelProperty("删除时间")
|
||||||
|
private Date deleteTime;
|
||||||
|
@TableField("F_DELETE_USER_ID")
|
||||||
|
@ApiModelProperty("删除用户")
|
||||||
|
private String deleteUserId;
|
||||||
|
@TableField("F_DELETE_MARK")
|
||||||
|
@ApiModelProperty("删除标记")
|
||||||
|
private Integer deleteMark;
|
||||||
|
@TableField("F_TENANT_ID")
|
||||||
|
@ApiModelProperty("租户id")
|
||||||
|
private Integer tenantId;
|
||||||
}
|
}
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
package cc.yunxi.domain.po;
|
|
||||||
|
|
||||||
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 io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@TableName("nx_recycle_device_photo")
|
|
||||||
@ApiModel(value = "RecycleDevicePhoto对象", description = "回收柜投递/清运照片表")
|
|
||||||
public class RecycleDevicePhoto {
|
|
||||||
|
|
||||||
@ApiModelProperty("主键id")
|
|
||||||
@EqualsAndHashCode.Exclude
|
|
||||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
|
||||||
private String id;
|
|
||||||
|
|
||||||
@ApiModelProperty("订单编号")
|
|
||||||
@TableField("order_id")
|
|
||||||
private String orderId;
|
|
||||||
|
|
||||||
@ApiModelProperty("上传文件地址")
|
|
||||||
@TableField("file_url")
|
|
||||||
private String fileUrl;
|
|
||||||
|
|
||||||
|
|
||||||
@ApiModelProperty("创建时间")
|
|
||||||
@TableField("f_creator_time")
|
|
||||||
private LocalDateTime createTime;
|
|
||||||
|
|
||||||
@ApiModelProperty("更新时间")
|
|
||||||
@TableField("f_last_modify_time")
|
|
||||||
private LocalDateTime updateTime;
|
|
||||||
|
|
||||||
@ApiModelProperty("公司id")
|
|
||||||
@TableField("company_id")
|
|
||||||
private String companyId;
|
|
||||||
|
|
||||||
@ApiModelProperty("组织id")
|
|
||||||
@TableField("organize_json_id")
|
|
||||||
private String organizeJsonId;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,26 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("清运单")
|
||||||
|
public class CleanOrderVO {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String orderNo;
|
||||||
|
private String orderType;
|
||||||
|
private String orderStatus;
|
||||||
|
private String orderTime;
|
||||||
|
private String orderAddress;
|
||||||
|
private String orderDesc;
|
||||||
|
private String orderUser;
|
||||||
|
private String orderUserPhone;
|
||||||
|
private String orderUserAddress;
|
||||||
|
private String orderUserAddressDetail;
|
||||||
|
private String orderUserAddressLongitude;
|
||||||
|
private String orderUserAddressLatitude;
|
||||||
|
private String orderUserAddressArea;
|
||||||
|
private String orderUserAddressAreaCode;
|
||||||
|
private String orderUserAddressCity;
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("设备控制命令")
|
||||||
|
public class CommandVO {
|
||||||
|
@ApiModelProperty(value = "命令", required = true, example = "reboot")
|
||||||
|
@NotBlank(message = "命令不能为空")
|
||||||
|
private String cmd;
|
||||||
|
@ApiModelProperty(value = "命令参数", required = true, example = "设备编码")
|
||||||
|
@NotBlank(message = "命令参数不能为空")
|
||||||
|
private String data;
|
||||||
|
@ApiModelProperty(value = "操作时间", required = true, example = "admin")
|
||||||
|
@NotNull(message = "操作时间不能为空")
|
||||||
|
private LocalDateTime optTime;
|
||||||
|
@ApiModelProperty(value = "备注", example = "重启设备")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("投递单")
|
||||||
|
public class DeliveryOrderVO {
|
||||||
|
@ApiModelProperty("订单号")
|
||||||
|
private String orderNum;
|
||||||
|
@ApiModelProperty("设备编码")
|
||||||
|
private String deviceCode;
|
||||||
|
@ApiModelProperty("桶编码")
|
||||||
|
private String bucketCode;
|
||||||
|
@ApiModelProperty("门号")
|
||||||
|
private String doorNum;
|
||||||
|
@ApiModelProperty("回收大类")
|
||||||
|
private String code;
|
||||||
|
@ApiModelProperty("回收子类")
|
||||||
|
private String subCode;
|
||||||
|
@ApiModelProperty("回收单价")
|
||||||
|
private BigDecimal price;
|
||||||
|
@ApiModelProperty("重量")
|
||||||
|
private BigDecimal weight;
|
||||||
|
@ApiModelProperty("总价")
|
||||||
|
private BigDecimal totalPrice;
|
||||||
|
@ApiModelProperty("开始时间")
|
||||||
|
private LocalDateTime starTime;
|
||||||
|
@ApiModelProperty("完成时间")
|
||||||
|
private LocalDateTime finishTime;
|
||||||
|
@ApiModelProperty("用户id")
|
||||||
|
private String userId;
|
||||||
|
@ApiModelProperty("用户手机")
|
||||||
|
private String phone;
|
||||||
|
@ApiModelProperty("上报类型")
|
||||||
|
private String reportType;
|
||||||
|
@ApiModelProperty("上报时间")
|
||||||
|
private LocalDateTime reportTime;
|
||||||
|
@ApiModelProperty("抓拍图片")
|
||||||
|
private List<Snap> images;
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("设备事件")
|
||||||
|
public class DeviceEventVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("设备编码")
|
||||||
|
private String deviceCode;
|
||||||
|
@ApiModelProperty("桶编码")
|
||||||
|
private String bucketCode;
|
||||||
|
@ApiModelProperty("门号")
|
||||||
|
private String doorNum;
|
||||||
|
@ApiModelProperty("事件类型")
|
||||||
|
private String eventType;
|
||||||
|
@ApiModelProperty("事件时间")
|
||||||
|
private String eventTime;
|
||||||
|
@ApiModelProperty("事件描述")
|
||||||
|
private String eventDesc;
|
||||||
|
@ApiModelProperty("订单号")
|
||||||
|
private String orderNo;
|
||||||
|
@ApiModelProperty("订单类型")
|
||||||
|
private String orderType;
|
||||||
|
@ApiModelProperty("用户ID")
|
||||||
|
private String userId;
|
||||||
|
@ApiModelProperty("用户手机号")
|
||||||
|
private String phone;
|
||||||
|
@ApiModelProperty("是否本地")
|
||||||
|
private String isLocal;
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("设备信息配置")
|
||||||
|
public class DeviceRespVO {
|
||||||
|
@ApiModelProperty(value = "设备编码", required = true, example = "DE000001")
|
||||||
|
@NotBlank(message = "设备编码不能为空")
|
||||||
|
private String deviceCode;
|
||||||
|
@ApiModelProperty(value = "设备名称", required = true, example = "设备1")
|
||||||
|
@NotBlank(message = "设备名称不能为空")
|
||||||
|
private String deviceName;
|
||||||
|
@ApiModelProperty(value = "是否开启服务", required = true, example = "1")
|
||||||
|
@NotNull(message = "是否开启服务不能为空")
|
||||||
|
private Integer userStatus;
|
||||||
|
@ApiModelProperty(value = "是否开启清理锁", required = true, example = "1")
|
||||||
|
@NotNull(message = "是否开启清理锁不能为空")
|
||||||
|
private Integer cleanLock;
|
||||||
|
@ApiModelProperty("是否开启手机号登录")
|
||||||
|
private String usePhoneLogin;
|
||||||
|
@ApiModelProperty("设备桶清单")
|
||||||
|
private List<Bucket> bucketList;
|
||||||
|
@ApiModelProperty("设备二维码")
|
||||||
|
@NotNull(message = "设备二维码不能为空")
|
||||||
|
private String qrCode;
|
||||||
|
@ApiModelProperty(value = "设备宣传设置", required = true, example = "1")
|
||||||
|
@NotBlank(message = "设备宣传设置不能为空")
|
||||||
|
private String promotionSet;
|
||||||
|
@ApiModelProperty("设备宣传语")
|
||||||
|
private String slogan;
|
||||||
|
@ApiModelProperty("宣传海报")
|
||||||
|
private List<Poster> posterList;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("桶配置信息")
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public static class Bucket {
|
||||||
|
@ApiModelProperty(value = "桶编码", required = true, example = "bk00001")
|
||||||
|
@NotBlank(message = "桶编码不能为空")
|
||||||
|
private String bucketCode;
|
||||||
|
@ApiModelProperty(value = "门号", required = true, example = "1")
|
||||||
|
@NotBlank(message = "门号不能为空")
|
||||||
|
private Integer doorNum;
|
||||||
|
@ApiModelProperty(value = "显示顺序", required = true, example = "1")
|
||||||
|
@NotNull(message = "显示顺序不能为空")
|
||||||
|
private Integer ordNum;
|
||||||
|
@ApiModelProperty(value = "回收大类", required = true, example = "HS001")
|
||||||
|
@NotBlank(message = "回收大类不能为空")
|
||||||
|
private String code;
|
||||||
|
@ApiModelProperty(value = "回收子类", example = "HS001001")
|
||||||
|
private String subCode;
|
||||||
|
@ApiModelProperty(value = "显示文字", required = true, example = "纸张&废塑料")
|
||||||
|
@NotBlank(message = "显示文字不能为空")
|
||||||
|
private String showText;
|
||||||
|
@ApiModelProperty(value = "满溢报警", required = true, example = "1")
|
||||||
|
@NotNull(message = "满溢报警不能为空")
|
||||||
|
private Integer fullAlarm;
|
||||||
|
@ApiModelProperty(value = "烟雾报警", required = true, example = "1")
|
||||||
|
@NotNull(message = "烟雾报警不能为空")
|
||||||
|
private Integer smokeAlarm;
|
||||||
|
@ApiModelProperty(value = "单价", required = true, example = "1.00")
|
||||||
|
@NotNull(message = "单价不能为空")
|
||||||
|
private BigDecimal price;
|
||||||
|
@ApiModelProperty(value = "单次限重", required = true, example = "1.00")
|
||||||
|
@NotNull(message = "单次限重不能为空")
|
||||||
|
private BigDecimal singleWeightLimit;
|
||||||
|
@ApiModelProperty(value = "总限重", required = true, example = "1.00")
|
||||||
|
@NotNull(message = "总限重不能为空")
|
||||||
|
private BigDecimal totalWeightLimit;
|
||||||
|
@ApiModelProperty(value = "桶身图片", required = true)
|
||||||
|
@NotNull(message = "桶身图片不能为空")
|
||||||
|
private String image;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("海报")
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public static class Poster {
|
||||||
|
@ApiModelProperty("显示顺序")
|
||||||
|
private Integer showOrd;
|
||||||
|
@ApiModelProperty("图片")
|
||||||
|
private String image;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("设备状态")
|
||||||
|
public class DeviceStatus {
|
||||||
|
@ApiModelProperty("设备编码")
|
||||||
|
private String deviceCode;//设备编码
|
||||||
|
@ApiModelProperty("设备ip地址")
|
||||||
|
private String ip;//IP地址
|
||||||
|
@ApiModelProperty("最后心跳时间")
|
||||||
|
private LocalDateTime heartBeat;//心跳时间
|
||||||
|
@ApiModelProperty("ip是否变化")
|
||||||
|
private Boolean ipChanged;//ip是否变化
|
||||||
|
@ApiModelProperty("设备是否在线")
|
||||||
|
private Boolean online;//设备是否在线
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel(value = "DeviceVO", description = "设备信息")
|
||||||
|
public class DeviceVO {
|
||||||
|
@ApiModelProperty(value = "设备编码", required = true)
|
||||||
|
@NotBlank(message = "设备编码不能为空")
|
||||||
|
private String deviceCode;
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
//手机号登录
|
||||||
|
@Data
|
||||||
|
@ApiModel("手机号登录")
|
||||||
|
public class LoginReqVO {
|
||||||
|
//手机号
|
||||||
|
@ApiModelProperty(value = "设备编码", required = true, example = "DE123456789")
|
||||||
|
@NotBlank(message = "设备编码不能为空")
|
||||||
|
private String deviceCode;
|
||||||
|
//设备编码
|
||||||
|
@ApiModelProperty(value = "手机号", required = true, example = "13800138000")
|
||||||
|
@NotBlank(message = "手机号不能为空")
|
||||||
|
private String phone;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
//设备手机号登录成功
|
||||||
|
@Data
|
||||||
|
@ApiModel("设备手机号登录成功")
|
||||||
|
public class LoginRespVO {
|
||||||
|
@ApiModelProperty("用户id")
|
||||||
|
private String userId;//用户id
|
||||||
|
@ApiModelProperty("用户名")
|
||||||
|
private String userName;//用户名
|
||||||
|
@ApiModelProperty("用户状态")
|
||||||
|
private String status;//用户状态
|
||||||
|
private String phone;//手机号
|
||||||
|
private String token;//手机号
|
||||||
|
private Long timeExpire;
|
||||||
|
private String deviceCode;//设备编码
|
||||||
|
private List<Integer> roles;//用户角色
|
||||||
|
}
|
@ -1,36 +0,0 @@
|
|||||||
package cc.yunxi.domain.vo.device;
|
|
||||||
|
|
||||||
import io.swagger.annotations.ApiModel;
|
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
import javax.validation.constraints.NotBlank;
|
|
||||||
import javax.validation.constraints.NotNull;
|
|
||||||
import javax.validation.constraints.Past;
|
|
||||||
import javax.validation.constraints.Size;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 散户信息VO
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-02-28 16:08:09
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@ApiModel(description = "设备柜开门 Request VO")
|
|
||||||
public class RecycleDeviceOpenDoorReqVO {
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "设备编码", required = true)
|
|
||||||
@NotBlank(message = "设备编码不能为空")
|
|
||||||
private String devsn;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "手机号码", required = true)
|
|
||||||
@NotBlank(message = "手机号码不能为空")
|
|
||||||
private String loginName;
|
|
||||||
|
|
||||||
@ApiModelProperty(value = "垃圾袋编码", required = true)
|
|
||||||
@NotBlank(message = "垃圾袋编码不能为空")
|
|
||||||
private String bagNo;
|
|
||||||
}
|
|
@ -0,0 +1,18 @@
|
|||||||
|
package cc.yunxi.domain.vo.device;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("抓拍")
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class Snap {
|
||||||
|
@ApiModelProperty(value = "内外",required = true,allowableValues = "inside,outside")
|
||||||
|
private String inside;
|
||||||
|
@ApiModelProperty("抓拍时间")
|
||||||
|
private String takeTime;
|
||||||
|
@ApiModelProperty("图片")
|
||||||
|
private byte[] image;
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package cc.yunxi.mapper;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleBucket;
|
||||||
|
import cc.yunxi.domain.po.RecycleDevice;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface RecycleBucketMapper extends BaseMapper<RecycleBucket> {
|
||||||
|
|
||||||
|
// TODO 此处编写RecycleDevice的mapper.xml文件中需要的方法
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package cc.yunxi.mapper;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleDeviceConfig;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface RecycleDeviceConfigMapper extends BaseMapper<RecycleDeviceConfig> {
|
||||||
|
|
||||||
|
// TODO 此处编写RecycleDevice的mapper.xml文件中需要的方法
|
||||||
|
}
|
@ -1,19 +0,0 @@
|
|||||||
package cc.yunxi.mapper;
|
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 Mapper 接口
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface RecycleDevicePhotoMapper extends BaseMapper<RecycleDevicePhoto> {
|
|
||||||
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
package cc.yunxi.mapper;
|
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import cc.yunxi.domain.po.RecycleDeviceRunningData;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 Mapper 接口
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface RecycleDeviceRunningDataMapper extends BaseMapper<RecycleDeviceRunningData> {
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,14 @@
|
|||||||
|
package cc.yunxi.service;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleBucket;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IRecycleBucketService extends IService<RecycleBucket> {
|
||||||
|
|
||||||
|
RecycleBucket getByBucketCode(@NotBlank(message = "桶编码不能为空") String bucketCode);
|
||||||
|
|
||||||
|
List<RecycleBucket> getByDeviceCode(@NotBlank(message = "设备编码不能为空") String deviceCode);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,11 @@
|
|||||||
|
package cc.yunxi.service;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleDeviceConfig;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
|
public interface IRecycleDeviceConfigService extends IService<RecycleDeviceConfig> {
|
||||||
|
|
||||||
|
RecycleDeviceConfig getByCompanyId(@NotBlank(message = "companyId 不能为空") String companyId);
|
||||||
|
}
|
@ -1,21 +0,0 @@
|
|||||||
package cc.yunxi.service;
|
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
public interface IRecycleDevicePhotoService extends IService<RecycleDevicePhoto> {
|
|
||||||
|
|
||||||
Boolean addRecycleDevicePhoto(String orderId,String url);
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
package cc.yunxi.service;
|
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import cc.yunxi.domain.po.RecycleDeviceRunningData;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
public interface IRecycleDeviceRunningDataService extends IService<RecycleDeviceRunningData> {
|
|
||||||
|
|
||||||
Boolean addRecycleDeviceRunningData(RecycleDeviceRespVO recycleDeviceRespVO,Integer type);
|
|
||||||
}
|
|
@ -1,30 +1,16 @@
|
|||||||
package cc.yunxi.service;
|
package cc.yunxi.service;
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
import cc.yunxi.domain.po.RecycleDevice;
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
public interface IRecycleDeviceService extends IService<RecycleDevice> {
|
public interface IRecycleDeviceService extends IService<RecycleDevice> {
|
||||||
|
|
||||||
/**
|
RecycleDevice getByDeviceCode(@NotBlank String deviceCode);
|
||||||
* 获取设备信息
|
|
||||||
*/
|
|
||||||
RecycleDevice getDeviceInfo(String devsn);
|
|
||||||
|
|
||||||
|
List<RecycleDevice> getByDeviceName(@NotBlank String companyId);
|
||||||
|
|
||||||
|
int updateDevice();
|
||||||
/**
|
|
||||||
* 保存设备信息
|
|
||||||
*/
|
|
||||||
void saveDeviceInfo(@Valid RecycleDeviceRespVO recycleDeviceRespVO);
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
package cc.yunxi.service.impl;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleBucket;
|
||||||
|
import cc.yunxi.mapper.RecycleBucketMapper;
|
||||||
|
import cc.yunxi.mapper.RecycleDeviceMapper;
|
||||||
|
import cc.yunxi.service.IRecycleBucketService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class RecycleBucketServiceImpl extends ServiceImpl<RecycleBucketMapper, RecycleBucket> implements IRecycleBucketService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RecycleBucketMapper recycleBucketMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RecycleBucket getByBucketCode(String bucketCode) {
|
||||||
|
QueryWrapper<RecycleBucket> query = new QueryWrapper<>();
|
||||||
|
query.eq("bucket_code", bucketCode);
|
||||||
|
return recycleBucketMapper.selectOne(query);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RecycleBucket> getByDeviceCode(String deviceCode) {
|
||||||
|
QueryWrapper<RecycleBucket> query = new QueryWrapper<>();
|
||||||
|
query.eq("device_code", deviceCode);
|
||||||
|
return recycleBucketMapper.selectList(query);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package cc.yunxi.service.impl;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.po.RecycleDeviceConfig;
|
||||||
|
import cc.yunxi.mapper.RecycleDeviceConfigMapper;
|
||||||
|
import cc.yunxi.service.IRecycleDeviceConfigService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class RecycleDeviceConfigServiceImpl extends ServiceImpl<RecycleDeviceConfigMapper, RecycleDeviceConfig> implements IRecycleDeviceConfigService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RecycleDeviceConfigMapper recycleDeviceConfigMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RecycleDeviceConfig getByCompanyId(String companyId) {
|
||||||
|
QueryWrapper<RecycleDeviceConfig> query = new QueryWrapper<>();
|
||||||
|
query.eq("company_id", companyId);
|
||||||
|
return recycleDeviceConfigMapper.selectOne(query);
|
||||||
|
}
|
||||||
|
}
|
@ -1,47 +0,0 @@
|
|||||||
package cc.yunxi.service.impl;
|
|
||||||
|
|
||||||
import cc.yunxi.common.utils.BeanUtils;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
|
||||||
import cc.yunxi.domain.po.RecycleDeviceDoor;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import cc.yunxi.mapper.RecycleDeviceDoorMapper;
|
|
||||||
import cc.yunxi.service.IRecycleDeviceDoorService;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.enums.SqlMethod;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import org.apache.ibatis.binding.MapperMethod;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收设备筒表 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:34:14
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@Validated
|
|
||||||
public class RecycleDeviceDoorServiceImpl extends ServiceImpl<RecycleDeviceDoorMapper, RecycleDeviceDoor> implements IRecycleDeviceDoorService {
|
|
||||||
|
|
||||||
// 批量更新
|
|
||||||
public boolean updateBatchByQueryWrapper(Collection<RecycleDeviceDoor> entityList,
|
|
||||||
Function<RecycleDeviceDoor, LambdaUpdateWrapper> wrapperFunction) {
|
|
||||||
String sqlStatement = this.getSqlStatement(SqlMethod.UPDATE);
|
|
||||||
return this.executeBatch(entityList, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> {
|
|
||||||
MapperMethod.ParamMap param = new MapperMethod.ParamMap<>();
|
|
||||||
param.put(Constants.ENTITY, entity);
|
|
||||||
param.put(Constants.WRAPPER, wrapperFunction.apply(entity));
|
|
||||||
sqlSession.update(sqlStatement, param);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
package cc.yunxi.service.impl;
|
|
||||||
|
|
||||||
import cc.yunxi.common.domain.LambdaQueryWrapperX;
|
|
||||||
import cc.yunxi.common.domain.LambdaUpdateWrapperX;
|
|
||||||
import cc.yunxi.common.utils.BeanUtils;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
|
||||||
import cc.yunxi.domain.po.RecycleDeviceDoor;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import cc.yunxi.mapper.RecycleDeviceMapper;
|
|
||||||
import cc.yunxi.mapper.RecycleDevicePhotoMapper;
|
|
||||||
import cc.yunxi.service.IRecycleDeviceDoorService;
|
|
||||||
import cc.yunxi.service.IRecycleDevicePhotoService;
|
|
||||||
import cc.yunxi.service.IRecycleDeviceService;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class RecycleDevicePhotoServiceImpl extends ServiceImpl<RecycleDevicePhotoMapper, RecycleDevicePhoto> implements IRecycleDevicePhotoService {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean addRecycleDevicePhoto(String orderId,String url) {
|
|
||||||
RecycleDevicePhoto recycleDevicePhoto = new RecycleDevicePhoto();
|
|
||||||
recycleDevicePhoto.setId(orderId);
|
|
||||||
recycleDevicePhoto.setFileUrl(url);
|
|
||||||
recycleDevicePhoto.setCreateTime(LocalDateTime.now());
|
|
||||||
return this.save(recycleDevicePhoto);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
package cc.yunxi.service.impl;
|
|
||||||
|
|
||||||
import cc.yunxi.domain.po.RecycleDevicePhoto;
|
|
||||||
import cc.yunxi.domain.po.RecycleDeviceRunningData;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import cc.yunxi.mapper.RecycleDevicePhotoMapper;
|
|
||||||
import cc.yunxi.mapper.RecycleDeviceRunningDataMapper;
|
|
||||||
import cc.yunxi.service.IRecycleDevicePhotoService;
|
|
||||||
import cc.yunxi.service.IRecycleDeviceRunningDataService;
|
|
||||||
import cn.hutool.json.JSONArray;
|
|
||||||
import cn.hutool.json.JSONObject;
|
|
||||||
import cn.hutool.json.JSONUtil;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class RecycleDeviceRunningDataServiceImpl extends ServiceImpl<RecycleDeviceRunningDataMapper, RecycleDeviceRunningData> implements IRecycleDeviceRunningDataService {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean addRecycleDeviceRunningData(RecycleDeviceRespVO recycleDeviceRespVO,Integer type) {
|
|
||||||
|
|
||||||
String data = recycleDeviceRespVO.getData();
|
|
||||||
|
|
||||||
JSONObject jsonObject = JSONUtil.parseObj(data);
|
|
||||||
|
|
||||||
RecycleDeviceRunningData recycleDeviceRunningData = new RecycleDeviceRunningData();
|
|
||||||
|
|
||||||
recycleDeviceRunningData.setType(type);
|
|
||||||
recycleDeviceRunningData.setNo(jsonObject.getStr("no"));
|
|
||||||
recycleDeviceRunningData.setWeight(jsonObject.getBigDecimal("weight"));
|
|
||||||
recycleDeviceRunningData.setPrice(jsonObject.getBigDecimal("price"));
|
|
||||||
recycleDeviceRunningData.setOrderId(recycleDeviceRespVO.getOrderId());
|
|
||||||
recycleDeviceRunningData.setPhone(jsonObject.getStr("phone"));
|
|
||||||
recycleDeviceRunningData.setPostDetail(JSONUtil.toJsonStr(recycleDeviceRespVO));
|
|
||||||
|
|
||||||
recycleDeviceRunningData.setCreateTime(LocalDateTime.now());
|
|
||||||
return this.save(recycleDeviceRunningData);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,84 +1,38 @@
|
|||||||
package cc.yunxi.service.impl;
|
package cc.yunxi.service.impl;
|
||||||
|
|
||||||
import cc.yunxi.common.domain.LambdaQueryWrapperX;
|
|
||||||
import cc.yunxi.common.domain.LambdaUpdateWrapperX;
|
|
||||||
import cc.yunxi.common.utils.BeanUtils;
|
|
||||||
import cc.yunxi.domain.po.RecycleDevice;
|
import cc.yunxi.domain.po.RecycleDevice;
|
||||||
import cc.yunxi.domain.po.RecycleDeviceDoor;
|
|
||||||
import cc.yunxi.domain.vo.device.RecycleDeviceRespVO;
|
|
||||||
import cc.yunxi.mapper.RecycleDeviceDoorMapper;
|
|
||||||
import cc.yunxi.mapper.RecycleDeviceMapper;
|
import cc.yunxi.mapper.RecycleDeviceMapper;
|
||||||
import cc.yunxi.service.IRecycleDeviceDoorService;
|
|
||||||
import cc.yunxi.service.IRecycleDeviceService;
|
import cc.yunxi.service.IRecycleDeviceService;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.enums.SqlMethod;
|
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.apache.ibatis.session.SqlSession;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 回收柜设备表 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author ccongli
|
|
||||||
* @since 2024-04-11 10:33:58
|
|
||||||
*/
|
|
||||||
@Service
|
@Service
|
||||||
public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, RecycleDevice> implements IRecycleDeviceService {
|
public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, RecycleDevice> implements IRecycleDeviceService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IRecycleDeviceDoorService recycleDeviceDoorService;
|
private RecycleDeviceMapper recycleDeviceMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RecycleDevice getDeviceInfo(String devsn) {
|
public RecycleDevice getByDeviceCode(String deviceCode) {
|
||||||
LambdaQueryWrapperX<RecycleDevice> wrapperX = new LambdaQueryWrapperX();
|
QueryWrapper<RecycleDevice> wrapper = new QueryWrapper<>();
|
||||||
wrapperX.eq(RecycleDevice::getDevsn, devsn);
|
wrapper.eq("device_code", deviceCode);
|
||||||
return this.getOne(wrapperX, false);
|
return recycleDeviceMapper.selectOne(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 保存设备信息
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
public List<RecycleDevice> getByDeviceName(String companyId) {
|
||||||
public void saveDeviceInfo(RecycleDeviceRespVO recycleDeviceRespVO) {
|
QueryWrapper<RecycleDevice> wrapper = new QueryWrapper<>();
|
||||||
RecycleDevice recycleDevice = BeanUtils.copyBean(recycleDeviceRespVO, RecycleDevice.class);
|
wrapper.eq("company_id", companyId);
|
||||||
List<RecycleDeviceDoor> deviceDoorList = BeanUtils.copyList(recycleDeviceRespVO.getListDoor(), RecycleDeviceDoor.class);
|
return recycleDeviceMapper.selectList(wrapper);
|
||||||
RecycleDevice deviceInfo = this.getDeviceInfo(recycleDevice.getDevsn());
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
if (ObjectUtil.isEmpty(deviceInfo)) { // 添加
|
|
||||||
recycleDevice.setCreateTime(now); // 组织机构维护 todo
|
|
||||||
this.save(recycleDevice);
|
|
||||||
deviceDoorList.forEach(v -> {
|
|
||||||
v.setDevsn(recycleDevice.getDevsn());
|
|
||||||
v.setCreateTime(now);
|
|
||||||
});
|
|
||||||
recycleDeviceDoorService.saveBatch(deviceDoorList);
|
|
||||||
} else { // 更新
|
|
||||||
LambdaUpdateWrapperX<RecycleDevice> wrapperX = new LambdaUpdateWrapperX<>();
|
|
||||||
wrapperX.eq(RecycleDevice::getDevsn, deviceInfo.getDevsn());
|
|
||||||
recycleDevice.setUpdateTime(now);
|
|
||||||
this.update(recycleDevice, wrapperX);
|
|
||||||
LambdaUpdateWrapper<RecycleDeviceDoor> updateWrapper = new LambdaUpdateWrapper<>();
|
|
||||||
updateWrapper.eq(RecycleDeviceDoor::getDevsn, deviceInfo.getDevsn());
|
|
||||||
deviceDoorList.forEach(v -> v.setUpdateTime(now));
|
|
||||||
recycleDeviceDoorService.updateBatchByQueryWrapper(deviceDoorList, v -> updateWrapper);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int updateDevice() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,55 @@
|
|||||||
|
package cc.yunxi.utils;
|
||||||
|
|
||||||
|
import cc.yunxi.domain.vo.device.DeviceStatus;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.ZoneOffset;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@ApiModel("设备状态监控")
|
||||||
|
public class DeviceStatusMonitor {
|
||||||
|
|
||||||
|
//注入设备service
|
||||||
|
|
||||||
|
//注入桶service
|
||||||
|
|
||||||
|
private final Long TIME_OUT = new Long(1000 * 60);//心跳周期
|
||||||
|
@Resource
|
||||||
|
private DeviceStatusManager statusManager;
|
||||||
|
|
||||||
|
@Scheduled(fixedDelay = 1000 * 90)//每1.5个周期执行一次 必定有一次心跳 无则视为掉线
|
||||||
|
public void monitorDeviceStatus() {
|
||||||
|
ConcurrentHashMap<String, DeviceStatus> allDeviceStatus = statusManager.getAllDeviceStatus();
|
||||||
|
if (allDeviceStatus.size() > 0) {
|
||||||
|
log.info("设备状态监控开始");
|
||||||
|
//需要更新状态的设备
|
||||||
|
List<DeviceStatus> list = new ArrayList<>();
|
||||||
|
// 遍历设备状态
|
||||||
|
for (DeviceStatus deviceStatus : allDeviceStatus.values()) {
|
||||||
|
// 判断设备状态是否超时
|
||||||
|
if (System.currentTimeMillis() - deviceStatus.getHeartBeat().toEpochSecond(ZoneOffset.of("+8")) > TIME_OUT) {
|
||||||
|
// 设备状态超时,修改设备状态为离线
|
||||||
|
deviceStatus.setOnline(false);
|
||||||
|
//todo 更新设备在线状态
|
||||||
|
log.info("设备 {} 已离线", deviceStatus.getDeviceCode());
|
||||||
|
}
|
||||||
|
if (deviceStatus.getIpChanged()) {
|
||||||
|
//todo 更新设备通信地址
|
||||||
|
deviceStatus.setIpChanged(false);
|
||||||
|
log.info("设备ip地址发生变化,新的地址:{},已更新至数据库", deviceStatus.getIp());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// todo 更新设备状态
|
||||||
|
log.info("设备状态监控结束");
|
||||||
|
} else {
|
||||||
|
log.error("没有设备在线!!!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="cc.yunxi.mapper.RecycleDevicePhotoMapper">
|
<mapper namespace="cc.yunxi.mapper.RecycleBucketMapper">
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="cc.yunxi.mapper.RecycleDeviceRunningDataMapper">
|
<mapper namespace="cc.yunxi.mapper.RecycleDeviceConfigMapper">
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
Loading…
Reference in new issue