DeviceInfoDto.java 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. package com.xy.dto;
  2. import com.alibaba.excel.annotation.ExcelProperty;
  3. import com.fasterxml.jackson.annotation.JsonFormat;
  4. import com.xy.annotate.DictFormat;
  5. import com.xy.consts.DictConsts;
  6. import com.xy.convert.DictConvert;
  7. import com.xy.utils.DataTime;
  8. import com.xy.utils.PageBean;
  9. import io.swagger.annotations.ApiModelProperty;
  10. import lombok.Data;
  11. import lombok.experimental.Accessors;
  12. import javax.validation.constraints.NotBlank;
  13. import javax.validation.constraints.NotNull;
  14. import java.math.BigDecimal;
  15. import java.time.LocalDate;
  16. import java.time.LocalDateTime;
  17. import java.util.List;
  18. @Data
  19. @Accessors(chain = true)
  20. public class DeviceInfoDto {
  21. /**
  22. * 删除线路\点位时时指定 传入 wherePlaceLineId\wherePlaceId
  23. */
  24. public final static String DEL = "del";
  25. /**
  26. * 更新线\点位时指定 传入 deviceIds、placeLineId\placeId
  27. */
  28. public final static String UPDATE = "update";
  29. /**
  30. * 解绑线路、点位时指定 传入 deviceIds
  31. */
  32. public final static String CLEAR = "clear";
  33. @Data
  34. @Accessors(chain = true)
  35. public static class Obj {
  36. @ApiModelProperty("商户ID")
  37. private Long mercId;
  38. @ApiModelProperty("设备id")
  39. private Long deviceId;
  40. @ApiModelProperty("门id 0=1号门 1=2号门")
  41. private Integer door;
  42. @ApiModelProperty("是否需要系统信息")
  43. private Boolean isSysinfo = false;
  44. @ApiModelProperty("是否需要状态信息")
  45. private Boolean isStatus = false;
  46. @ApiModelProperty("是否需要注册信息")
  47. private Boolean isRegister = false;
  48. }
  49. @Data
  50. @Accessors(chain = true)
  51. public static class ListDto {
  52. @ApiModelProperty(value = "设备id批量查")
  53. private List<Long> deviceIds;
  54. }
  55. @Data
  56. @Accessors(chain = true)
  57. public static class ListCommon {
  58. @ApiModelProperty("设备信息VO")
  59. Vo vo;
  60. @ApiModelProperty("线路id多个")
  61. private List<Long> placeLineIds;
  62. @ApiModelProperty("id")
  63. private List<Long> deviceIds;
  64. @ApiModelProperty("指定字段查询")
  65. private List<String> columnList;
  66. @ApiModelProperty(value = "根据名称或编码搜索")
  67. private String deviceSearch;
  68. }
  69. @Data
  70. @Accessors(chain = true)
  71. public static class UpdateLine {
  72. @NotNull(message = "更新类型")
  73. @ApiModelProperty(value = "更新类型", required = true)
  74. private String type;
  75. @NotNull(message = "商户id不能为空")
  76. @ApiModelProperty(value = "商户id", required = true)
  77. private Long mercId;
  78. @ApiModelProperty("设备id集合")
  79. private List<Long> deviceIds;
  80. @ApiModelProperty(value = "线路ID")
  81. private Long placeLineId;
  82. @ApiModelProperty(value = "原线路ID")
  83. private Long wherePlaceLineId;
  84. }
  85. @Data
  86. @Accessors(chain = true)
  87. public static class UpdatePlace {
  88. @NotNull(message = "更新类型")
  89. @ApiModelProperty(value = "更新类型", required = true)
  90. private String type;
  91. @NotNull(message = "商户id不能为空")
  92. @ApiModelProperty(value = "商户id", required = true)
  93. private Long mercId;
  94. @ApiModelProperty("设备id集合")
  95. private List<Long> deviceIds;
  96. @ApiModelProperty(value = "点位ID")
  97. private Long placeId;
  98. @ApiModelProperty(value = "原点位ID")
  99. private Long wherePlaceId;
  100. }
  101. @Data
  102. @Accessors(chain = true)
  103. public static class Update extends Vo {
  104. @NotNull(message = "deviceId不能为空")
  105. @ApiModelProperty("设备id")
  106. private Long deviceId;
  107. @ApiModelProperty(value = "系统信息", hidden = true)
  108. private DeviceSysinfoDto.Vo deviceSysinfo;
  109. @ApiModelProperty(value = "状态信息", hidden = true)
  110. private DeviceStatusDto.Vo deviceStatus;
  111. @ApiModelProperty(value = "注册信息", hidden = true)
  112. private DeviceRegisterDto.Vo deviceRegister;
  113. }
  114. @Data
  115. @Accessors(chain = true)
  116. public static class Page extends Vo {
  117. @ApiModelProperty("缺货状态")
  118. private Integer stockStatus;
  119. /**
  120. * 设备ID
  121. */
  122. private List<Long> deviceIdList;
  123. @ApiModelProperty("是否查询故障设备")
  124. private Boolean fault;
  125. @ApiModelProperty("是否导出当前页")
  126. private Boolean exportPage = true;
  127. @ApiModelProperty(value = "分页对象", required = true)
  128. private PageBean page;
  129. @ApiModelProperty("是否绑定商户")
  130. private Boolean isBindMerc;
  131. /**
  132. * size -1 不分页
  133. *
  134. * @return
  135. */
  136. public PageBean getPage() {
  137. if (!this.exportPage) {
  138. this.page.setSize(-1L);
  139. }
  140. return page;
  141. }
  142. @ApiModelProperty("资产/sn/sim号")
  143. private String no;
  144. @ApiModelProperty("商户id/商户号/商户名称")
  145. private String merc;
  146. @ApiModelProperty("设备id/设备名称")
  147. private String deviceIdName;
  148. @ApiModelProperty("联网状态")
  149. private Integer netState;
  150. @ApiModelProperty("上位机版本号")
  151. private String appUpmVersion;
  152. @ApiModelProperty("下位机版本号")
  153. private String appDownmVersion;
  154. @JsonFormat(pattern = "yyyy-MM-dd")
  155. @ApiModelProperty(value = "激活时间-起")
  156. private LocalDate beginActiveTime;
  157. @JsonFormat(pattern = "yyyy-MM-dd")
  158. @ApiModelProperty(value = "激活时间-始")
  159. private LocalDate endActiveTime;
  160. @ApiModelProperty("附近最大距离,单位:米")
  161. private Integer nearby;
  162. @ApiModelProperty(value = "系统信息", hidden = true)
  163. private DeviceSysinfoDto.Vo deviceSysinfo;
  164. @ApiModelProperty(value = "状态信息", hidden = true)
  165. private DeviceStatusDto.Vo deviceStatus;
  166. @ApiModelProperty(value = "注册信息", hidden = true)
  167. private DeviceRegisterDto.Vo deviceRegister;
  168. public String getBeginActiveTime() {
  169. return beginActiveTime == null ? null : DataTime.toString(beginActiveTime.atTime(0, 0, 0));
  170. }
  171. public String getEndActiveTime() {
  172. return endActiveTime == null ? null : DataTime.toString(endActiveTime.atTime(23, 59, 59));
  173. }
  174. }
  175. @Data
  176. @Accessors(chain = true)
  177. public static class Vo {
  178. @ApiModelProperty("设备id")
  179. private Long deviceId;
  180. @ApiModelProperty("设备名称")
  181. private String deviceName;
  182. @DictFormat(DictConsts.DEVICE_TYPE)
  183. @ApiModelProperty("设备类型")
  184. private Integer deviceType;
  185. @ApiModelProperty("商户设备资产编号")
  186. private String mercDeviceCode;
  187. @ApiModelProperty("商户id")
  188. private Long mercId;
  189. @ApiModelProperty("商户编码")
  190. private String mercCode;
  191. @ApiModelProperty("商户名称")
  192. private String mercName;
  193. @ApiModelProperty("算法平台id")
  194. private Long algorithmId;
  195. @ApiModelProperty("点位id")
  196. private Long placeId;
  197. @ApiModelProperty("线路id")
  198. private Long placeLineId;
  199. @ApiModelProperty("区域id")
  200. private Long districtId;
  201. @DictFormat(DictConsts.DEVICE_ACTIVE_STATUS)
  202. @ApiModelProperty("激活状态")
  203. private Integer activeState;
  204. @ApiModelProperty("激活时间")
  205. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  206. private LocalDateTime activeTime;
  207. @DictFormat(DictConsts.DEVICE_BUSY_STATUS)
  208. @ApiModelProperty("运营状态")
  209. private Integer busyState;
  210. @ApiModelProperty("显示状态")
  211. private Boolean showStatus;
  212. @DictFormat(DictConsts.DEVICE_FREEZE_STATUS)
  213. @ApiModelProperty("冻结状态")
  214. private Integer freezeStatus;
  215. @ApiModelProperty("设备图片")
  216. private String deviceImg;
  217. @ApiModelProperty("经度")
  218. private String lon;
  219. @ApiModelProperty("纬度")
  220. private String lat;
  221. @DictFormat(DictConsts.DEVICE_FAULT_LEVEL)
  222. @ApiModelProperty("故障等级")
  223. private Integer faultLevel;
  224. @ApiModelProperty("创建时间")
  225. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  226. private LocalDateTime createTime;
  227. @ApiModelProperty("更新时间")
  228. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  229. private LocalDateTime updateTime;
  230. @ApiModelProperty("系统信息")
  231. private DeviceSysinfoDto.Vo deviceSysinfo;
  232. @ApiModelProperty("状态信息")
  233. private DeviceStatusDto.Vo deviceStatus;
  234. @ApiModelProperty("注册信息")
  235. private DeviceRegisterDto.Vo deviceRegister;
  236. }
  237. @Data
  238. @Accessors(chain = true)
  239. public static class Vo2 extends Vo {
  240. @ApiModelProperty("商户名称")
  241. private String mercName;
  242. @ApiModelProperty("距离")
  243. private Integer m;
  244. @ApiModelProperty("点位名称")
  245. private String placeName;
  246. @ApiModelProperty("线路名称")
  247. private String placeLineName;
  248. @ApiModelProperty("区域名称")
  249. private String districtName;
  250. @ApiModelProperty("今日订单数")
  251. private Integer dayOrderNum;
  252. @ApiModelProperty("今日销售额")
  253. private Integer daySalesPrice;
  254. }
  255. @Data
  256. @Accessors(chain = true)
  257. public static class MerHomeSearchVO {
  258. @ApiModelProperty("今日订单数")
  259. private Integer dayOrderNum;
  260. @ApiModelProperty("今日销售额")
  261. private Integer daySalesPrice;
  262. @ApiModelProperty("设备id")
  263. private Long deviceId;
  264. @ApiModelProperty("设备名称")
  265. private String deviceName;
  266. @DictFormat(DictConsts.DEVICE_TYPE)
  267. @ApiModelProperty("设备类型")
  268. private Integer deviceType;
  269. @ApiModelProperty("商户编码")
  270. private String mercCode;
  271. @ApiModelProperty("商户名称")
  272. private String mercName;
  273. @DictFormat(DictConsts.DEVICE_BUSY_STATUS)
  274. @ApiModelProperty("运营状态")
  275. private Integer busyState;
  276. @DictFormat(DictConsts.DEVICE_FAULT_LEVEL)
  277. @ApiModelProperty("故障等级")
  278. private Integer faultLevel;
  279. @ApiModelProperty("更新时间")
  280. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  281. private LocalDateTime updateTime;
  282. @ApiModelProperty("上位机版本号=软件版本号")
  283. private String appUpmVersion;
  284. @ApiModelProperty("联网信号强度")
  285. private Integer netDbm;
  286. @ApiModelProperty("温度值")
  287. private Integer tempValue;
  288. }
  289. @Data
  290. @Accessors(chain = true)
  291. public static class DeviceExcelVO {
  292. @ExcelProperty("所属商户")
  293. @ApiModelProperty("商户名称")
  294. private String mercName;
  295. @ExcelProperty("点位")
  296. @ApiModelProperty("点位名称")
  297. private String placeName;
  298. @ExcelProperty("线路")
  299. @ApiModelProperty("线路名称")
  300. private String placeLineName;
  301. @ExcelProperty("区域")
  302. @ApiModelProperty("区域名称")
  303. private String districtName;
  304. @ExcelProperty("设备编号")
  305. @ApiModelProperty("设备id")
  306. private Long deviceId;
  307. @ExcelProperty("设备名称")
  308. @ApiModelProperty("设备名称")
  309. private String deviceName;
  310. @ExcelProperty(value = "设备类型", converter = DictConvert.class)
  311. @DictFormat(DictConsts.DEVICE_TYPE)
  312. @ApiModelProperty("设备类型")
  313. private Integer deviceType;
  314. @ExcelProperty("商户设备资产编号")
  315. @ApiModelProperty("商户设备资产编号")
  316. private String mercDeviceCode;
  317. @ApiModelProperty("商户id")
  318. private Long mercId;
  319. @ExcelProperty(value = "商户编码")
  320. @ApiModelProperty("商户编码")
  321. private String mercCode;
  322. @ExcelProperty(value = "激活状态", converter = DictConvert.class)
  323. @DictFormat(DictConsts.DEVICE_ACTIVE_STATUS)
  324. @ApiModelProperty("激活状态")
  325. private Integer activeState;
  326. @ExcelProperty(value = "运营状态", converter = DictConvert.class)
  327. @DictFormat(DictConsts.DEVICE_BUSY_STATUS)
  328. @ApiModelProperty("运营状态")
  329. private Integer busyState;
  330. @ExcelProperty(value = "冻结状态", converter = DictConvert.class)
  331. @DictFormat(DictConsts.DEVICE_FREEZE_STATUS)
  332. @ApiModelProperty("冻结状态")
  333. private Integer freezeStatus;
  334. @ExcelProperty(value = "故障等级", converter = DictConvert.class)
  335. @DictFormat(DictConsts.DEVICE_FAULT_LEVEL)
  336. @ApiModelProperty("故障等级")
  337. private Integer faultLevel;
  338. }
  339. /**
  340. * 商户设备授权
  341. *
  342. * @author 谭斌
  343. * @date 2023/02/09
  344. */
  345. @Data
  346. @Accessors(chain = true)
  347. public static class MercDeviceAuthDto {
  348. @ApiModelProperty(value = "对应商户的全量设备ID(传空则取消商户所有机器)", required = false)
  349. private List<Long> deviceIds;
  350. @ApiModelProperty(value = "商户ID", required = false)
  351. private Long mercId;
  352. @ApiModelProperty(value = "父商户ID")
  353. private Long parentId;
  354. @ApiModelProperty(value = "商户名称", required = false)
  355. private String mercName;
  356. @NotBlank(message = "商户编码不可为空")
  357. @ApiModelProperty(value = "商户编码", required = true)
  358. private String mercCode;
  359. @ApiModelProperty(value = "算法ID", required = false)
  360. private Long algorithmId;
  361. }
  362. @Data
  363. @Accessors(chain = true)
  364. public static class MercAlgorithmIdListDto {
  365. @ApiModelProperty(value = "商户ID")
  366. private Long mercId;
  367. }
  368. /**
  369. * 商户设备首页统计
  370. *
  371. * @author 谭斌
  372. * @date 2023/02/28
  373. */
  374. @Data
  375. @Accessors(chain = true)
  376. public static class MercHomeStatisticalVO {
  377. @ApiModelProperty(value = "在线设备数")
  378. private Integer onlineNum;
  379. @ApiModelProperty(value = "离线设备数")
  380. private Integer offlineNum;
  381. @ApiModelProperty(value = "运营设备数")
  382. private Integer operatingNum;
  383. @ApiModelProperty(value = "停业设备数")
  384. private Integer closedNum;
  385. @ApiModelProperty(value = "待补货设备数")
  386. private Integer needToFillNum;
  387. }
  388. @Data
  389. @Accessors(chain = true)
  390. public static class MercHomeQueryDTO {
  391. @ApiModelProperty(value = "商户id")
  392. private Long mercId;
  393. @ApiModelProperty(value = "设备名称")
  394. private String deviceName;
  395. @ApiModelProperty("设备编号")
  396. private Long deviceId;
  397. }
  398. @Data
  399. @Accessors(chain = true)
  400. public static class MercHomeListVO {
  401. @ApiModelProperty(value = "线路名称")
  402. private String placeLineName;
  403. @ApiModelProperty(value = "线路ID")
  404. private Long placeLineId;
  405. @ApiModelProperty(value = "设备数")
  406. private Integer deviceNum;
  407. @ApiModelProperty(value = "列表设备信息")
  408. private List<MercHomeDeviceVo> deviceInfos;
  409. }
  410. @Data
  411. @Accessors(chain = true)
  412. public static class MercHomeCountVO {
  413. @ApiModelProperty(value = "线路ID")
  414. private Long placeLineId;
  415. @ApiModelProperty(value = "设备数")
  416. private Integer deviceNum;
  417. }
  418. @Data
  419. @Accessors(chain = true)
  420. public static class MercHomeDeviceVo {
  421. @ApiModelProperty("设备id")
  422. private Long deviceId;
  423. @ApiModelProperty("设备名称")
  424. private String deviceName;
  425. @ApiModelProperty("设备类型")
  426. private Integer deviceType;
  427. @ApiModelProperty("设备类型名称")
  428. private String deviceTypeName;
  429. @ApiModelProperty("商户设备资产编号")
  430. private String mercDeviceCode;
  431. @ApiModelProperty("运营状态")
  432. private Integer busyState;
  433. @ApiModelProperty("运营状态名称")
  434. private String busyStateName;
  435. @ApiModelProperty("今日订单数")
  436. private Integer dayOrderNum;
  437. @ApiModelProperty("今日销售额")
  438. private Integer daySalesPrice;
  439. @ApiModelProperty("在售商品数")
  440. private Integer onSaleNum;
  441. @ApiModelProperty("补货数")
  442. private Integer fillNum;
  443. }
  444. @Data
  445. @Accessors(chain = true)
  446. public static class DeviceDataCountDTO {
  447. @ApiModelProperty("商户ID")
  448. private Long mercId;
  449. @ApiModelProperty("设备id")
  450. private Long deviceId;
  451. /**
  452. * 统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)
  453. */
  454. @ApiModelProperty(value = "统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)", notes = "统计类型(1=经营数据,2=经营图表,3=温度图表,4=信号图表,5=商品管理)")
  455. private Integer type;
  456. @ApiModelProperty("温度、信号图表选择日期yyyy-MM-dd")
  457. private String choosDate;
  458. }
  459. @Data
  460. @Accessors(chain = true)
  461. public static class DeviceDataCountVO {
  462. @ApiModelProperty("(天)经营数据")
  463. private BusinessData dayBusinessData;
  464. @ApiModelProperty("(月)经营数据")
  465. private BusinessData monthBusinessData;
  466. @ApiModelProperty("商品统计数据")
  467. private GoodsData goodsData;
  468. @ApiModelProperty("经营图表")
  469. private BusinessChart businessChart;
  470. @ApiModelProperty("温度图表")
  471. private TemperatureChart temperatureChart;
  472. @ApiModelProperty("信号图表")
  473. private SignalChart signalChart;
  474. }
  475. /**
  476. * 信号图表数据
  477. */
  478. @Data
  479. @Accessors(chain = true)
  480. public static class SignalChart {
  481. @ApiModelProperty("横坐标:当天到秒的数据")
  482. private List<String> categories;
  483. @ApiModelProperty("名称、数据")
  484. private List<MyChartSeries> series;
  485. }
  486. /**
  487. * 温度图表数据
  488. */
  489. @Data
  490. @Accessors(chain = true)
  491. public static class TemperatureChart {
  492. @ApiModelProperty("横坐标:当天到秒的数据")
  493. private List<String> categories;
  494. @ApiModelProperty("名称、数据")
  495. private List<MyChartSeries2> series;
  496. }
  497. /**
  498. * 经营图表数据
  499. */
  500. @Data
  501. @Accessors(chain = true)
  502. public static class BusinessChart {
  503. @ApiModelProperty("横坐标:日期最近一个月的")
  504. private List<String> categories;
  505. @ApiModelProperty("名称、数据")
  506. private List<MyChartSeries> series;
  507. }
  508. @Data
  509. @Accessors(chain = true)
  510. public static class MyChartSeries {
  511. @ApiModelProperty("数据")
  512. private List<Integer> data;
  513. @ApiModelProperty("名称")
  514. private String name;
  515. }
  516. @Data
  517. @Accessors(chain = true)
  518. public static class MyChartSeries2 {
  519. @ApiModelProperty("数据")
  520. private List<BigDecimal> data;
  521. @ApiModelProperty("名称")
  522. private String name;
  523. }
  524. @Data
  525. @Accessors(chain = true)
  526. public static class BusinessData {
  527. @ApiModelProperty(value = "营业额;单位分")
  528. private Integer salesMoney;
  529. @ApiModelProperty(value = "销售笔数")
  530. private Integer salesCount;
  531. @ApiModelProperty(value = "销售商品数")
  532. private Integer goodsCount;
  533. @ApiModelProperty(value = "退款金额;单位分")
  534. private Integer refundMoney;
  535. @ApiModelProperty(value = "退款笔数")
  536. private Integer refundCount;
  537. @ApiModelProperty(value = "风险订单数")
  538. private Integer riskCount;
  539. @ApiModelProperty(value = "0元订单笔数")
  540. private Integer zeroCount;
  541. }
  542. /**
  543. * 商品管理统计数据
  544. */
  545. @Data
  546. @Accessors(chain = true)
  547. public static class GoodsData {
  548. @ApiModelProperty("在售商品种类")
  549. private Integer categoryNum;
  550. /**
  551. * 设备商品在售库存数
  552. */
  553. @ApiModelProperty("可售库存")
  554. private Integer stock;
  555. /**
  556. * 最近一次补货后的库存数
  557. */
  558. @ApiModelProperty("上次补货后库存")
  559. private Integer afterFillStock;
  560. }
  561. }