zhaoxian преди 4 години
родител
ревизия
5f23df26f5
променени са 11 файла, в които са добавени 919 реда и са изтрити 375 реда
  1. 218 196
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/controller/EtlKuaishouReportAccountDailyController.java
  2. 79 20
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/controller/EtlKuaishouReportAccountHourlyController.java
  3. 40 36
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouReportAccountDaily.java
  4. 256 119
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouReportAccountHourly.java
  5. 7 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouReportAccountDailyMapper.java
  6. 7 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouReportAccountHourlyMapper.java
  7. 144 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/EtlKuaishouReportAccountDailyMapper.xml
  8. 77 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/EtlKuaishouReportAccountHourlyMapper.xml
  9. 7 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IEtlKuaishouReportAccountHourlyService.java
  10. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouReportAccountDailyServiceImpl.java
  11. 80 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouReportAccountHourlyServiceImpl.java

+ 218 - 196
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/controller/EtlKuaishouReportAccountDailyController.java

@@ -15,7 +15,9 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.util.oConvertUtils;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountDaily;
 import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouReportAccountDailyService;
+
 import java.util.Date;
+
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -36,209 +38,229 @@ import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
- /**
+/**
  * 盯盘日数据
+ *
  * @author jeecg-boot
- * @date   2021-03-04
  * @version V1.0
+ * @date 2021-03-04
  */
 @Slf4j
-@Api(tags="盯盘日数据")
+@Api(tags = "盯盘日数据")
 @RestController
 @RequestMapping("/etlReportAccountDaily")
 public class EtlKuaishouReportAccountDailyController {
-	@Autowired
-	private IEtlKuaishouReportAccountDailyService etlKuaishouReportAccountDailyService;
-
-	/**
-	  * 分页列表查询
-	 * @param etlKuaishouReportAccountDaily
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-分页列表查询")
-	@ApiOperation(value="盯盘日数据-分页列表查询", notes="盯盘日数据-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<EtlKuaishouReportAccountDaily>> queryPageList(EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily,
-									  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-									  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-									  HttpServletRequest req) {
-		Result<IPage<EtlKuaishouReportAccountDaily>> result = new Result<>();
-		QueryWrapper<EtlKuaishouReportAccountDaily> queryWrapper = QueryGenerator.initQueryWrapper(etlKuaishouReportAccountDaily, req.getParameterMap());
-		Page<EtlKuaishouReportAccountDaily> page = new Page<EtlKuaishouReportAccountDaily>(pageNo, pageSize);
-		IPage<EtlKuaishouReportAccountDaily> pageList = etlKuaishouReportAccountDailyService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-
-	/**
-	  *   添加
-	 * @param etlKuaishouReportAccountDaily
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-添加")
-	@ApiOperation(value="盯盘日数据-添加", notes="盯盘日数据-添加")
-	@PostMapping(value = "/add")
-	public Result<EtlKuaishouReportAccountDaily> add(@RequestBody EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily) {
-		Result<EtlKuaishouReportAccountDaily> result = new Result<>();
-		try {
-			etlKuaishouReportAccountDailyService.save(etlKuaishouReportAccountDaily);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-
-	/**
-	  *  编辑
-	 * @param etlKuaishouReportAccountDaily
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-编辑")
-	@ApiOperation(value="盯盘日数据-编辑", notes="盯盘日数据-编辑")
-	@PutMapping(value = "/edit")
-	public Result<EtlKuaishouReportAccountDaily> edit(@RequestBody EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily) {
-		Result<EtlKuaishouReportAccountDaily> result = new Result<EtlKuaishouReportAccountDaily>();
-		EtlKuaishouReportAccountDaily etlKuaishouReportAccountDailyEntity = etlKuaishouReportAccountDailyService.getById(etlKuaishouReportAccountDaily.getId());
-		if(etlKuaishouReportAccountDailyEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = etlKuaishouReportAccountDailyService.updateById(etlKuaishouReportAccountDaily);
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-通过id删除")
-	@ApiOperation(value="盯盘日数据-通过id删除", notes="盯盘日数据-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			etlKuaishouReportAccountDailyService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-批量删除")
-	@ApiOperation(value="盯盘日数据-批量删除", notes="盯盘日数据-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<EtlKuaishouReportAccountDaily> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<EtlKuaishouReportAccountDaily> result = new Result<>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.etlKuaishouReportAccountDailyService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "盯盘日数据-通过id查询")
-	@ApiOperation(value="盯盘日数据-通过id查询", notes="盯盘日数据-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<EtlKuaishouReportAccountDaily> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<EtlKuaishouReportAccountDaily> result = new Result<>();
-		EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily = etlKuaishouReportAccountDailyService.getById(id);
-		if(etlKuaishouReportAccountDaily==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(etlKuaishouReportAccountDaily);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-
-  /**
-      * 导出excel
-   *
-   * @param request
-   * @param response
-   */
-  @RequestMapping(value = "/exportXls")
-  public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
-      // Step.1 组装查询条件
-      QueryWrapper<EtlKuaishouReportAccountDaily> queryWrapper = null;
-      try {
-          String paramsStr = request.getParameter("paramsStr");
-          if (oConvertUtils.isNotEmpty(paramsStr)) {
-              String deString = URLDecoder.decode(paramsStr, "UTF-8");
-              EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily = JSON.parseObject(deString, EtlKuaishouReportAccountDaily.class);
-              queryWrapper = QueryGenerator.initQueryWrapper(etlKuaishouReportAccountDaily, request.getParameterMap());
-          }
-      } catch (UnsupportedEncodingException e) {
-          e.printStackTrace();
-      }
-
-      //Step.2 AutoPoi 导出Excel
-      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-      List<EtlKuaishouReportAccountDaily> pageList = etlKuaishouReportAccountDailyService.list(queryWrapper);
-      //导出文件名称
-      mv.addObject(NormalExcelConstants.FILE_NAME, "盯盘日数据列表");
-      mv.addObject(NormalExcelConstants.CLASS, EtlKuaishouReportAccountDaily.class);
-      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("盯盘日数据列表数据", "导出人:Jeecg", "导出信息"));
-      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
-      return mv;
-  }
-
-  /**
-      * 通过excel导入数据
-   *
-   * @param request
-   * @param response
-   * @return
-   */
-  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
-      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
-      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
-          MultipartFile file = entity.getValue();
-          ImportParams params = new ImportParams();
-          params.setTitleRows(2);
-          params.setHeadRows(1);
-          params.setNeedSave(true);
-          try {
-              List<EtlKuaishouReportAccountDaily> listEtlKuaishouReportAccountDailys = ExcelImportUtil.importExcel(file.getInputStream(), EtlKuaishouReportAccountDaily.class, params);
-              etlKuaishouReportAccountDailyService.saveBatch(listEtlKuaishouReportAccountDailys);
-              return Result.ok("文件导入成功!数据行数:" + listEtlKuaishouReportAccountDailys.size());
-          } catch (Exception e) {
-              log.error(e.getMessage(),e);
-              return Result.error("文件导入失败:"+e.getMessage());
-          } finally {
-              try {
-                  file.getInputStream().close();
-              } catch (IOException e) {
-                  e.printStackTrace();
-              }
-          }
-      }
-      return Result.ok("文件导入失败!");
-  }
+    @Autowired
+    private IEtlKuaishouReportAccountDailyService etlKuaishouReportAccountDailyService;
+
+    /**
+     * 分页列表查询
+     *
+     * @param etlKuaishouReportAccountDaily
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-分页列表查询")
+    @ApiOperation(value = "盯盘日数据-分页列表查询", notes = "盯盘日数据-分页列表查询")
+    @GetMapping(value = "/list")
+    public Result<IPage<EtlKuaishouReportAccountDaily>> queryPageList(EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily,
+                                                                      @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                                      @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                                      HttpServletRequest req) {
+        Result<IPage<EtlKuaishouReportAccountDaily>> result = new Result<>();
+        QueryWrapper<EtlKuaishouReportAccountDaily> queryWrapper = QueryGenerator.initQueryWrapper(etlKuaishouReportAccountDaily, req.getParameterMap());
+        Page<EtlKuaishouReportAccountDaily> page = new Page<EtlKuaishouReportAccountDaily>(pageNo, pageSize);
+        IPage<EtlKuaishouReportAccountDaily> pageList = etlKuaishouReportAccountDailyService.page(page, queryWrapper);
+        result.setSuccess(true);
+        result.setResult(pageList);
+        return result;
+    }
+
+
+    @GetMapping(value = "/createDate")
+    public Result<Object> createDate() {
+        try {
+            etlKuaishouReportAccountDailyService.queryEveryDayDataForAccount();
+            return Result.ok("success");
+        } catch (Exception e) {
+            log.error("error:", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("error");
+    }
+
+    /**
+     * 添加
+     *
+     * @param etlKuaishouReportAccountDaily
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-添加")
+    @ApiOperation(value = "盯盘日数据-添加", notes = "盯盘日数据-添加")
+    @PostMapping(value = "/add")
+    public Result<EtlKuaishouReportAccountDaily> add(@RequestBody EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily) {
+        Result<EtlKuaishouReportAccountDaily> result = new Result<>();
+        try {
+            etlKuaishouReportAccountDailyService.save(etlKuaishouReportAccountDaily);
+            result.success("添加成功!");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+            result.error500("操作失败");
+        }
+        return result;
+    }
+
+    /**
+     * 编辑
+     *
+     * @param etlKuaishouReportAccountDaily
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-编辑")
+    @ApiOperation(value = "盯盘日数据-编辑", notes = "盯盘日数据-编辑")
+    @PutMapping(value = "/edit")
+    public Result<EtlKuaishouReportAccountDaily> edit(@RequestBody EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily) {
+        Result<EtlKuaishouReportAccountDaily> result = new Result<EtlKuaishouReportAccountDaily>();
+        EtlKuaishouReportAccountDaily etlKuaishouReportAccountDailyEntity = etlKuaishouReportAccountDailyService.getById(etlKuaishouReportAccountDaily.getId());
+        if (etlKuaishouReportAccountDailyEntity == null) {
+            result.error500("未找到对应实体");
+        } else {
+            boolean ok = etlKuaishouReportAccountDailyService.updateById(etlKuaishouReportAccountDaily);
+            if (ok) {
+                result.success("修改成功!");
+            }
+        }
+
+        return result;
+    }
+
+    /**
+     * 通过id删除
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-通过id删除")
+    @ApiOperation(value = "盯盘日数据-通过id删除", notes = "盯盘日数据-通过id删除")
+    @DeleteMapping(value = "/delete")
+    public Result<?> delete(@RequestParam(name = "id", required = true) String id) {
+        try {
+            etlKuaishouReportAccountDailyService.removeById(id);
+        } catch (Exception e) {
+            log.error("删除失败", e.getMessage());
+            return Result.error("删除失败!");
+        }
+        return Result.ok("删除成功!");
+    }
+
+    /**
+     * 批量删除
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-批量删除")
+    @ApiOperation(value = "盯盘日数据-批量删除", notes = "盯盘日数据-批量删除")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<EtlKuaishouReportAccountDaily> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        Result<EtlKuaishouReportAccountDaily> result = new Result<>();
+        if (ids == null || "".equals(ids.trim())) {
+            result.error500("参数不识别!");
+        } else {
+            this.etlKuaishouReportAccountDailyService.removeByIds(Arrays.asList(ids.split(",")));
+            result.success("删除成功!");
+        }
+        return result;
+    }
+
+    /**
+     * 通过id查询
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "盯盘日数据-通过id查询")
+    @ApiOperation(value = "盯盘日数据-通过id查询", notes = "盯盘日数据-通过id查询")
+    @GetMapping(value = "/queryById")
+    public Result<EtlKuaishouReportAccountDaily> queryById(@RequestParam(name = "id", required = true) String id) {
+        Result<EtlKuaishouReportAccountDaily> result = new Result<>();
+        EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily = etlKuaishouReportAccountDailyService.getById(id);
+        if (etlKuaishouReportAccountDaily == null) {
+            result.error500("未找到对应实体");
+        } else {
+            result.setResult(etlKuaishouReportAccountDaily);
+            result.setSuccess(true);
+        }
+        return result;
+    }
+
+    /**
+     * 导出excel
+     *
+     * @param request
+     * @param response
+     */
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
+        // Step.1 组装查询条件
+        QueryWrapper<EtlKuaishouReportAccountDaily> queryWrapper = null;
+        try {
+            String paramsStr = request.getParameter("paramsStr");
+            if (oConvertUtils.isNotEmpty(paramsStr)) {
+                String deString = URLDecoder.decode(paramsStr, "UTF-8");
+                EtlKuaishouReportAccountDaily etlKuaishouReportAccountDaily = JSON.parseObject(deString, EtlKuaishouReportAccountDaily.class);
+                queryWrapper = QueryGenerator.initQueryWrapper(etlKuaishouReportAccountDaily, request.getParameterMap());
+            }
+        } catch (UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
+
+        //Step.2 AutoPoi 导出Excel
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        List<EtlKuaishouReportAccountDaily> pageList = etlKuaishouReportAccountDailyService.list(queryWrapper);
+        //导出文件名称
+        mv.addObject(NormalExcelConstants.FILE_NAME, "盯盘日数据列表");
+        mv.addObject(NormalExcelConstants.CLASS, EtlKuaishouReportAccountDaily.class);
+        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("盯盘日数据列表数据", "导出人:Jeecg", "导出信息"));
+        mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+        return mv;
+    }
+
+    /**
+     * 通过excel导入数据
+     *
+     * @param request
+     * @param response
+     * @return
+     */
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+            MultipartFile file = entity.getValue();
+            ImportParams params = new ImportParams();
+            params.setTitleRows(2);
+            params.setHeadRows(1);
+            params.setNeedSave(true);
+            try {
+                List<EtlKuaishouReportAccountDaily> listEtlKuaishouReportAccountDailys = ExcelImportUtil.importExcel(file.getInputStream(), EtlKuaishouReportAccountDaily.class, params);
+                etlKuaishouReportAccountDailyService.saveBatch(listEtlKuaishouReportAccountDailys);
+                return Result.ok("文件导入成功!数据行数:" + listEtlKuaishouReportAccountDailys.size());
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+                return Result.error("文件导入失败:" + e.getMessage());
+            } finally {
+                try {
+                    file.getInputStream().close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return Result.ok("文件导入失败!");
+    }
 
 }

+ 79 - 20
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/controller/EtlKuaishouReportAccountHourlyController.java

@@ -1,42 +1,46 @@
 package cn.com.ctop.kuaishou.modules.report.controller;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.utils.QueryGenerator;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly;
 import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouReportAccountHourlyService;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.util.oConvertUtils;
-
-import java.util.Date;
-
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 账户维度-每小时盯盘数据
@@ -78,6 +82,61 @@ public class EtlKuaishouReportAccountHourlyController {
         return result;
     }
 
+    @GetMapping(value = "/createDate")
+    public Result<Object> createDate() {
+        try {
+            etlKuaishouReportAccountHourlyService.queryEveryhourlyDataForAccount();
+            return Result.ok("success");
+        } catch (Exception e) {
+            log.error("error:", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("error");
+    }
+
+
+    /**
+     * 获取时间趋势汇总投放数据
+     *
+     * @param
+     * @return
+     * @throws
+     * @author ZHAOXA
+     */
+    @AutoLog(value = "获取时间趋势汇总投放数据")
+    @ApiOperation(value = "获取时间趋势汇总投放数据", notes = "获取时间趋势汇总投放数据")
+    @PostMapping(value = "/getAggregateByHour")
+    public Result<Object> getAggregateByHour(@RequestBody JSONObject request) {
+        try {
+            return etlKuaishouReportAccountHourlyService.getAggregateByHour(request);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
+    /**
+     * 获取时间趋势数据集
+     *
+     * @param
+     * @return
+     * @throws
+     * @author ZHAOXA
+     */
+    @AutoLog(value = "获取时间趋势数据集")
+    @ApiOperation(value = "获取时间趋势数据集", notes = "获取时间趋势数据集")
+    @PostMapping(value = "/getEtlReportList")
+    public Result<Object> getEtlReportList(@RequestBody JSONObject request) {
+        try {
+            return etlKuaishouReportAccountHourlyService.getEtlReportList(request);
+        } catch (Exception e) {
+            log.error("查询异常,", e.getMessage());
+            e.printStackTrace();
+        }
+        return Result.error("查询失败");
+    }
+
     /**
      * 添加
      *

+ 40 - 36
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouReportAccountDaily.java

@@ -1,9 +1,10 @@
 package cn.com.ctop.kuaishou.modules.report.entity;
+
 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 com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -12,6 +13,9 @@ import lombok.experimental.Accessors;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * 账户维度-每日盯盘数据
  *
@@ -31,199 +35,199 @@ public class EtlKuaishouReportAccountDaily {
      */
     @TableId(type = IdType.INPUT)
     @ApiModelProperty(value = "id")
-    private java.lang.Long id;
+    private Long id;
     /**
      * 日期
      */
     @Excel(name = "日期", width = 15)
     @ApiModelProperty(value = "日期")
-    private java.lang.String statDate;
+    private String statDate;
     /**
      * 账户ID
      */
     @Excel(name = "账户ID", width = 15)
     @ApiModelProperty(value = "账户ID")
-    private java.lang.Long accountId;
+    private Long accountId;
     /**
      * 花费(元)
      */
     @Excel(name = "花费(元)", width = 15)
     @ApiModelProperty(value = "花费(元)")
-    private java.math.BigDecimal charge;
+    private BigDecimal charge;
     /**
      * 封面曝光数
      */
     @Excel(name = "封面曝光数", width = 15)
     @ApiModelProperty(value = "封面曝光数")
-    private java.lang.Long photoShow;
+    private Long photoShow;
     /**
      * 封面点击数
      */
     @Excel(name = "封面点击数", width = 15)
     @ApiModelProperty(value = "封面点击数")
-    private java.lang.Long photoClick;
+    private Long photoClick;
     /**
      * 素材曝光数
      */
     @Excel(name = "素材曝光数", width = 15)
     @ApiModelProperty(value = "素材曝光数")
-    private java.lang.Long aclick;
+    private Long aclick;
     /**
      * 行为数
      */
     @Excel(name = "行为数", width = 15)
     @ApiModelProperty(value = "行为数")
-    private java.lang.Long bclick;
+    private Long bclick;
     /**
      * 分享数
      */
     @Excel(name = "分享数", width = 15)
     @ApiModelProperty(value = "分享数")
-    private java.lang.Long photoShare;
+    private Long photoShare;
     /**
      * 评论数
      */
     @Excel(name = "评论数", width = 15)
     @ApiModelProperty(value = "评论数")
-    private java.lang.Long photoComment;
+    private Long photoComment;
     /**
      * 点赞数
      */
     @Excel(name = "点赞数", width = 15)
     @ApiModelProperty(value = "点赞数")
-    private java.lang.Long photoLike;
+    private Long photoLike;
     /**
      * 新增关注数
      */
     @Excel(name = "新增关注数", width = 15)
     @ApiModelProperty(value = "新增关注数")
-    private java.lang.Long follow;
+    private Long follow;
     /**
      * 取消关注数
      */
     @Excel(name = "取消关注数", width = 15)
     @ApiModelProperty(value = "取消关注数")
-    private java.lang.Long cancelFollow;
+    private Long cancelFollow;
     /**
      * 举报数
      */
     @Excel(name = "举报数", width = 15)
     @ApiModelProperty(value = "举报数")
-    private java.lang.Long report;
+    private Long report;
     /**
      * 拉黑数
      */
     @Excel(name = "拉黑数", width = 15)
     @ApiModelProperty(value = "拉黑数")
-    private java.lang.Long block;
+    private Long block;
     /**
      * 减少此类作品数
      */
     @Excel(name = "减少此类作品数", width = 15)
     @ApiModelProperty(value = "减少此类作品数")
-    private java.lang.Long negative;
+    private Long negative;
     /**
      * 应用下载数据-安卓下载开始数
      */
     @Excel(name = "应用下载数据-安卓下载开始数", width = 15)
     @ApiModelProperty(value = "应用下载数据-安卓下载开始数")
-    private java.lang.Long downloadStarted;
+    private Long downloadStarted;
     /**
      * 应用下载数据-安卓下载完成数
      */
     @Excel(name = "应用下载数据-安卓下载完成数", width = 15)
     @ApiModelProperty(value = "应用下载数据-安卓下载完成数")
-    private java.lang.Long downloadCompleted;
+    private Long downloadCompleted;
     /**
      * 应用下载数据-激活数
      */
     @Excel(name = "应用下载数据-激活数", width = 15)
     @ApiModelProperty(value = "应用下载数据-激活数")
-    private java.lang.Long activation;
+    private Long activation;
     /**
      * 提交按钮点击数
      */
     @Excel(name = "提交按钮点击数", width = 15)
     @ApiModelProperty(value = "提交按钮点击数")
-    private java.lang.Long submit;
+    private Long submit;
     /**
      * 应用下载数据-首日付费次数
      */
     @Excel(name = "应用下载数据-首日付费次数", width = 15)
     @ApiModelProperty(value = "应用下载数据-首日付费次数")
-    private java.lang.Long eventPayFirstDay;
+    private Long eventPayFirstDay;
     /**
      * 应用下载数据-首日付费金额
      */
     @Excel(name = "应用下载数据-首日付费金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-首日付费金额")
-    private java.math.BigDecimal eventPayPurchaseAmountFirstDay;
+    private BigDecimal eventPayPurchaseAmountFirstDay;
     /**
      * 应用下载数据-付费次数
      */
     @Excel(name = "应用下载数据-付费次数", width = 15)
     @ApiModelProperty(value = "应用下载数据-付费次数")
-    private java.lang.Long eventPay;
+    private Long eventPay;
     /**
      * 应用下载数据-付费金额
      */
     @Excel(name = "应用下载数据-付费金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-付费金额")
-    private java.math.BigDecimal eventPayPurchaseAmount;
+    private BigDecimal eventPayPurchaseAmount;
     /**
      * 应用下载数据-注册数
      */
     @Excel(name = "应用下载数据-注册数", width = 15)
     @ApiModelProperty(value = "应用下载数据-注册数")
-    private java.lang.Long eventRegister;
+    private Long eventRegister;
     /**
      * 应用下载数据-完件数
      */
     @Excel(name = "应用下载数据-完件数", width = 15)
     @ApiModelProperty(value = "应用下载数据-完件数")
-    private java.lang.Long eventJinJianApp;
+    private Long eventJinJianApp;
     /**
      * 应用下载数据-授信数
      */
     @Excel(name = "应用下载数据-授信数", width = 15)
     @ApiModelProperty(value = "应用下载数据-授信数")
-    private java.lang.Long eventCreditGrantApp;
+    private Long eventCreditGrantApp;
     /**
      * 应用下载数据-付款成功数
      */
     @Excel(name = "应用下载数据-付款成功数", width = 15)
     @ApiModelProperty(value = "应用下载数据-付款成功数")
-    private java.lang.Long eventOrderPaid;
+    private Long eventOrderPaid;
     /**
      * 应用下载数据-付款成功金额
      */
     @Excel(name = "应用下载数据-付款成功金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-付款成功金额")
-    private java.math.BigDecimal eventOrderPaidPurchaseAmount;
+    private BigDecimal eventOrderPaidPurchaseAmount;
     /**
      * 落地页数据-落地页完件数
      */
     @Excel(name = "落地页数据-落地页完件数", width = 15)
     @ApiModelProperty(value = "落地页数据-落地页完件数")
-    private java.lang.Long eventJinJianLandingPage;
+    private Long eventJinJianLandingPage;
     /**
      * 落地页数据-落地页授信数
      */
     @Excel(name = "落地页数据-落地页授信数", width = 15)
     @ApiModelProperty(value = "落地页数据-落地页授信数")
-    private java.lang.Long eventCreditGrantLandingPage;
+    private Long eventCreditGrantLandingPage;
     /**
      * 应用下载数据-次留数(仅支持分日查询)
      */
     @Excel(name = "应用下载数据-次留数(仅支持分日查询)", width = 15)
     @ApiModelProperty(value = "应用下载数据-次留数(仅支持分日查询)")
-    private java.lang.Long eventNextDayStay;
+    private Long eventNextDayStay;
     /**
      * 落地页数据-表单提交数
      */
     @Excel(name = "落地页数据-表单提交数", width = 15)
     @ApiModelProperty(value = "落地页数据-表单提交数")
-    private java.lang.Long formCount;
+    private Long formCount;
     /**
      * 3s播放数
      */
@@ -237,7 +241,7 @@ public class EtlKuaishouReportAccountDaily {
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
-    private java.util.Date createTime;
+    private Date createTime;
     /**
      * 修改时间
      */
@@ -245,5 +249,5 @@ public class EtlKuaishouReportAccountDaily {
     @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "修改时间")
-    private java.util.Date updateTime;
+    private Date updateTime;
 }

+ 256 - 119
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/EtlKuaishouReportAccountHourly.java

@@ -1,7 +1,9 @@
 package cn.com.ctop.kuaishou.modules.report.entity;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
+
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -17,167 +19,302 @@ import org.jeecgframework.poi.excel.annotation.Excel;
 
 /**
  * 账户维度-每小时盯盘数据
+ *
  * @author jeecg-boot
- * @date   2021-03-04
  * @version V1.0
+ * @date 2021-03-04
  */
 @Data
 @TableName("ctop_etl_kuaishou_report_account_hourly")
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
-@ApiModel(value="ctop_etl_kuaishou_report_account_hourly对象", description="账户维度-每小时盯盘数据")
+@ApiModel(value = "ctop_etl_kuaishou_report_account_hourly对象", description = "账户维度-每小时盯盘数据")
 public class EtlKuaishouReportAccountHourly {
-    
-	/**id*/
-	@TableId(type = IdType.INPUT)
-	@ApiModelProperty(value = "id")
-	private Long id;
-	/**日期*/
-	@Excel(name = "日期", width = 15)
+
+    /**
+     * id
+     */
+    @TableId(type = IdType.INPUT)
+    @ApiModelProperty(value = "id")
+    private Long id;
+    /**
+     * 日期
+     */
+    @Excel(name = "日期", width = 15)
     @ApiModelProperty(value = "日期")
-	private String statDate;
-	/**时间*/
-	@Excel(name = "时间", width = 15)
+    private String statDate;
+    /**
+     * 时间
+     */
+    @Excel(name = "时间", width = 15)
     @ApiModelProperty(value = "时间")
-	private Long statHour;
-	/**账户ID*/
-	@Excel(name = "账户ID", width = 15)
+    private Long statHour;
+    /**
+     * 账户ID
+     */
+    @Excel(name = "账户ID", width = 15)
     @ApiModelProperty(value = "账户ID")
-	private Long accountId;
-	/**花费(元)*/
-	@Excel(name = "花费(元)", width = 15)
+    private Long accountId;
+    /**
+     * 花费(元)
+     */
+    @Excel(name = "花费(元)", width = 15)
     @ApiModelProperty(value = "花费(元)")
-	private java.math.BigDecimal charge;
-	/**封面曝光数*/
-	@Excel(name = "封面曝光数", width = 15)
+    private BigDecimal charge;
+    /**
+     * 封面曝光数
+     */
+    @Excel(name = "封面曝光数", width = 15)
     @ApiModelProperty(value = "封面曝光数")
-	private Long photoShow;
-	/**封面点击数*/
-	@Excel(name = "封面点击数", width = 15)
+    private Long photoShow;
+    /**
+     * 封面点击数
+     */
+    @Excel(name = "封面点击数", width = 15)
     @ApiModelProperty(value = "封面点击数")
-	private Long photoClick;
-	/**素材曝光数*/
-	@Excel(name = "素材曝光数", width = 15)
+    private Long photoClick;
+    /**
+     * 素材曝光数
+     */
+    @Excel(name = "素材曝光数", width = 15)
     @ApiModelProperty(value = "素材曝光数")
-	private Long aclick;
-	/**行为数*/
-	@Excel(name = "行为数", width = 15)
+    private Long aclick;
+    /**
+     * 行为数
+     */
+    @Excel(name = "行为数", width = 15)
     @ApiModelProperty(value = "行为数")
-	private Long bclick;
-	/**分享数*/
-	@Excel(name = "分享数", width = 15)
+    private Long bclick;
+    /**
+     * 分享数
+     */
+    @Excel(name = "分享数", width = 15)
     @ApiModelProperty(value = "分享数")
-	private Long photoShare;
-	/**评论数*/
-	@Excel(name = "评论数", width = 15)
+    private Long photoShare;
+    /**
+     * 评论数
+     */
+    @Excel(name = "评论数", width = 15)
     @ApiModelProperty(value = "评论数")
-	private Long photoComment;
-	/**点赞数*/
-	@Excel(name = "点赞数", width = 15)
+    private Long photoComment;
+    /**
+     * 点赞数
+     */
+    @Excel(name = "点赞数", width = 15)
     @ApiModelProperty(value = "点赞数")
-	private Long photoLike;
-	/**新增关注数*/
-	@Excel(name = "新增关注数", width = 15)
+    private Long photoLike;
+    /**
+     * 新增关注数
+     */
+    @Excel(name = "新增关注数", width = 15)
     @ApiModelProperty(value = "新增关注数")
-	private Long follow;
-	/**取消关注数*/
-	@Excel(name = "取消关注数", width = 15)
+    private Long follow;
+    /**
+     * 取消关注数
+     */
+    @Excel(name = "取消关注数", width = 15)
     @ApiModelProperty(value = "取消关注数")
-	private Long cancelFollow;
-	/**举报数*/
-	@Excel(name = "举报数", width = 15)
+    private Long cancelFollow;
+    /**
+     * 举报数
+     */
+    @Excel(name = "举报数", width = 15)
     @ApiModelProperty(value = "举报数")
-	private Long report;
-	/**拉黑数*/
-	@Excel(name = "拉黑数", width = 15)
+    private Long report;
+    /**
+     * 拉黑数
+     */
+    @Excel(name = "拉黑数", width = 15)
     @ApiModelProperty(value = "拉黑数")
-	private Long block;
-	/**减少此类作品数*/
-	@Excel(name = "减少此类作品数", width = 15)
+    private Long block;
+    /**
+     * 减少此类作品数
+     */
+    @Excel(name = "减少此类作品数", width = 15)
     @ApiModelProperty(value = "减少此类作品数")
-	private Long negative;
-	/**应用下载数据-安卓下载开始数*/
-	@Excel(name = "应用下载数据-安卓下载开始数", width = 15)
+    private Long negative;
+    /**
+     * 应用下载数据-安卓下载开始数
+     */
+    @Excel(name = "应用下载数据-安卓下载开始数", width = 15)
     @ApiModelProperty(value = "应用下载数据-安卓下载开始数")
-	private Long downloadStarted;
-	/**应用下载数据-安卓下载完成数*/
-	@Excel(name = "应用下载数据-安卓下载完成数", width = 15)
+    private Long downloadStarted;
+    /**
+     * 应用下载数据-安卓下载完成数
+     */
+    @Excel(name = "应用下载数据-安卓下载完成数", width = 15)
     @ApiModelProperty(value = "应用下载数据-安卓下载完成数")
-	private Long downloadCompleted;
-	/**应用下载数据-激活数*/
-	@Excel(name = "应用下载数据-激活数", width = 15)
+    private Long downloadCompleted;
+    /**
+     * 应用下载数据-激活数
+     */
+    @Excel(name = "应用下载数据-激活数", width = 15)
     @ApiModelProperty(value = "应用下载数据-激活数")
-	private Long activation;
-	/**提交按钮点击数*/
-	@Excel(name = "提交按钮点击数", width = 15)
+    private Long activation;
+    /**
+     * 提交按钮点击数
+     */
+    @Excel(name = "提交按钮点击数", width = 15)
     @ApiModelProperty(value = "提交按钮点击数")
-	private Long submit;
-	/**应用下载数据-首日付费次数*/
-	@Excel(name = "应用下载数据-首日付费次数", width = 15)
+    private Long submit;
+    /**
+     * 应用下载数据-首日付费次数
+     */
+    @Excel(name = "应用下载数据-首日付费次数", width = 15)
     @ApiModelProperty(value = "应用下载数据-首日付费次数")
-	private Long eventPayFirstDay;
-	/**应用下载数据-首日付费金额*/
-	@Excel(name = "应用下载数据-首日付费金额", width = 15)
+    private Long eventPayFirstDay;
+    /**
+     * 应用下载数据-首日付费金额
+     */
+    @Excel(name = "应用下载数据-首日付费金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-首日付费金额")
-	private java.math.BigDecimal eventPayPurchaseAmountFirstDay;
-	/**应用下载数据-付费次数*/
-	@Excel(name = "应用下载数据-付费次数", width = 15)
+    private BigDecimal eventPayPurchaseAmountFirstDay;
+    /**
+     * 应用下载数据-付费次数
+     */
+    @Excel(name = "应用下载数据-付费次数", width = 15)
     @ApiModelProperty(value = "应用下载数据-付费次数")
-	private Long eventPay;
-	/**应用下载数据-付费金额*/
-	@Excel(name = "应用下载数据-付费金额", width = 15)
+    private Long eventPay;
+    /**
+     * 应用下载数据-付费金额
+     */
+    @Excel(name = "应用下载数据-付费金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-付费金额")
-	private java.math.BigDecimal eventPayPurchaseAmount;
-	/**应用下载数据-注册数*/
-	@Excel(name = "应用下载数据-注册数", width = 15)
+    private BigDecimal eventPayPurchaseAmount;
+    /**
+     * 应用下载数据-注册数
+     */
+    @Excel(name = "应用下载数据-注册数", width = 15)
     @ApiModelProperty(value = "应用下载数据-注册数")
-	private Long eventRegister;
-	/**应用下载数据-完件数*/
-	@Excel(name = "应用下载数据-完件数", width = 15)
+    private Long eventRegister;
+    /**
+     * 应用下载数据-完件数
+     */
+    @Excel(name = "应用下载数据-完件数", width = 15)
     @ApiModelProperty(value = "应用下载数据-完件数")
-	private Long eventJinJianApp;
-	/**应用下载数据-授信数*/
-	@Excel(name = "应用下载数据-授信数", width = 15)
+    private Long eventJinJianApp;
+    /**
+     * 应用下载数据-授信数
+     */
+    @Excel(name = "应用下载数据-授信数", width = 15)
     @ApiModelProperty(value = "应用下载数据-授信数")
-	private Long eventCreditGrantApp;
-	/**应用下载数据-付款成功数*/
-	@Excel(name = "应用下载数据-付款成功数", width = 15)
+    private Long eventCreditGrantApp;
+    /**
+     * 应用下载数据-付款成功数
+     */
+    @Excel(name = "应用下载数据-付款成功数", width = 15)
     @ApiModelProperty(value = "应用下载数据-付款成功数")
-	private Long eventOrderPaid;
-	/**应用下载数据-付款成功金额*/
-	@Excel(name = "应用下载数据-付款成功金额", width = 15)
+    private Long eventOrderPaid;
+    /**
+     * 应用下载数据-付款成功金额
+     */
+    @Excel(name = "应用下载数据-付款成功金额", width = 15)
     @ApiModelProperty(value = "应用下载数据-付款成功金额")
-	private java.math.BigDecimal eventOrderPaidPurchaseAmount;
-	/**落地页数据-落地页完件数*/
-	@Excel(name = "落地页数据-落地页完件数", width = 15)
+    private BigDecimal eventOrderPaidPurchaseAmount;
+    /**
+     * 落地页数据-落地页完件数
+     */
+    @Excel(name = "落地页数据-落地页完件数", width = 15)
     @ApiModelProperty(value = "落地页数据-落地页完件数")
-	private Long eventJinJianLandingPage;
-	/**落地页数据-落地页授信数*/
-	@Excel(name = "落地页数据-落地页授信数", width = 15)
+    private Long eventJinJianLandingPage;
+    /**
+     * 落地页数据-落地页授信数
+     */
+    @Excel(name = "落地页数据-落地页授信数", width = 15)
     @ApiModelProperty(value = "落地页数据-落地页授信数")
-	private Long eventCreditGrantLandingPage;
-	/**应用下载数据-次留数(仅支持分日查询)*/
-	@Excel(name = "应用下载数据-次留数(仅支持分日查询)", width = 15)
+    private Long eventCreditGrantLandingPage;
+    /**
+     * 应用下载数据-次留数(仅支持分日查询)
+     */
+    @Excel(name = "应用下载数据-次留数(仅支持分日查询)", width = 15)
     @ApiModelProperty(value = "应用下载数据-次留数(仅支持分日查询)")
-	private Long eventNextDayStay;
-	/**落地页数据-表单提交数*/
-	@Excel(name = "落地页数据-表单提交数", width = 15)
+    private Long eventNextDayStay;
+    /**
+     * 落地页数据-表单提交数
+     */
+    @Excel(name = "落地页数据-表单提交数", width = 15)
     @ApiModelProperty(value = "落地页数据-表单提交数")
-	private Long formCount;
-	/**3s播放数*/
-	@Excel(name = "3s播放数", width = 15)
+    private Long formCount;
+    /**
+     * 3s播放数
+     */
+    @Excel(name = "3s播放数", width = 15)
     @ApiModelProperty(value = "3s播放数")
-	private long play3sCount;
-	/**创建时间*/
-	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private long play3sCount;
+    /**
+     * 创建时间
+     */
+    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
-	private Date createTime;
-	/**修改时间*/
-	@Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
-	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
-    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @Excel(name = "修改时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "修改时间")
-	private Date updateTime;
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private BigDecimal activationCost;//激活单价
+    @TableField(exist = false)
+    private BigDecimal impression1kCost;//平均千次素材曝光花费 = 花费/素材曝光数*1000
+    @TableField(exist = false)
+    private BigDecimal photoClickCost;//平均封面点击单价 = 花费/封面点击数
+    @TableField(exist = false)
+    private BigDecimal actionCost;//平均行为单价 = 总花费/行为数
+    @TableField(exist = false)
+    private BigDecimal play3sRatio;//3S播放率 = 广告视频播放3s数量/封面曝光数
+    @TableField(exist = false)
+    private BigDecimal downloadStartedCost;//安卓下载开始单价(元) =花费/安卓下载开始数
+    @TableField(exist = false)
+    private BigDecimal downloadCompletedCost;//安卓下载完成单价(元) =花费/安卓下载完成数
+    @TableField(exist = false)
+    private BigDecimal formCost;//表单提交单价 =当日消耗/当日回传表单数
+    @TableField(exist = false)
+    private BigDecimal eventPayFirstDayCost;//首日付费次数成本 =消耗/首日付费次数
+    @TableField(exist = false)
+    private BigDecimal eventPayCost;//付费次数成本 =消耗/付费次数
+    @TableField(exist = false)
+    private BigDecimal eventRegisterCost;//注册成本 =当日消耗/当日回传注册数
+    @TableField(exist = false)
+    private BigDecimal eventNextDayStayCost;//次日留存成本 =消耗/次日留存PV
+    @TableField(exist = false)
+    private BigDecimal eventJinJianAppCost;//完件成本 =消耗/完件数
+    @TableField(exist = false)
+    private BigDecimal eventCreditGrantAppCost;//授信成本 =消耗/授信数
+    @TableField(exist = false)
+    private BigDecimal eventJinJianLandingPageCost;//落地页完件成本 =当日消耗/当日回传完件数
+    @TableField(exist = false)
+    private BigDecimal eventCreditGrantLandingPageCost;//落地页授信成本 =当日消耗/当日回传授信数
+    @TableField(exist = false)
+    private BigDecimal submitCost;//按钮点击成本 =当日消耗 / 当日按钮点击数
+    @TableField(exist = false)
+    private BigDecimal eventPayFirstDayRoi;//首日ROI =首日付费金额/当日消耗
+    @TableField(exist = false)
+    private BigDecimal eventPayRoi;//ROI =付费金额/当日消耗
+    @TableField(exist = false)
+    private BigDecimal actionRatio;//行为率 =行为数占素材曝光数百分比
+    @TableField(exist = false)
+    private BigDecimal photoClickRatio;//封面点击率 =封面点击数占封面曝光数百分比
+    @TableField(exist = false)
+    private BigDecimal downloadStartedRatio;//安卓下载开始率 =安卓下载开始数/行为数
+    @TableField(exist = false)
+    private BigDecimal downloadCompletedRatio;//安卓下载完成率 =安卓下载完成数/安卓下载开始数
+    @TableField(exist = false)
+    private BigDecimal activationRatio;//下载完成激活率 =激活数/安卓下载完成数
+    @TableField(exist = false)
+    private BigDecimal eventRegisterRatio;//注册率 =当日回传注册数/当日激活数
+    @TableField(exist = false)
+    private BigDecimal eventNextDayStayRatio;//次日留存率 =次留数/前一日激活数
+    @TableField(exist = false)
+    private BigDecimal eventCreditGrantAppRatio;//授信率 =当日回传授信数/当日回传的完件数
+    @TableField(exist = false)
+    private BigDecimal formActionRatio;//表单提交点击率 =当日回传表单数/当日行为数
+    @TableField(exist = false)
+    private BigDecimal submitRatio;//按钮点击率 =当日按钮点击数 / 当日行为数
+    private BigDecimal grew=new BigDecimal(0);//同比 = (今日实时花费-昨日截止到此时的花费)/昨日截止到此时的花费*100%;
 }

+ 7 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouReportAccountDailyMapper.java

@@ -2,17 +2,23 @@ package cn.com.ctop.kuaishou.modules.report.mapper;
 
 import java.util.List;
 
+import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly;
 import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountDaily;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * 盯盘日数据
+ *
  * @author: jeecg-boot
- * @date:   2021-03-04
+ * @date: 2021-03-04
  * @cersion: V1.0
  */
 public interface EtlKuaishouReportAccountDailyMapper extends BaseMapper<EtlKuaishouReportAccountDaily> {
 
     void replaceBatch(@Param("list") List<EtlKuaishouReportAccountDaily> list);
+
+    EtlKuaishouReportAccountHourly getOnedayAggregatebyDaily(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("accountId") Long accountId);
+
+    List<EtlKuaishouReportAccountHourly> getOnedayEtlReportList(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("accountId") Long accountId);
 }

+ 7 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/EtlKuaishouReportAccountHourlyMapper.java

@@ -10,11 +10,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * 账户维度-每小时盯盘数据
+ *
  * @author: jeecg-boot
- * @date:   2021-03-04
+ * @date: 2021-03-04
  * @cersion: V1.0
  */
 public interface EtlKuaishouReportAccountHourlyMapper extends BaseMapper<EtlKuaishouReportAccountHourly> {
 
     void replaceBatch(@Param("list") List<EtlKuaishouReportAccountHourly> list);
+
+    EtlKuaishouReportAccountHourly getOnedayAggregateByHour(@Param("startTime") String startTime, @Param("accountId") Long accountId, @Param("hour") Integer hour);
+
+    List<EtlKuaishouReportAccountHourly> getOnedayEtlReportList(@Param("startTime") String startTime,@Param("accountId") Long accountId);
+
 }

+ 144 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/EtlKuaishouReportAccountDailyMapper.xml

@@ -76,4 +76,148 @@
             )
         </foreach>
     </insert>
+
+
+    <select id="getOnedayAggregatebyDaily"
+            resultType="cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly">
+        SELECT stat_date,
+               IFNULL(SUM(charge),0) as 'charge',
+               SUM(photo_show) as 'photoShow',
+               SUM(photo_click) as 'photoClick',
+               SUM(aclick) as 'aclick',
+               SUM(bclick) as 'bclick',
+               SUM(photo_share) as 'photoShare',
+               SUM(photo_comment) as 'photoComment',
+               SUM(photo_like) as 'photoLike',
+               SUM(follow) as 'follow',
+               SUM(cancel_follow) as 'cancelFollow',
+               SUM(report) as 'report',
+               SUM(block) as 'block',
+               SUM(negative) as 'negative',
+               SUM(download_started) as 'downloadStarted',
+               SUM(download_completed) as 'downloadCompleted',
+               SUM(activation) as 'activation',
+               SUM(submit) as 'submit',
+               SUM(event_pay_first_day) as 'eventPayFirstDay',
+               SUM(event_pay_purchase_amount_first_day) as 'eventPayPurchaseAmountFirstDay',
+               SUM(event_pay) as 'eventPay',
+               SUM(event_pay_purchase_amount) as 'eventPayPurchaseAmount',
+               SUM(event_register) as 'eventRegister',
+               SUM(event_jin_jian_app) as 'eventJinJianApp',
+               SUM(event_credit_grant_app) as 'eventCreditGrantApp',
+               SUM(event_order_paid) as 'eventOrderPaid',
+               SUM(event_order_paid_purchase_amount) as 'eventOrderPaidPurchaseAmount',
+               SUM(event_jin_jian_landing_page) as 'eventJinJianLandingPage',
+               SUM(event_credit_grant_landing_page) as 'eventCreditGrantLandingPage',
+               SUM(event_next_day_stay) as 'eventNextDayStay',
+               SUM(form_count) as 'formCount',
+               IFNULL(ROUND(SUM(charge) / SUM(activation), 2), 0) as 'activationCost',
+               IFNULL(ROUND(SUM(charge) / SUM(activation) * 1000, 2), 0) as 'impression1kCost',
+               IFNULL(ROUND(SUM(charge) / SUM(photo_click), 2), 0) as 'photoClickCost',
+               IFNULL(ROUND(SUM(charge) / SUM(bclick), 2), 0) as 'actionCost',
+               IFNULL(ROUND(SUM(charge) / SUM(download_started), 2), 0) as 'downloadStartedCost',
+               IFNULL(ROUND(SUM(charge) / SUM(download_completed), 2), 0) as 'downloadCompletedCost',
+               IFNULL(ROUND(SUM(charge) / SUM(form_count), 2), 0) as 'formCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_pay_first_day), 2), 0) as 'eventPayFirstDayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_pay), 2), 0) as 'eventPayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_register), 2), 0) as 'eventRegisterCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_next_day_stay), 2), 0) as 'eventNextDayStayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_jin_jian_app), 2), 0) as 'eventJinJianAppCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_credit_grant_app), 2), 0) as 'eventCreditGrantAppCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_jin_jian_landing_page), 2), 0) as 'eventJinJianLandingPageCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_credit_grant_landing_page), 2),
+                      0) as 'eventCreditGrantLandingPageCost',
+               IFNULL(ROUND(SUM(charge) / SUM(submit), 2), 0) as 'submitCost',
+               IFNULL(ROUND(SUM(event_pay_purchase_amount_first_day) / SUM(charge) * 100, 2),
+                      0) as 'eventPayFirstDayRoi',
+               IFNULL(ROUND(SUM(event_pay_purchase_amount) / SUM(charge) * 100, 2), 0) as 'eventPayRoi',
+               IFNULL(ROUND(SUM(bclick) / SUM(activation) * 100, 2), 0) as 'actionRatio',
+               IFNULL(ROUND(SUM(photo_click) / SUM(photo_show) * 100, 2), 0) as 'photoClickRatio',
+               IFNULL(ROUND(SUM(download_started) / SUM(bclick) * 100, 2), 0) as 'downloadStartedRatio',
+               IFNULL(ROUND(SUM(download_completed) / SUM(download_started) * 100, 2), 0) as 'downloadCompletedRatio',
+               IFNULL(ROUND(SUM(activation) / SUM(download_completed) * 100, 2), 0) as 'activationRatio',
+               IFNULL(ROUND(SUM(event_register) / SUM(activation) * 100, 2), 0) as 'eventRegisterRatio',
+               IFNULL(ROUND(SUM(event_next_day_stay) / SUM(activation) * 100, 2), 0) as 'eventNextDayStayRatio',
+               IFNULL(ROUND(SUM(event_credit_grant_app) / SUM(event_jin_jian_app) * 100, 2),
+                      0) as 'eventCreditGrantAppRatio',
+               IFNULL(ROUND(SUM(form_count) / SUM(bclick) * 100, 2), 0) as 'formActionRatio',
+               IFNULL(ROUND(SUM(submit) / SUM(bclick) * 100, 2), 0) as 'submitRatio'
+        FROM ctop_etl_kuaishou_report_account_daily
+        WHERE account_id = #{accountId}
+          AND stat_date &gt;= #{startTime}
+          AND stat_date &lt;= #{endTime}
+    </select>
+
+
+
+    <select id="getOnedayEtlReportList"
+            resultType="cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly">
+        SELECT stat_date,
+               IFNULL(SUM(charge),0) as 'charge',
+               SUM(photo_show) as 'photoShow',
+               SUM(photo_click) as 'photoClick',
+               SUM(aclick) as 'aclick',
+               SUM(bclick) as 'bclick',
+               SUM(photo_share) as 'photoShare',
+               SUM(photo_comment) as 'photoComment',
+               SUM(photo_like) as 'photoLike',
+               SUM(follow) as 'follow',
+               SUM(cancel_follow) as 'cancelFollow',
+               SUM(report) as 'report',
+               SUM(block) as 'block',
+               SUM(negative) as 'negative',
+               SUM(download_started) as 'downloadStarted',
+               SUM(download_completed) as 'downloadCompleted',
+               SUM(activation) as 'activation',
+               SUM(submit) as 'submit',
+               SUM(event_pay_first_day) as 'eventPayFirstDay',
+               SUM(event_pay_purchase_amount_first_day) as 'eventPayPurchaseAmountFirstDay',
+               SUM(event_pay) as 'eventPay',
+               SUM(event_pay_purchase_amount) as 'eventPayPurchaseAmount',
+               SUM(event_register) as 'eventRegister',
+               SUM(event_jin_jian_app) as 'eventJinJianApp',
+               SUM(event_credit_grant_app) as 'eventCreditGrantApp',
+               SUM(event_order_paid) as 'eventOrderPaid',
+               SUM(event_order_paid_purchase_amount) as 'eventOrderPaidPurchaseAmount',
+               SUM(event_jin_jian_landing_page) as 'eventJinJianLandingPage',
+               SUM(event_credit_grant_landing_page) as 'eventCreditGrantLandingPage',
+               SUM(event_next_day_stay) as 'eventNextDayStay',
+               SUM(form_count) as 'formCount',
+               IFNULL(ROUND(SUM(charge) / SUM(activation), 2), 0) as 'activationCost',
+               IFNULL(ROUND(SUM(charge) / SUM(activation) * 1000, 2), 0) as 'impression1kCost',
+               IFNULL(ROUND(SUM(charge) / SUM(photo_click), 2), 0) as 'photoClickCost',
+               IFNULL(ROUND(SUM(charge) / SUM(bclick), 2), 0) as 'actionCost',
+               IFNULL(ROUND(SUM(charge) / SUM(download_started), 2), 0) as 'downloadStartedCost',
+               IFNULL(ROUND(SUM(charge) / SUM(download_completed), 2), 0) as 'downloadCompletedCost',
+               IFNULL(ROUND(SUM(charge) / SUM(form_count), 2), 0) as 'formCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_pay_first_day), 2), 0) as 'eventPayFirstDayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_pay), 2), 0) as 'eventPayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_register), 2), 0) as 'eventRegisterCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_next_day_stay), 2), 0) as 'eventNextDayStayCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_jin_jian_app), 2), 0) as 'eventJinJianAppCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_credit_grant_app), 2), 0) as 'eventCreditGrantAppCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_jin_jian_landing_page), 2), 0) as 'eventJinJianLandingPageCost',
+               IFNULL(ROUND(SUM(charge) / SUM(event_credit_grant_landing_page), 2),
+                      0) as 'eventCreditGrantLandingPageCost',
+               IFNULL(ROUND(SUM(charge) / SUM(submit), 2), 0) as 'submitCost',
+               IFNULL(ROUND(SUM(event_pay_purchase_amount_first_day) / SUM(charge) * 100, 2),
+                      0) as 'eventPayFirstDayRoi',
+               IFNULL(ROUND(SUM(event_pay_purchase_amount) / SUM(charge) * 100, 2), 0) as 'eventPayRoi',
+               IFNULL(ROUND(SUM(bclick) / SUM(activation) * 100, 2), 0) as 'actionRatio',
+               IFNULL(ROUND(SUM(photo_click) / SUM(photo_show) * 100, 2), 0) as 'photoClickRatio',
+               IFNULL(ROUND(SUM(download_started) / SUM(bclick) * 100, 2), 0) as 'downloadStartedRatio',
+               IFNULL(ROUND(SUM(download_completed) / SUM(download_started) * 100, 2), 0) as 'downloadCompletedRatio',
+               IFNULL(ROUND(SUM(activation) / SUM(download_completed) * 100, 2), 0) as 'activationRatio',
+               IFNULL(ROUND(SUM(event_register) / SUM(activation) * 100, 2), 0) as 'eventRegisterRatio',
+               IFNULL(ROUND(SUM(event_next_day_stay) / SUM(activation) * 100, 2), 0) as 'eventNextDayStayRatio',
+               IFNULL(ROUND(SUM(event_credit_grant_app) / SUM(event_jin_jian_app) * 100, 2),
+                      0) as 'eventCreditGrantAppRatio',
+               IFNULL(ROUND(SUM(form_count) / SUM(bclick) * 100, 2), 0) as 'formActionRatio',
+               IFNULL(ROUND(SUM(submit) / SUM(bclick) * 100, 2), 0) as 'submitRatio'
+        FROM ctop_etl_kuaishou_report_account_daily
+        WHERE account_id = #{accountId}
+          AND stat_date &gt;= #{startTime}
+          AND stat_date &lt;= #{endTime}
+        group by stat_date
+    </select>
 </mapper>

+ 77 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/EtlKuaishouReportAccountHourlyMapper.xml

@@ -79,4 +79,81 @@
             )
         </foreach>
     </insert>
+
+    <select id="getOnedayAggregateByHour"
+            resultType="cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly">
+        SELECT *,
+               IFNULL(ROUND(charge / activation, 2), 0) as 'activationCost',
+               IFNULL(ROUND(charge / aclick * 1000, 2), 0) as 'impression1kCost',
+               IFNULL(ROUND(charge / photo_click, 2), 0) as 'photoClickCost',
+               IFNULL(ROUND(charge / bclick, 2), 0) as 'actionCost',
+               IFNULL(ROUND(play_3s_count / photo_show * 100, 2), 0) as 'play3sRatio',
+               IFNULL(ROUND(charge / download_started, 2), 0) as 'downloadStartedCost',
+               IFNULL(ROUND(charge / download_completed, 2), 0) as 'downloadCompletedCost',
+               IFNULL(ROUND(charge / form_count, 2), 0) as 'formCost',
+               IFNULL(ROUND(charge / event_pay_first_day, 2), 0) as 'eventPayFirstDayCost',
+               IFNULL(ROUND(charge / event_pay, 2), 0) as 'eventPayCost',
+               IFNULL(ROUND(charge / event_register, 2), 0) as 'eventRegisterCost',
+               IFNULL(ROUND(charge / event_next_day_stay, 2), 0) as 'eventNextDayStayCost',
+               IFNULL(ROUND(charge / event_jin_jian_app, 2), 0) as 'eventJinJianAppCost',
+               IFNULL(ROUND(charge / event_credit_grant_app, 2), 0) as 'eventCreditGrantAppCost',
+               IFNULL(ROUND(charge / event_jin_jian_landing_page, 2), 0) as 'eventJinJianLandingPageCost',
+               IFNULL(ROUND(charge / event_credit_grant_landing_page, 2), 0) as 'eventCreditGrantLandingPageCost',
+               IFNULL(ROUND(charge / submit, 2), 0) as 'submitCost',
+               IFNULL(ROUND(event_pay_purchase_amount_first_day / charge * 100, 2), 0) as 'eventPayFirstDayRoi',
+               IFNULL(ROUND(event_pay_purchase_amount / charge * 100, 2), 0) as 'eventPayRoi',
+               IFNULL(ROUND(bclick / aclick * 100, 2), 0) as 'actionRatio',
+               IFNULL(ROUND(photo_click / photo_show * 100, 2), 0) as 'photoClickRatio',
+               IFNULL(ROUND(download_started / bclick * 100, 2), 0) as 'downloadStartedRatio',
+               IFNULL(ROUND(download_completed / download_started * 100, 2), 0) as 'downloadCompletedRatio',
+               IFNULL(ROUND(activation / download_completed * 100, 2), 0) as 'activationRatio',
+               IFNULL(ROUND(event_register / activation * 100, 2), 0) as 'eventRegisterRatio',
+               IFNULL(ROUND(event_next_day_stay / activation * 100, 2), 0) as 'eventNextDayStayRatio',
+               IFNULL(ROUND(event_credit_grant_app / event_jin_jian_app * 100, 2), 0) as 'eventCreditGrantAppRatio',
+               IFNULL(ROUND(form_count / bclick * 100, 2), 0) as 'formActionRatio',
+               IFNULL(ROUND(submit / bclick * 100, 2), 0) as 'submitRatio'
+        FROM ctop_etl_kuaishou_report_account_hourly
+        WHERE account_id = #{accountId}
+          AND stat_date = #{startTime}
+          AND stat_hour = #{hour}
+    </select>
+
+    <select id="getOnedayEtlReportList"
+            resultType="cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly">
+        SELECT *,
+               IFNULL(ROUND(charge / activation, 2), 0) as 'activationCost',
+               IFNULL(ROUND(charge / aclick * 1000, 2), 0) as 'impression1kCost',
+               IFNULL(ROUND(charge / photo_click, 2), 0) as 'photoClickCost',
+               IFNULL(ROUND(charge / bclick, 2), 0) as 'actionCost',
+               IFNULL(ROUND(play_3s_count / photo_show * 100, 2), 0) as 'play3sRatio',
+               IFNULL(ROUND(charge / download_started, 2), 0) as 'downloadStartedCost',
+               IFNULL(ROUND(charge / download_completed, 2), 0) as 'downloadCompletedCost',
+               IFNULL(ROUND(charge / form_count, 2), 0) as 'formCost',
+               IFNULL(ROUND(charge / event_pay_first_day, 2), 0) as 'eventPayFirstDayCost',
+               IFNULL(ROUND(charge / event_pay, 2), 0) as 'eventPayCost',
+               IFNULL(ROUND(charge / event_register, 2), 0) as 'eventRegisterCost',
+               IFNULL(ROUND(charge / event_next_day_stay, 2), 0) as 'eventNextDayStayCost',
+               IFNULL(ROUND(charge / event_jin_jian_app, 2), 0) as 'eventJinJianAppCost',
+               IFNULL(ROUND(charge / event_credit_grant_app, 2), 0) as 'eventCreditGrantAppCost',
+               IFNULL(ROUND(charge / event_jin_jian_landing_page, 2), 0) as 'eventJinJianLandingPageCost',
+               IFNULL(ROUND(charge / event_credit_grant_landing_page, 2), 0) as 'eventCreditGrantLandingPageCost',
+               IFNULL(ROUND(charge / submit, 2), 0) as 'submitCost',
+               IFNULL(ROUND(event_pay_purchase_amount_first_day / charge * 100, 2), 0) as 'eventPayFirstDayRoi',
+               IFNULL(ROUND(event_pay_purchase_amount / charge * 100, 2), 0) as 'eventPayRoi',
+               IFNULL(ROUND(bclick / aclick * 100, 2), 0) as 'actionRatio',
+               IFNULL(ROUND(photo_click / photo_show * 100, 2), 0) as 'photoClickRatio',
+               IFNULL(ROUND(download_started / bclick * 100, 2), 0) as 'downloadStartedRatio',
+               IFNULL(ROUND(download_completed / download_started * 100, 2), 0) as 'downloadCompletedRatio',
+               IFNULL(ROUND(activation / download_completed * 100, 2), 0) as 'activationRatio',
+               IFNULL(ROUND(event_register / activation * 100, 2), 0) as 'eventRegisterRatio',
+               IFNULL(ROUND(event_next_day_stay / activation * 100, 2), 0) as 'eventNextDayStayRatio',
+               IFNULL(ROUND(event_credit_grant_app / event_jin_jian_app * 100, 2), 0) as 'eventCreditGrantAppRatio',
+               IFNULL(ROUND(form_count / bclick * 100, 2), 0) as 'formActionRatio',
+               IFNULL(ROUND(submit / bclick * 100, 2), 0) as 'submitRatio'
+        FROM ctop_etl_kuaishou_report_account_hourly
+        WHERE account_id = #{accountId}
+          AND stat_date = #{startTime}
+        GROUP BY stat_hour
+    </select>
+
 </mapper>

+ 7 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IEtlKuaishouReportAccountHourlyService.java

@@ -2,7 +2,11 @@ package cn.com.ctop.kuaishou.modules.report.service;
 
 
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.common.api.vo.Result;
+
+import java.text.ParseException;
 
 /**
  * @Description: 账户维度-每小时盯盘数据
@@ -14,4 +18,7 @@ public interface IEtlKuaishouReportAccountHourlyService extends IService<EtlKuai
 
     void queryEveryhourlyDataForAccount();
 
+    Result<Object> getAggregateByHour(JSONObject request) throws ParseException;
+
+    Result<Object> getEtlReportList(JSONObject request);
 }

+ 4 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouReportAccountDailyServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountDaily;
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouReportAccountDailyMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
@@ -29,6 +30,8 @@ public class EtlKuaishouReportAccountDailyServiceImpl extends ServiceImpl<EtlKua
     @Override
     public void queryEveryDayDataForAccount() {
         List<EtlKuaishouReportAccountDaily> list = dailyAccountMapper.queryEveryDayDataForAccount();
-        etlDailyAccountMapper.replaceBatch(list);
+        if (!Check.isNull(list)) {
+            etlDailyAccountMapper.replaceBatch(list);
+        }
     }
 }

+ 80 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/EtlKuaishouReportAccountHourlyServiceImpl.java

@@ -1,14 +1,22 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
 
+import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouReportAccountHourly;
+import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouReportAccountDailyMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouReportAccountHourlyMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.service.IEtlKuaishouReportAccountHourlyService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.ParseException;
 import java.util.List;
 
 /**
@@ -27,9 +35,80 @@ public class EtlKuaishouReportAccountHourlyServiceImpl extends ServiceImpl<EtlKu
     @Autowired
     private EtlKuaishouReportAccountHourlyMapper etlHourlyAccountMapper;
 
+    @Autowired
+    private EtlKuaishouReportAccountDailyMapper etlDailyAccountMapper;
+
     @Override
     public void queryEveryhourlyDataForAccount() {
         List<EtlKuaishouReportAccountHourly> list = hourlyAccountMapper.queryEveryhourlyDataForAccount();
-        etlHourlyAccountMapper.replaceBatch(list);
+        if (!Check.isNull(list)) {
+            etlHourlyAccountMapper.replaceBatch(list);
+        }
+    }
+
+    @Override
+    public Result<Object> getAggregateByHour(JSONObject request) throws ParseException {
+        Long accountId = request.getLong("accountId");
+        String startTime = request.getString("startTime");
+        if (Check.isNull(accountId) || Check.isNull(startTime)) {
+            return Result.error("请选择时间和账户");
+        }
+        String endTime = request.getString("endTime");
+        EtlKuaishouReportAccountHourly today = null;
+        EtlKuaishouReportAccountHourly yesterday = null;
+        if (Check.isNull(endTime)) {
+            Integer hour = DateUtils.getHour(DateUtils.now());
+            today = etlHourlyAccountMapper.getOnedayAggregateByHour(startTime, accountId, hour);
+            String lastDay = DateUtils.getLastDay(startTime, 1);
+            yesterday = etlHourlyAccountMapper.getOnedayAggregateByHour(lastDay, accountId, hour);
+            if (Check.isNull(today) && hour > 0) {
+                today = etlHourlyAccountMapper.getOnedayAggregateByHour(startTime, accountId, hour - 1);
+            }
+        } else {
+            today = etlDailyAccountMapper.getOnedayAggregatebyDaily(startTime, endTime, accountId);
+            int days = DateUtils.dateDiff(startTime, endTime);
+            String endTime2 = DateUtils.getLastDay(startTime, 1);
+            String startTime2 = DateUtils.getLastDay(endTime2, days);
+            yesterday = etlDailyAccountMapper.getOnedayAggregatebyDaily(startTime2, endTime2, accountId);
+        }
+        if (!Check.isNull(today) && !Check.isNull(yesterday)) {
+            BigDecimal tcharge = today.getCharge();
+            BigDecimal ycharge = yesterday.getCharge();
+            if (ycharge.compareTo(BigDecimal.ZERO) != 0 && ycharge.compareTo(BigDecimal.ZERO) != 0) {
+                BigDecimal grew = tcharge.subtract(ycharge).divide(ycharge, 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP);
+                today.setGrew(grew);
+            }
+        }
+        JSONObject obj = new JSONObject();
+        obj.put("today", today);
+        obj.put("yesterday", yesterday);
+        return Result.ok(obj);
+    }
+
+    @Override
+    public Result<Object> getEtlReportList(JSONObject request) {
+        Long accountId = request.getLong("accountId");
+        String startTime = request.getString("startTime");
+        if (Check.isNull(accountId) || Check.isNull(startTime)) {
+            return Result.error("请选择账户和时间");
+        }
+        String endTime = request.getString("endTime");
+        JSONObject obj = new JSONObject();
+        List<EtlKuaishouReportAccountHourly> todayList = null;
+        List<EtlKuaishouReportAccountHourly> yesterdayList = null;
+        if (Check.isNull(endTime)) {
+            todayList = etlHourlyAccountMapper.getOnedayEtlReportList(startTime, accountId);
+            String lastDay = DateUtils.getLastDay(startTime, 1);
+            yesterdayList = etlHourlyAccountMapper.getOnedayEtlReportList(lastDay, accountId);
+        } else {
+            todayList = etlDailyAccountMapper.getOnedayEtlReportList(startTime, endTime, accountId);
+            int days = DateUtils.dateDiff(startTime, endTime);
+            String endTime2 = DateUtils.getLastDay(startTime, 1);
+            String startTime2 = DateUtils.getLastDay(endTime2, days);
+            yesterdayList = etlDailyAccountMapper.getOnedayEtlReportList(startTime2, endTime2, accountId);
+        }
+        obj.put("today", todayList);
+        obj.put("yesterday", yesterdayList);
+        return Result.ok(obj);
     }
 }