DeviceDataDto.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394
  1. package com.xy.dto;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.fasterxml.jackson.annotation.JsonFormat;
  5. import com.xy.utils.PageBean;
  6. import io.swagger.annotations.ApiModelProperty;
  7. import lombok.Data;
  8. import lombok.experimental.Accessors;
  9. import javax.validation.constraints.NotBlank;
  10. import javax.validation.constraints.NotNull;
  11. import java.math.BigDecimal;
  12. import java.time.LocalDate;
  13. import java.time.LocalDateTime;
  14. import java.util.List;
  15. /**
  16. * <p>
  17. * 设备统计数据
  18. * </p>
  19. *
  20. * @author lijin
  21. * @since 2023-01-11
  22. */
  23. public class DeviceDataDto {
  24. @Data
  25. @Accessors(chain = true)
  26. public static class DayChartDto {
  27. @ApiModelProperty(value = "商户ID")
  28. private Long mercId;
  29. @ApiModelProperty(value = "统计类型(day,month,year)", required = true)
  30. @NotNull(message = "统计类型不能为空")
  31. private String type;
  32. @NotNull(message = "开始时间不能为空")
  33. @ApiModelProperty(value = "开始时间", required = true)
  34. @JsonFormat(pattern = "yyyy-MM-dd")
  35. private LocalDate beginDate;
  36. @NotNull(message = "结束时间不能为空")
  37. @JsonFormat(pattern = "yyyy-MM-dd")
  38. @ApiModelProperty(value = "结束时间", required = true)
  39. private LocalDate endDate;
  40. public Integer getBeginInt() {
  41. return Integer.valueOf(StrUtil.replace(beginDate.toString(), "-", ""));
  42. }
  43. public Integer getEndDateInt() {
  44. return Integer.valueOf(StrUtil.replace(endDate.toString(), "-", ""));
  45. }
  46. }
  47. @Data
  48. @Accessors(chain = true)
  49. public static class DayChartVo {
  50. @ApiModelProperty("时间")
  51. private Integer time;
  52. @ApiModelProperty("笔数")
  53. private Integer num;
  54. @ApiModelProperty("销售额(分)")
  55. private Integer totalMoney;
  56. @ApiModelProperty("销售额(元)")
  57. private BigDecimal totalMoneyYuan;
  58. public BigDecimal getTotalMoneyYuan() {
  59. return BigDecimal.valueOf(totalMoney).divide(new BigDecimal(100));
  60. }
  61. }
  62. @Data
  63. @Accessors(chain = true)
  64. public static class SumCountVo {
  65. @ApiModelProperty(value = "营业额;单位分")
  66. private Integer salesMoney;
  67. @ApiModelProperty(value = "销售笔数")
  68. private Integer salesCount;
  69. @ApiModelProperty(value = "销售商品数")
  70. private Integer goodsCount;
  71. @ApiModelProperty(value = "退款金额;单位分")
  72. private Integer refundMoney;
  73. @ApiModelProperty(value = "退款笔数")
  74. private Integer refundCount;
  75. @ApiModelProperty(value = "风险订单数")
  76. private Integer riskCount;
  77. @ApiModelProperty(value = "0元订单笔数")
  78. private Integer zeroCount;
  79. }
  80. @Data
  81. @Accessors(chain = true)
  82. public static class SumCountDto {
  83. @ApiModelProperty(value = "商户ID", required = true)
  84. private Long mercId;
  85. @NotNull(message = "统计类型不能为空")
  86. @ApiModelProperty(value = "统计类型", required = true)
  87. private String type;
  88. @NotNull(message = "排序字段不能为空")
  89. @ApiModelProperty(value = "排序字段", required = true)
  90. private String orderByKey;
  91. @NotNull(message = "排序方式不能为空")
  92. @ApiModelProperty(value = "排序方式", required = true)
  93. private String orderBy;
  94. @ApiModelProperty("开始时间")
  95. private String beginDate;
  96. @ApiModelProperty("结束时间")
  97. private String endDate;
  98. @ApiModelProperty(value = "商户拥有的设备ID")
  99. private List<Long> mercDeviceIds;
  100. public String getBeginDate() {
  101. return StrUtil.replace(beginDate, "-", "");
  102. }
  103. public String getEndDate() {
  104. return StrUtil.replace(endDate, "-", "");
  105. }
  106. }
  107. @Data
  108. @Accessors(chain = true)
  109. public static class SumPageDto extends SumCountDto {
  110. @NotNull(message = "分页信息不能为空")
  111. @ApiModelProperty(value = "分页信息", required = true)
  112. private PageBean page;
  113. @ApiModelProperty(value = "商户拥有的设备ID")
  114. private List<Long> mercDeviceIds;
  115. }
  116. @Data
  117. @Accessors(chain = true)
  118. public static class SumPageVo {
  119. @ApiModelProperty(value = "平台商品id")
  120. private Long deviceId;
  121. @ApiModelProperty(value = "设备名称")
  122. private String deviceName;
  123. @ApiModelProperty(value = "营业额;单位分")
  124. private Integer salesMoney;
  125. @ApiModelProperty(value = "销售笔数")
  126. private Integer salesCount;
  127. @ApiModelProperty(value = "销售商品数")
  128. private Integer goodsCount;
  129. @ApiModelProperty(value = "退款金额;单位分")
  130. private Integer refundMoney;
  131. @ApiModelProperty(value = "退款笔数")
  132. private Integer refundCount;
  133. @ApiModelProperty(value = "风险订单数")
  134. private Integer riskCount;
  135. @ApiModelProperty(value = "0元订单笔数")
  136. private Integer zeroCount;
  137. }
  138. @Data
  139. @Accessors(chain = true)
  140. public static class Page extends Vo {
  141. @ApiModelProperty(value = "分页对象", required = true)
  142. private PageBean page;
  143. @JsonFormat(pattern = "yyyy-MM-dd")
  144. @ApiModelProperty(value = "创建时间-起")
  145. private LocalDate beginCreateTime;
  146. @JsonFormat(pattern = "yyyy-MM-dd")
  147. @ApiModelProperty(value = "创建时间-始")
  148. private LocalDate endCreateTime;
  149. public LocalDateTime getBeginCreateTime() {
  150. return beginCreateTime == null ? null : beginCreateTime.atTime(0, 0, 0);
  151. }
  152. public LocalDateTime getEndCreateTime() {
  153. return endCreateTime == null ? null : endCreateTime.atTime(23, 59, 59);
  154. }
  155. }
  156. @Data
  157. @Accessors(chain = true)
  158. public static class SaveOrAccum extends Vo {
  159. @NotNull(message = "deviceId不能为空")
  160. @ApiModelProperty(value = "设备ID")
  161. private Long deviceId;
  162. }
  163. @Data
  164. @Accessors(chain = true)
  165. public static class Vo {
  166. @ApiModelProperty(value = "id")
  167. private Integer id;
  168. @ApiModelProperty(value = "商户ID")
  169. private Long mercId;
  170. @ApiModelProperty(value = "设备ID")
  171. private Long deviceId;
  172. @ApiModelProperty(value = "统计类型;year|month|day")
  173. private String type;
  174. @ApiModelProperty(value = "统计日期;2022|202206|20220603")
  175. private Integer dateValue;
  176. @ApiModelProperty(value = "营业额;单位分")
  177. private Integer salesMoney;
  178. @ApiModelProperty(value = "销售笔数")
  179. private Integer salesCount;
  180. @ApiModelProperty(value = "销售商品数")
  181. private Integer goodsCount;
  182. @ApiModelProperty(value = "退款金额;单位分")
  183. private Integer refundMoney;
  184. @ApiModelProperty(value = "退款笔数")
  185. private Integer refundCount;
  186. @ApiModelProperty(value = "风险订单数")
  187. private Integer riskCount;
  188. @ApiModelProperty(value = "0元订单笔数")
  189. private Integer zeroCount;
  190. @ApiModelProperty(value = "设备故障数")
  191. private Integer deviceFaultCount;
  192. @ApiModelProperty(value = "创建时间")
  193. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  194. private LocalDateTime createTime;
  195. @ApiModelProperty(value = "更新时间")
  196. @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
  197. private LocalDateTime updateTime;
  198. }
  199. @Data
  200. @Accessors(chain = true)
  201. public static class ListDTO {
  202. @ApiModelProperty(value = "商户ID")
  203. private Long mercId;
  204. @ApiModelProperty(value = "设备ID")
  205. private Long deviceId;
  206. @ApiModelProperty(value = "设备ID们")
  207. private List<Long> deviceIds;
  208. @ApiModelProperty(value = "统计类型;year|month|day")
  209. private String type;
  210. @ApiModelProperty(value = "统计日期;2022|202206|20220603")
  211. private Integer dateValue;
  212. @ApiModelProperty(value = "营业额;单位分")
  213. private Integer salesMoney;
  214. @ApiModelProperty(value = "销售笔数")
  215. private Integer salesCount;
  216. @ApiModelProperty(value = "销售商品数")
  217. private Integer goodsCount;
  218. @ApiModelProperty(value = "退款金额;单位分")
  219. private Integer refundMoney;
  220. @ApiModelProperty(value = "退款笔数")
  221. private Integer refundCount;
  222. @ApiModelProperty(value = "风险订单数")
  223. private Integer riskCount;
  224. @ApiModelProperty(value = "0元订单笔数")
  225. private Integer zeroCount;
  226. @ApiModelProperty(value = "设备故障数")
  227. private Integer deviceFaultCount;
  228. }
  229. /**
  230. * B端小程序订单分页统计 按天
  231. */
  232. @Data
  233. @Accessors(chain = true)
  234. public static class MercOrdersDayCountVO {
  235. @ApiModelProperty(value = "总订单数")
  236. private Integer orderNum;
  237. @ApiModelProperty(value = "订单总金额")
  238. private Integer orderTotalAmount;
  239. }
  240. @Data
  241. @Accessors(chain = true)
  242. public static class MercOrdersDayCountDTO {
  243. @JsonFormat(pattern = "yyyy-MM-dd")
  244. @ApiModelProperty(value = "日期(yyyy-MM-dd)")
  245. private DateTime orderDate;
  246. }
  247. @Data
  248. @Accessors(chain = true)
  249. public static class CountByDay {
  250. @ApiModelProperty(value = "设备ID")
  251. private Long deviceId;
  252. @ApiModelProperty(value = "商户ID")
  253. private Long mercId;
  254. @ApiModelProperty(value = "日期")
  255. private String dateValue;
  256. }
  257. @Data
  258. @Accessors(chain = true)
  259. public static class CountByMonth {
  260. @ApiModelProperty(value = "设备ID")
  261. private Long deviceId;
  262. @ApiModelProperty(value = "商户ID")
  263. private Long mercId;
  264. @ApiModelProperty(value = "日期")
  265. private String dateValue;
  266. }
  267. @Data
  268. @Accessors(chain = true)
  269. public static class PageByMercAndDate {
  270. @ApiModelProperty(value = "分页信息", required = true)
  271. private PageBean page;
  272. @NotNull(message = "mercId不能为空")
  273. @ApiModelProperty(value = "商户ID")
  274. private Long mercId;
  275. @NotBlank(message = "type不能为空")
  276. @ApiModelProperty(value = "统计类型;year|month|day")
  277. private String type;
  278. @NotNull(message = "beginDateValue不能为空")
  279. @ApiModelProperty(value = "统计开始日期")
  280. private Integer beginDateValue;
  281. @NotNull(message = "beginDateValue不能为空")
  282. @ApiModelProperty(value = "统计结束日期")
  283. private Integer endDateValue;
  284. @ApiModelProperty(value = "设备ID")
  285. private List<Long> deviceId;
  286. }
  287. }