package com.xy.dto; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import com.xy.annotate.DictFormat; import com.xy.annotate.NumberChange; import com.xy.consts.DictConsts; import com.xy.convert.DictConvert; import com.xy.utils.DataTime; import com.xy.utils.PageBean; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Data @Accessors(chain = true) public class DeviceInfoDto { /** * 删除线路\点位时时指定 传入 wherePlaceLineId\wherePlaceId */ public final static String DEL = "del"; /** * 更新线\点位时指定 传入 deviceIds、placeLineId\placeId */ public final static String UPDATE = "update"; /** * 解绑线路、点位时指定 传入 deviceIds */ public final static String CLEAR = "clear"; @Data @Accessors(chain = true) public static class Obj { @ApiModelProperty("设备id") private Long deviceId; @ApiModelProperty("门id 0=1号门 1=2号门") private Integer door; } @Data @Accessors(chain = true) public static class ListDto { @ApiModelProperty(value = "设备id批量查", required = false) private List deviceIds; } @Data @Accessors(chain = true) public static class ListCommon { @ApiModelProperty("设备信息VO") Vo vo; @ApiModelProperty("线路id多个") private List placeLineIds; @ApiModelProperty("id") private List deviceIds; @ApiModelProperty("指定字段查询") private List columnList; @ApiModelProperty(value = "根据名称或编码搜索") private String deviceSearch; } @Data @Accessors(chain = true) public static class UpdateLine { @NotNull(message = "更新类型") @ApiModelProperty(value = "更新类型", required = true) private String type; @NotNull(message = "商户id不能为空") @ApiModelProperty(value = "商户id", required = true) private Long mercId; @ApiModelProperty("设备id集合") private List deviceIds; @ApiModelProperty(value = "线路ID") private Long placeLineId; @ApiModelProperty(value = "原线路ID") private Long wherePlaceLineId; } @Data @Accessors(chain = true) public static class UpdatePlace { @NotNull(message = "更新类型") @ApiModelProperty(value = "更新类型", required = true) private String type; @NotNull(message = "商户id不能为空") @ApiModelProperty(value = "商户id", required = true) private Long mercId; @ApiModelProperty("设备id集合") private List deviceIds; @ApiModelProperty(value = "点位ID") private Long placeId; @ApiModelProperty(value = "原点位ID") private Long wherePlaceId; } @Data @Accessors(chain = true) public static class Update extends Vo { @NotNull(message = "deviceId不能为空") @ApiModelProperty("设备id") private Long deviceId; @ApiModelProperty(value = "系统信息", hidden = true) private DeviceSysinfoDto.Vo deviceSysinfo; @ApiModelProperty(value = "状态信息", hidden = true) private DeviceStatusDto.Vo deviceStatus; @ApiModelProperty(value = "注册信息", hidden = true) private DeviceRegisterDto.Vo deviceRegister; } @Data @Accessors(chain = true) public static class Page extends Vo { @ApiModelProperty("是否导出当前页") private Boolean exportPage = true; @ApiModelProperty(value = "分页对象", required = true) private PageBean page; /** * size -1 不分页 * * @return */ public PageBean getPage() { if (!this.exportPage) { this.page.setSize(-1L); } return page; } @ApiModelProperty("资产/sn/sim号") private String no; @ApiModelProperty("商户id/商户号/商户名称") private String merc; @ApiModelProperty("设备id/设备名称") private String deviceIdName; @ApiModelProperty("联网状态") private Integer netState; @ApiModelProperty("上位机版本号") private String appUpmVersion; @ApiModelProperty("下位机版本号") private String appDownmVersion; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "激活时间-起") private LocalDate beginActiveTime; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "激活时间-始") private LocalDate endActiveTime; @ApiModelProperty("附近最大距离,单位:米") private Integer nearby; @ApiModelProperty(value = "系统信息", hidden = true) private DeviceSysinfoDto.Vo deviceSysinfo; @ApiModelProperty(value = "状态信息", hidden = true) private DeviceStatusDto.Vo deviceStatus; @ApiModelProperty(value = "注册信息", hidden = true) private DeviceRegisterDto.Vo deviceRegister; public String getBeginActiveTime() { return beginActiveTime == null ? null : DataTime.toString(beginActiveTime.atTime(0, 0, 0)); } public String getEndActiveTime() { return endActiveTime == null ? null : DataTime.toString(endActiveTime.atTime(23, 59, 59)); } } @Data @Accessors(chain = true) public static class Vo { @ApiModelProperty("设备id") private Long deviceId; @ApiModelProperty("设备名称") private String deviceName; @DictFormat(DictConsts.DEVICE_TYPE) @ApiModelProperty("设备类型") private Integer deviceType; @ApiModelProperty("商户设备资产编号") private String mercDeviceCode; @ApiModelProperty("商户id") private Long mercId; @ApiModelProperty("商户编码") private String mercCode; @ApiModelProperty("算法平台id") private Long algorithmId; @ApiModelProperty("点位id") private Long placeId; @ApiModelProperty("线路id") private Long placeLineId; @ApiModelProperty("区域id") private Long districtId; @DictFormat(DictConsts.DEVICE_ACTIVE_STATUS) @ApiModelProperty("激活状态") private Integer activeState; @ApiModelProperty("激活时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime activeTime; @DictFormat(DictConsts.DEVICE_BUSY_STATUS) @ApiModelProperty("运营状态") private Integer busyState; @ApiModelProperty("显示状态") private Boolean showStatus; @DictFormat(DictConsts.DEVICE_FREEZE_STATUS) @ApiModelProperty("冻结状态") private Integer freezeStatus; @ApiModelProperty("设备图片") private String deviceImg; @ApiModelProperty("经度") private String lon; @ApiModelProperty("纬度") private String lat; @DictFormat(DictConsts.DEVICE_FAULT_LEVEL) @ApiModelProperty("故障等级") private Integer faultLevel; @ApiModelProperty("创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @ApiModelProperty("更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; @ApiModelProperty("系统信息") private DeviceSysinfoDto.Vo deviceSysinfo; @ApiModelProperty("状态信息") private DeviceStatusDto.Vo deviceStatus; @ApiModelProperty("注册信息") private DeviceRegisterDto.Vo deviceRegister; } @Data @Accessors(chain = true) public static class Vo2 extends Vo { @ApiModelProperty("商户名称") private String mercName; @ApiModelProperty("距离") private Integer m; @ApiModelProperty("点位名称") private String placeName; @ApiModelProperty("线路名称") private String placeLineName; @ApiModelProperty("区域名称") private String districtName; } @Data @Accessors(chain = true) public static class DeviceExcelVO { @ExcelProperty("所属商户") @ApiModelProperty("商户名称") private String mercName; @ExcelProperty("点位") @ApiModelProperty("点位名称") private String placeName; @ExcelProperty("线路") @ApiModelProperty("线路名称") private String placeLineName; @ExcelProperty("区域") @ApiModelProperty("区域名称") private String districtName; @ExcelProperty("设备编号") @ApiModelProperty("设备id") private Long deviceId; @ExcelProperty("设备名称") @ApiModelProperty("设备名称") private String deviceName; @ExcelProperty(value = "设备类型", converter = DictConvert.class) @DictFormat(DictConsts.DEVICE_TYPE) @ApiModelProperty("设备类型") private Integer deviceType; @ExcelProperty("商户设备资产编号") @ApiModelProperty("商户设备资产编号") private String mercDeviceCode; @ApiModelProperty("商户id") private Long mercId; @ExcelProperty(value = "商户编码") @ApiModelProperty("商户编码") private String mercCode; @ExcelProperty(value = "激活状态", converter = DictConvert.class) @DictFormat(DictConsts.DEVICE_ACTIVE_STATUS) @ApiModelProperty("激活状态") private Integer activeState; @ExcelProperty(value = "运营状态", converter = DictConvert.class) @DictFormat(DictConsts.DEVICE_BUSY_STATUS) @ApiModelProperty("运营状态") private Integer busyState; @ExcelProperty(value = "冻结状态", converter = DictConvert.class) @DictFormat(DictConsts.DEVICE_FREEZE_STATUS) @ApiModelProperty("冻结状态") private Integer freezeStatus; @ExcelProperty(value = "故障等级", converter = DictConvert.class) @DictFormat(DictConsts.DEVICE_FAULT_LEVEL) @ApiModelProperty("故障等级") private Integer faultLevel; } /** * 商户设备授权 * * @author 谭斌 * @date 2023/02/09 */ @Data @Accessors(chain = true) public static class MercDeviceAuthDto { @ApiModelProperty(value = "对应商户的全量设备ID(传空则取消商户所有机器)", required = false) private List deviceIds; @ApiModelProperty(value = "商户ID") private Long mercId; @ApiModelProperty(value = "商户编码", required = true) private String mercCode; @ApiModelProperty(value = "算法ID") private Long algorithmId; } @Data @Accessors(chain = true) public static class MercAlgorithmIdListDto { @ApiModelProperty(value = "商户ID") private Long mercId; } /** * 商户设备首页统计 * * @author 谭斌 * @date 2023/02/28 */ @Data @Accessors(chain = true) public static class MercHomeStatisticalVO { @ApiModelProperty(value = "在线设备数") private Integer onlineNum; @ApiModelProperty(value = "离线设备数") private Integer offlineNum; @ApiModelProperty(value = "运营设备数") private Integer operatingNum; @ApiModelProperty(value = "停业设备数") private Integer closedNum; @ApiModelProperty(value = "待补货设备数") private Integer needToFillNum; } @Data @Accessors(chain = true) public static class MercHomeQueryDTO { @ApiModelProperty(value = "商户id") private Long mercId; @ApiModelProperty(value = "设备名称") private String deviceName; @ApiModelProperty("设备编号") private Long deviceId; } @Data @Accessors(chain = true) public static class MercHomeListVO { @ApiModelProperty(value = "线路名称") private String placeLineName; @ApiModelProperty(value = "线路ID") private Long placeLineId; @ApiModelProperty(value = "设备数") private Integer deviceNum; @ApiModelProperty(value = "列表设备信息") private List deviceInfos; } @Data @Accessors(chain = true) public static class MercHomeCountVO { @ApiModelProperty(value = "线路ID") private Long placeLineId; @ApiModelProperty(value = "设备数") private Integer deviceNum; } @Data @Accessors(chain = true) public static class MercHomeDeviceVo { @ApiModelProperty("设备id") private Long deviceId; @ApiModelProperty("设备名称") private String deviceName; @ApiModelProperty("设备类型") private Integer deviceType; @ApiModelProperty("设备类型名称") private String deviceTypeName; @ApiModelProperty("商户设备资产编号") private String mercDeviceCode; @ApiModelProperty("运营状态") private Integer busyState; @ApiModelProperty("运营状态名称") private String busyStateName; @ApiModelProperty("今日订单数") private Integer dayOrderNum; @NumberChange @ApiModelProperty("今日销售额") private String daySalesPrice; @ApiModelProperty("在售商品数") private Integer onSaleNum; @ApiModelProperty("补货数") private Integer fillNum; } @Data @Accessors(chain = true) public static class MercHomeDevicePage extends MercHomeQueryDTO { @ApiModelProperty(value = "分页对象", required = true) private PageBean page; } }