Преглед на файлове

Merge branch 'hcp' into test

hechunping преди 1 година
родител
ревизия
95ff2e1a5d

+ 10 - 1
device-api-service/src/main/java/com/xy/mapper/DeviceDataMapper.java

@@ -1,7 +1,11 @@
 package com.xy.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xy.dto.DeviceDataDto;
 import com.xy.entity.DeviceData;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,5 +17,10 @@ import com.xy.entity.DeviceData;
  */
 public interface DeviceDataMapper extends BaseMapper<DeviceData> {
 
- 
+
+    List<DeviceDataDto.DayChartVo> dayChart(@Param("mercId") Long mercId
+            , @Param("beginDateInt") Integer beginDateInt
+            , @Param("endDateInt") Integer endDateInt
+            , @Param("type") String type
+    );
 }

+ 33 - 0
device-api-service/src/main/java/com/xy/service/DeviceDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xy.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -27,7 +28,9 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -295,6 +298,36 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
         return R.ok(this.getMercDataOneMonth(dto.getMercId(), dto.getDateValue()));
     }
 
+    @ApiOperation("图表数据")
+    @Override
+    public R<List<DeviceDataDto.DayChartVo>> dayChart(@RequestBody @Valid DeviceDataDto.DayChartDto dto) {
+        List<DeviceDataDto.DayChartVo> dayChartVos = baseMapper.dayChart(dto.getMercId(), dto.getBeginInt(), dto.getEndDateInt(),dto.getType());
+        Map<Integer, DeviceDataDto.DayChartVo> voMap = dayChartVos.stream().collect(Collectors.toMap(DeviceDataDto.DayChartVo::getTime, i -> i));
+        List<String> dayList = DataTime.getBetweenDates(dto.getBeginDate().toString(), dto.getEndDate().toString(), true);
+        List<Integer> dayList2 = dayList.stream().map(i -> Integer.valueOf(StrUtil.replace(i, "-", ""))).collect(Collectors.toList());
+        List<DeviceDataDto.DayChartVo> list = new ArrayList<>();
+        dayList2.forEach(
+                i -> {
+                    Integer num = 0;
+                    Integer totalMoney = 0;
+                    BigDecimal totalMoneyYuan = new BigDecimal(0);
+                    DeviceDataDto.DayChartVo dayChartVo = voMap.get(i);
+                    if (Emptys.check(dayChartVo)) {
+                        num = dayChartVo.getNum();
+                        totalMoney = dayChartVo.getTotalMoney();
+                        totalMoneyYuan = dayChartVo.getTotalMoneyYuan();
+                    }
+                    list.add(new DeviceDataDto.DayChartVo()
+                            .setTime(i)
+                            .setNum(num)
+                            .setTotalMoney(totalMoney)
+                            .setTotalMoneyYuan(totalMoneyYuan)
+                    );
+                }
+        );
+        return R.ok(list);
+    }
+
     public static class SaveOrAccum {
 
         public R saveOrAccum(DeviceDataDto.SaveOrAccum saveOrAccum, DeviceDataServiceImpl deviceDataService) {

+ 12 - 0
device-api-service/src/main/resources/mapper/DeviceDataMapper.xml

@@ -0,0 +1,12 @@
+<?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.DeviceDataMapper">
+    <select id="dayChart" resultType="com.xy.dto.DeviceDataDto$DayChartVo">
+        SELECT date_value as time, sum(sales_count) num, sum(sales_money) total_money
+        FROM device_data
+        WHERE type = #{type}
+          and merc_id = #{mercId}
+          and date_value BETWEEN #{beginDateInt} and #{endDateInt}
+        GROUP BY date_value
+    </select>
+</mapper>

+ 49 - 0
device-api/src/main/java/com/xy/dto/DeviceDataDto.java

@@ -9,6 +9,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -23,6 +24,54 @@ import java.util.List;
  */
 public class DeviceDataDto {
 
+    @Data
+    @Accessors(chain = true)
+    public static class DayChartDto {
+        @ApiModelProperty(value = "商户ID")
+        private Long mercId;
+
+        @ApiModelProperty(value = "统计类型(day,month,year)",required = true)
+        @NotNull(message = "统计类型不能为空")
+        private String type;
+
+        @NotNull(message = "开始时间不能为空")
+        @ApiModelProperty(value = "开始时间",required = true)
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        private LocalDate beginDate;
+
+        @NotNull(message = "结束时间不能为空")
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @ApiModelProperty(value = "结束时间",required = true)
+        private LocalDate endDate;
+
+        public Integer getBeginInt() {
+            return Integer.valueOf(StrUtil.replace(beginDate.toString(), "-", ""));
+        }
+
+        public Integer getEndDateInt() {
+            return Integer.valueOf(StrUtil.replace(endDate.toString(), "-", ""));
+        }
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class DayChartVo {
+        @ApiModelProperty("时间")
+        private Integer time;
+
+        @ApiModelProperty("笔数")
+        private Integer num;
+
+        @ApiModelProperty("销售额(分)")
+        private Integer totalMoney;
+
+        @ApiModelProperty("销售额(元)")
+        private BigDecimal totalMoneyYuan;
+
+        public BigDecimal getTotalMoneyYuan() {
+            return BigDecimal.valueOf(totalMoney).divide(new BigDecimal(100));
+        }
+    }
     @Data
     @Accessors(chain = true)
     public static class SumCountVo {

+ 4 - 0
device-api/src/main/java/com/xy/service/DeviceDataService.java

@@ -37,4 +37,8 @@ public interface DeviceDataService {
     @PostMapping("getMercDataOneMonth")
     R<List<DeviceDataDto.Vo>> getMercDataOneMonth(@RequestBody @Validated DeviceDataDto.CountByMonth dto);
 
+
+    @PostMapping("dayChart")
+    R<List<DeviceDataDto.DayChartVo>> dayChart(@RequestBody DeviceDataDto.DayChartDto dto);
+
 }