Pārlūkot izejas kodu

修改有效爆款数据导出代码逻辑

syh 4 gadi atpakaļ
vecāks
revīzija
01e724b1ff

+ 279 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/BytedanceVideoEtlInfoController.java

@@ -0,0 +1,279 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.common.module.vo.SheetInfoVo;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import cn.com.ctop.toutiao.modules.report.service.IBytedanceVideoEtlInfoService;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.metadata.Sheet;
+import com.alibaba.fastjson.JSON;
+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.system.query.QueryGenerator;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.excelutil.entity.BytedanceVideoEtlInfoEntity;
+import org.jeecg.modules.excelutil.entity.KuaishouXxlEntity;
+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.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.util.*;
+
+/**
+ * 头条视频信息清洗
+ * @author jeecg-boot
+ * @date   2020-12-25
+ * @version V1.0
+ */
+@Slf4j
+@RestController
+@RequestMapping("/ctop/bytedanceVideoEtlInfo")
+public class BytedanceVideoEtlInfoController {
+	@Autowired
+	private IBytedanceVideoEtlInfoService bytedanceVideoEtlInfoService;
+
+	/**
+	  * 分页列表查询
+	 * @param bytedanceVideoEtlInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<BytedanceVideoEtlInfo>> queryPageList(BytedanceVideoEtlInfo bytedanceVideoEtlInfo,
+															  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+															  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+															  HttpServletRequest req) {
+		Result<IPage<BytedanceVideoEtlInfo>> result = new Result<>();
+		String type = bytedanceVideoEtlInfo.getType();
+		bytedanceVideoEtlInfo.setType(null);
+		String startDate = bytedanceVideoEtlInfo.getStartDate();
+		bytedanceVideoEtlInfo.setStartDate(null);
+		String endDate = bytedanceVideoEtlInfo.getEndDate();
+		bytedanceVideoEtlInfo.setEndDate(null);
+		QueryWrapper<BytedanceVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceVideoEtlInfo, req.getParameterMap());
+		if(null!=type&&!type.equals("")){
+			if(type.trim().equals("valid")){
+				//有效
+				if(null!=startDate&&!"".equals(startDate.trim())){
+					queryWrapper.gt("effect_date",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("effect_date",startDate);
+				}
+				queryWrapper.lt("effect_day_num",7);
+			}else if(type.trim().equals("hot")){
+				//爆款
+				if(null!=startDate&&!"faddish_date".equals(startDate.trim())){
+					queryWrapper.gt("",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("faddish_date",startDate);
+				}
+				queryWrapper.lt("faddish_day_num",30);
+			}else {
+				//上线
+				if(null!=startDate&&!"".equals(startDate.trim())){
+					queryWrapper.gt("state_date",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("state_date",startDate);
+				}
+			}
+		}
+		queryWrapper.orderByDesc("total_cost");
+		Page<BytedanceVideoEtlInfo> page = new Page<BytedanceVideoEtlInfo>(pageNo, pageSize);
+		IPage<BytedanceVideoEtlInfo> pageList = bytedanceVideoEtlInfoService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param bytedanceVideoEtlInfo
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<BytedanceVideoEtlInfo> add(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
+		Result<BytedanceVideoEtlInfo> result = new Result<>();
+		try {
+			bytedanceVideoEtlInfoService.save(bytedanceVideoEtlInfo);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param bytedanceVideoEtlInfo
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<BytedanceVideoEtlInfo> edit(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
+		Result<BytedanceVideoEtlInfo> result = new Result<BytedanceVideoEtlInfo>();
+		BytedanceVideoEtlInfo bytedanceVideoEtlInfoEntity = bytedanceVideoEtlInfoService.getById(bytedanceVideoEtlInfo.getId());
+		if(bytedanceVideoEtlInfoEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = bytedanceVideoEtlInfoService.updateById(bytedanceVideoEtlInfo);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<BytedanceVideoEtlInfo> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<BytedanceVideoEtlInfo> result = new Result<>();
+		BytedanceVideoEtlInfo bytedanceVideoEtlInfo = bytedanceVideoEtlInfoService.getById(id);
+		if(bytedanceVideoEtlInfo==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(bytedanceVideoEtlInfo);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @PostMapping(value = "/exportXls")
+  public void exportXls(BytedanceVideoEtlInfo bytedanceVideoEtlInfo,
+								HttpServletRequest request, HttpServletResponse response)throws Exception {
+      // Step.1 组装查询条件
+	  String type = bytedanceVideoEtlInfo.getType();
+	  bytedanceVideoEtlInfo.setType(null);
+	  String startDate = bytedanceVideoEtlInfo.getStartDate();
+	  bytedanceVideoEtlInfo.setStartDate(null);
+	  String endDate = bytedanceVideoEtlInfo.getEndDate();
+	  bytedanceVideoEtlInfo.setEndDate(null);
+	  QueryWrapper<BytedanceVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceVideoEtlInfo, request.getParameterMap());
+	  if(null!=type&&!type.equals("")){
+		  if(type.trim().equals("valid")){
+			  //有效
+			  if(null!=startDate&&!"".equals(startDate.trim())){
+				  queryWrapper.gt("effect_date",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("effect_date",startDate);
+			  }
+			  queryWrapper.lt("effect_day_num",7);
+		  }else if(type.trim().equals("hot")){
+			  //爆款
+			  if(null!=startDate&&!"faddish_date".equals(startDate.trim())){
+				  queryWrapper.gt("",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("faddish_date",startDate);
+			  }
+			  queryWrapper.lt("faddish_day_num",30);
+		  }else {
+			  //上线
+			  if(null!=startDate&&!"".equals(startDate.trim())){
+				  queryWrapper.gt("state_date",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("state_date",startDate);
+			  }
+		  }
+	  }
+	  queryWrapper.orderByDesc("total_cost");
+	  List<BytedanceVideoEtlInfo> pageList = bytedanceVideoEtlInfoService.list(queryWrapper);
+
+	  //查询总的消耗信息
+	  SheetInfoVo totalSheetVo = new SheetInfoVo<BytedanceVideoEtlInfoEntity>();
+	  List<BytedanceVideoEtlInfoEntity> details = new ArrayList<>();
+	  if(null!=pageList&&!pageList.isEmpty()){
+		pageList.forEach(etlInfo->{
+			details.add(new BytedanceVideoEtlInfoEntity(etlInfo));
+		});
+		totalSheetVo.setDetails(details);
+	  }
+	  totalSheetVo.setSheetName("头条视频数据统计列表");
+	  OutputStream outputStream = response.getOutputStream();
+	  String date = DateUtils.formatDate(new Date());
+	  HttpUtils.setResponseHeader(response, "头条视频数据统计列表" + date + ".xlsx");
+	  ExcelWriter excelWriter = EasyExcelFactory.getWriter(outputStream);
+
+	  Sheet sheet = new Sheet(1, 0, BytedanceVideoEtlInfoEntity.class);
+	  sheet.setSheetName(totalSheetVo.getSheetName());
+	  excelWriter.write(totalSheetVo.getDetails(), sheet);
+	  excelWriter.finish();
+	  outputStream.flush();
+	  outputStream.close();
+  }
+
+  /**
+      * 通过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<BytedanceVideoEtlInfo> listBytedanceVideoEtlInfos = ExcelImportUtil.importExcel(file.getInputStream(), BytedanceVideoEtlInfo.class, params);
+              bytedanceVideoEtlInfoService.saveBatch(listBytedanceVideoEtlInfos);
+              return Result.ok("文件导入成功!数据行数:" + listBytedanceVideoEtlInfos.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("文件导入失败!");
+  }
+
+}

+ 230 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/KuaishouVideoEtlInfoController.java

@@ -0,0 +1,230 @@
+package org.jeecg.modules.ctop.controller;
+
+import cn.com.ctop.common.module.utils.HttpUtils;
+import cn.com.ctop.common.module.vo.SheetInfoVo;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouVideoEtlInfo;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouVideoEtlInfoService;
+import com.alibaba.excel.EasyExcelFactory;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.metadata.Sheet;
+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 lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.excelutil.entity.BytedanceVideoEtlInfoEntity;
+import org.jeecg.modules.excelutil.entity.KuaishouVideoEtlInfoEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+ /**
+ * 快手视频信息清洗
+ * @author jeecg-boot
+ * @date   2020-12-25
+ * @version V1.0
+ */
+@Slf4j
+@Api(tags="快手视频信息清洗")
+@RestController
+@RequestMapping("/ctop/kuaishouVideoEtlInfo")
+public class KuaishouVideoEtlInfoController {
+	@Autowired
+	private IKuaishouVideoEtlInfoService kuaishouVideoEtlInfoService;
+
+	/**
+	  * 分页列表查询
+	 * @param kuaishouVideoEtlInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@GetMapping(value = "/list")
+	public Result<IPage<KuaishouVideoEtlInfo>> queryPageList(KuaishouVideoEtlInfo kuaishouVideoEtlInfo,
+															 @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+															 @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+															 HttpServletRequest req) {
+		Result<IPage<KuaishouVideoEtlInfo>> result = new Result<>();
+		String type = kuaishouVideoEtlInfo.getType();
+		kuaishouVideoEtlInfo.setType(null);
+		String startDate = kuaishouVideoEtlInfo.getStartDate();
+		kuaishouVideoEtlInfo.setStartDate(null);
+		String endDate = kuaishouVideoEtlInfo.getEndDate();
+		kuaishouVideoEtlInfo.setEndDate(null);
+		QueryWrapper<KuaishouVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(kuaishouVideoEtlInfo, req.getParameterMap());
+		if(null!=type&&!type.equals("")){
+			if(type.trim().equals("valid")){
+				//有效
+				if(null!=startDate&&!"".equals(startDate.trim())){
+					queryWrapper.gt("effect_date",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("effect_date",startDate);
+				}
+				queryWrapper.lt("effect_day_num",7);
+			}else if(type.trim().equals("hot")){
+				//爆款
+				if(null!=startDate&&!"faddish_date".equals(startDate.trim())){
+					queryWrapper.gt("",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("faddish_date",startDate);
+				}
+				queryWrapper.lt("faddish_day_num",30);
+			}else {
+				//上线
+				if(null!=startDate&&!"".equals(startDate.trim())){
+					queryWrapper.gt("state_date",startDate);
+				}
+				if(null!=endDate&&!"".equals(endDate.trim())){
+					queryWrapper.lt("state_date",startDate);
+				}
+			}
+		}
+		Page<KuaishouVideoEtlInfo> page = new Page<KuaishouVideoEtlInfo>(pageNo, pageSize);
+		IPage<KuaishouVideoEtlInfo> pageList = kuaishouVideoEtlInfoService.page(page, queryWrapper);
+		result.setSuccess(true);
+		result.setResult(pageList);
+		return result;
+	}
+
+	/**
+	  *   添加
+	 * @param kuaishouVideoEtlInfo
+	 * @return
+	 */
+	@PostMapping(value = "/add")
+	public Result<KuaishouVideoEtlInfo> add(@RequestBody KuaishouVideoEtlInfo kuaishouVideoEtlInfo) {
+		Result<KuaishouVideoEtlInfo> result = new Result<>();
+		try {
+			kuaishouVideoEtlInfoService.save(kuaishouVideoEtlInfo);
+			result.success("添加成功!");
+		} catch (Exception e) {
+			log.error(e.getMessage(),e);
+			result.error500("操作失败");
+		}
+		return result;
+	}
+
+	/**
+	  *  编辑
+	 * @param kuaishouVideoEtlInfo
+	 * @return
+	 */
+	@PutMapping(value = "/edit")
+	public Result<KuaishouVideoEtlInfo> edit(@RequestBody KuaishouVideoEtlInfo kuaishouVideoEtlInfo) {
+		Result<KuaishouVideoEtlInfo> result = new Result<KuaishouVideoEtlInfo>();
+		KuaishouVideoEtlInfo kuaishouVideoEtlInfoEntity = kuaishouVideoEtlInfoService.getById(kuaishouVideoEtlInfo.getId());
+		if(kuaishouVideoEtlInfoEntity==null) {
+			result.error500("未找到对应实体");
+		}else {
+			boolean ok = kuaishouVideoEtlInfoService.updateById(kuaishouVideoEtlInfo);
+			if(ok) {
+				result.success("修改成功!");
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	  * 通过id查询
+	 * @param id
+	 * @return
+	 */
+	@GetMapping(value = "/queryById")
+	public Result<KuaishouVideoEtlInfo> queryById(@RequestParam(name="id",required=true) String id) {
+		Result<KuaishouVideoEtlInfo> result = new Result<>();
+		KuaishouVideoEtlInfo kuaishouVideoEtlInfo = kuaishouVideoEtlInfoService.getById(id);
+		if(kuaishouVideoEtlInfo==null) {
+			result.error500("未找到对应实体");
+		}else {
+			result.setResult(kuaishouVideoEtlInfo);
+			result.setSuccess(true);
+		}
+		return result;
+	}
+
+  /**
+      * 导出excel
+   *
+   * @param request
+   * @param response
+   */
+  @PostMapping(value = "/exportXls")
+  public void exportXls(KuaishouVideoEtlInfo kuaishouVideoEtlInfo,
+								HttpServletRequest request, HttpServletResponse response) throws Exception{
+	  // Step.1 组装查询条件
+	  // Step.1 组装查询条件
+	  String type = kuaishouVideoEtlInfo.getType();
+	  kuaishouVideoEtlInfo.setType(null);
+	  String startDate = kuaishouVideoEtlInfo.getStartDate();
+	  kuaishouVideoEtlInfo.setStartDate(null);
+	  String endDate = kuaishouVideoEtlInfo.getEndDate();
+	  kuaishouVideoEtlInfo.setEndDate(null);
+	  QueryWrapper<KuaishouVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(kuaishouVideoEtlInfo, request.getParameterMap());
+	  if(null!=type&&!type.equals("")){
+		  if(type.trim().equals("valid")){
+			  //有效
+			  if(null!=startDate&&!"".equals(startDate.trim())){
+				  queryWrapper.gt("effect_date",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("effect_date",startDate);
+			  }
+			  queryWrapper.lt("effect_day_num",7);
+		  }else if(type.trim().equals("hot")){
+			  //爆款
+			  if(null!=startDate&&!"faddish_date".equals(startDate.trim())){
+				  queryWrapper.gt("",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("faddish_date",startDate);
+			  }
+			  queryWrapper.lt("faddish_day_num",30);
+		  }else {
+			  //上线
+			  if(null!=startDate&&!"".equals(startDate.trim())){
+				  queryWrapper.gt("state_date",startDate);
+			  }
+			  if(null!=endDate&&!"".equals(endDate.trim())){
+				  queryWrapper.lt("state_date",startDate);
+			  }
+		  }
+	  }
+	  queryWrapper.orderByDesc("total_cost");
+	  List<KuaishouVideoEtlInfo> pageList = kuaishouVideoEtlInfoService.list(queryWrapper);
+
+	  //查询总的消耗信息
+	  SheetInfoVo totalSheetVo = new SheetInfoVo<KuaishouVideoEtlInfoEntity>();
+	  List<KuaishouVideoEtlInfoEntity> details = new ArrayList<>();
+	  if(null!=pageList&&!pageList.isEmpty()){
+		  pageList.forEach(etlInfo->{
+			  details.add(new KuaishouVideoEtlInfoEntity(etlInfo));
+		  });
+		  totalSheetVo.setDetails(details);
+	  }
+	  totalSheetVo.setSheetName("头条视频数据统计列表");
+	  OutputStream outputStream = response.getOutputStream();
+	  String date = DateUtils.formatDate(new Date());
+	  HttpUtils.setResponseHeader(response, "头条视频数据统计列表" + date + ".xlsx");
+	  ExcelWriter excelWriter = EasyExcelFactory.getWriter(outputStream);
+
+	  Sheet sheet = new Sheet(1, 0, BytedanceVideoEtlInfoEntity.class);
+	  sheet.setSheetName(totalSheetVo.getSheetName());
+	  excelWriter.write(totalSheetVo.getDetails(), sheet);
+	  excelWriter.finish();
+	  outputStream.flush();
+	  outputStream.close();
+  }
+}

+ 257 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/BytedanceVideoEtlInfoEntity.java

@@ -0,0 +1,257 @@
+package org.jeecg.modules.excelutil.entity;
+
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+public class BytedanceVideoEtlInfoEntity extends BaseRowModel {
+    /**视频唯一标识*/
+    @ExcelProperty(value = "视频唯一标识", index = 1)
+    private String videoCode;
+    /**初次产生消耗时间*/
+    @ExcelProperty(value = "视频上线时间", index = 2)
+    private String stateDate;
+    /**url*/
+    @ExcelProperty(value = "视频链接", index = 3)
+    private String url;
+    /**coverUrl*/
+    @ExcelProperty(value = "封面链接", index = 4)
+    private String coverUrl;
+    /**companyName*/
+    @ExcelProperty(value = "所属公司", index = 5)
+    private String companyName;
+    /**planName*/
+    @ExcelProperty(value = "编导名称", index = 15)
+    private String planName;
+    /**clipName*/
+    @ExcelProperty(value = "剪辑名称", index = 15)
+    private String clipName;
+    /**shotName*/
+    @ExcelProperty(value = "拍摄名称", index = 15)
+    private String shotName;
+    /**singleWeekCost*/
+    @ExcelProperty(value = "上线一周消耗", index = 15)
+    private BigDecimal singleWeekCost;
+    /**twoWeekCost*/
+    @ExcelProperty(value = "上线两周消耗", index = 15)
+    private BigDecimal twoWeekCost;
+    /**fourWeekCost*/
+    @ExcelProperty(value = "上线四周消耗", index = 15)
+    private BigDecimal fourWeekCost;
+    /**总消耗*/
+    @ExcelProperty(value = "总消耗", index = 15)
+    private BigDecimal totalCost;
+    /**clickNum*/
+    @ExcelProperty(value = "封面点击数", index = 15)
+    private Long clickNum;
+    /**showNum*/
+    @ExcelProperty(value = "素材曝光数", index = 15)
+    private Long showNum;
+    /**activeNum*/
+    @ExcelProperty(value = "有效数", index = 15)
+    private Long activeNum;
+    /**convertNum*/
+    @ExcelProperty(value = "转化数", index = 15)
+    private Long convertNum;
+    /**effectDate*/
+    @ExcelProperty(value = "达成有效日期", index = 15)
+    private String effectDate;
+    /**faddishDate*/
+    @ExcelProperty(value = "达成爆款日期", index = 15)
+    private String faddishDate;
+    /**effectDayNum*/
+    @ExcelProperty(value = "达成有效天数", index = 15)
+    private Integer effectDayNum;
+    /**faddishDayNum*/
+    @ExcelProperty(value = "达成爆款天数", index = 15)
+    private Integer faddishDayNum;
+
+    public BytedanceVideoEtlInfoEntity(BytedanceVideoEtlInfo etlInfo) {
+        this.videoCode = etlInfo.getVideoCode();
+        this.stateDate = etlInfo.getStateDate();
+        this.url = etlInfo.getUrl();
+        this.coverUrl = etlInfo.getCoverUrl();
+        this.companyName = etlInfo.getCompanyName();
+        this.planName = etlInfo.getPlanName();
+        this.clipName = etlInfo.getClipName();
+        this.shotName = etlInfo.getShotName();
+        this.singleWeekCost = etlInfo.getSingleWeekCost();
+        this.twoWeekCost = etlInfo.getTwoWeekCost();
+        this.fourWeekCost = etlInfo.getFourWeekCost();
+        this.totalCost = etlInfo.getTotalCost();
+        this.clickNum = etlInfo.getClickNum();
+        this.showNum = etlInfo.getShowNum();
+        this.activeNum = etlInfo.getActiveNum();
+        this.convertNum = etlInfo.getConvertNum();
+        this.effectDate = etlInfo.getEffectDate();
+        this.faddishDate = etlInfo.getFaddishDate();
+        this.effectDayNum = etlInfo.getEffectDayNum();
+        this.faddishDayNum = etlInfo.getFaddishDayNum();
+    }
+
+    public BytedanceVideoEtlInfoEntity() {
+
+    }
+
+    public String getVideoCode() {
+        return videoCode;
+    }
+
+    public void setVideoCode(String videoCode) {
+        this.videoCode = videoCode;
+    }
+
+    public String getStateDate() {
+        return stateDate;
+    }
+
+    public void setStateDate(String stateDate) {
+        this.stateDate = stateDate;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getCoverUrl() {
+        return coverUrl;
+    }
+
+    public void setCoverUrl(String coverUrl) {
+        this.coverUrl = coverUrl;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getPlanName() {
+        return planName;
+    }
+
+    public void setPlanName(String planName) {
+        this.planName = planName;
+    }
+
+    public String getClipName() {
+        return clipName;
+    }
+
+    public void setClipName(String clipName) {
+        this.clipName = clipName;
+    }
+
+    public String getShotName() {
+        return shotName;
+    }
+
+    public void setShotName(String shotName) {
+        this.shotName = shotName;
+    }
+
+    public BigDecimal getSingleWeekCost() {
+        return singleWeekCost;
+    }
+
+    public void setSingleWeekCost(BigDecimal singleWeekCost) {
+        this.singleWeekCost = singleWeekCost;
+    }
+
+    public BigDecimal getTwoWeekCost() {
+        return twoWeekCost;
+    }
+
+    public void setTwoWeekCost(BigDecimal twoWeekCost) {
+        this.twoWeekCost = twoWeekCost;
+    }
+
+    public BigDecimal getFourWeekCost() {
+        return fourWeekCost;
+    }
+
+    public void setFourWeekCost(BigDecimal fourWeekCost) {
+        this.fourWeekCost = fourWeekCost;
+    }
+
+    public BigDecimal getTotalCost() {
+        return totalCost;
+    }
+
+    public void setTotalCost(BigDecimal totalCost) {
+        this.totalCost = totalCost;
+    }
+
+    public Long getClickNum() {
+        return clickNum;
+    }
+
+    public void setClickNum(Long clickNum) {
+        this.clickNum = clickNum;
+    }
+
+    public Long getShowNum() {
+        return showNum;
+    }
+
+    public void setShowNum(Long showNum) {
+        this.showNum = showNum;
+    }
+
+    public Long getActiveNum() {
+        return activeNum;
+    }
+
+    public void setActiveNum(Long activeNum) {
+        this.activeNum = activeNum;
+    }
+
+    public Long getConvertNum() {
+        return convertNum;
+    }
+
+    public void setConvertNum(Long convertNum) {
+        this.convertNum = convertNum;
+    }
+
+    public String getEffectDate() {
+        return effectDate;
+    }
+
+    public void setEffectDate(String effectDate) {
+        this.effectDate = effectDate;
+    }
+
+    public String getFaddishDate() {
+        return faddishDate;
+    }
+
+    public void setFaddishDate(String faddishDate) {
+        this.faddishDate = faddishDate;
+    }
+
+    public Integer getEffectDayNum() {
+        return effectDayNum;
+    }
+
+    public void setEffectDayNum(Integer effectDayNum) {
+        this.effectDayNum = effectDayNum;
+    }
+
+    public Integer getFaddishDayNum() {
+        return faddishDayNum;
+    }
+
+    public void setFaddishDayNum(Integer faddishDayNum) {
+        this.faddishDayNum = faddishDayNum;
+    }
+}

+ 139 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/excelutil/entity/KuaishouVideoEtlInfoEntity.java

@@ -0,0 +1,139 @@
+package org.jeecg.modules.excelutil.entity;
+
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouVideoEtlInfo;
+import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.metadata.BaseRowModel;
+
+import java.math.BigDecimal;
+
+public class KuaishouVideoEtlInfoEntity extends BaseRowModel {
+    /**
+     * 视频唯一标识
+     */
+    @ExcelProperty(value = "视频唯一标识", index = 1)
+    private String videoCode;
+    /**
+     * 初次产生消耗时间
+     */
+    @ExcelProperty(value = "视频上线时间", index = 2)
+    private String stateDate;
+    /**
+     * url
+     */
+    @ExcelProperty(value = "视频链接", index = 3)
+    private String url;
+    /**
+     * coverUrl
+     */
+    @ExcelProperty(value = "封面链接", index = 4)
+    private String coverUrl;
+    /**
+     * companyName
+     */
+    @ExcelProperty(value = "所属公司", index = 5)
+    private String companyName;
+    /**
+     * planName
+     */
+    @ExcelProperty(value = "编导名称", index = 15)
+    private String planName;
+    /**
+     * clipName
+     */
+    @ExcelProperty(value = "剪辑名称", index = 15)
+    private String clipName;
+    /**
+     * shotName
+     */
+    @ExcelProperty(value = "拍摄名称", index = 15)
+    private String shotName;
+    /**
+     * singleWeekCost
+     */
+    @ExcelProperty(value = "上线一周消耗", index = 15)
+    private BigDecimal singleWeekCost;
+    /**
+     * twoWeekCost
+     */
+    @ExcelProperty(value = "上线两周消耗", index = 15)
+    private BigDecimal twoWeekCost;
+    /**
+     * fourWeekCost
+     */
+    @ExcelProperty(value = "上线四周消耗", index = 15)
+    private BigDecimal fourWeekCost;
+    /**
+     * 总消耗
+     */
+    @ExcelProperty(value = "总消耗", index = 15)
+    private BigDecimal totalCost;
+    /**
+     * clickNum
+     */
+    @ExcelProperty(value = "封面曝光数", index = 15)
+    private Long photoShow;
+    /**
+     * showNum
+     */
+    @ExcelProperty(value = "封面点击数", index = 15)
+    private Long photoClick;
+    /**
+     * activeNum
+     */
+    @ExcelProperty(value = "素材曝光数", index = 15)
+    private Long aclick;
+    /**
+     * convertNum
+     */
+    @ExcelProperty(value = "行为数", index = 15)
+    private Long bclick;
+    /**
+     * effectDate
+     */
+    @ExcelProperty(value = "达成有效日期", index = 15)
+    private String effectDate;
+    /**
+     * faddishDate
+     */
+    @ExcelProperty(value = "达成爆款日期", index = 15)
+    private String faddishDate;
+    /**
+     * effectDayNum
+     */
+    @ExcelProperty(value = "达成有效天数", index = 15)
+    private Integer effectDayNum;
+    /**
+     * faddishDayNum
+     */
+    @ExcelProperty(value = "达成爆款天数", index = 15)
+    private Integer faddishDayNum;
+
+    public KuaishouVideoEtlInfoEntity(KuaishouVideoEtlInfo etlInfo) {
+        this.videoCode = etlInfo.getVideoCode();
+        this.stateDate = etlInfo.getStateDate();
+        this.url = etlInfo.getUrl();
+        this.coverUrl = etlInfo.getCoverUrl();
+        this.companyName = etlInfo.getCompanyName();
+        this.planName = etlInfo.getPlanName();
+        this.clipName = etlInfo.getClipName();
+        this.shotName = etlInfo.getShotName();
+        this.singleWeekCost = etlInfo.getSingleWeekCost();
+        this.twoWeekCost = etlInfo.getTwoWeekCost();
+        this.fourWeekCost = etlInfo.getFourWeekCost();
+        this.totalCost = etlInfo.getTotalCost();
+        this.photoClick = etlInfo.getPhotoClick();
+        this.photoShow = etlInfo.getPhotoShow();
+        this.aclick = etlInfo.getAclick();
+        this.bclick = etlInfo.getBclick();
+        this.effectDate = etlInfo.getEffectDate();
+        this.faddishDate = etlInfo.getFaddishDate();
+        this.effectDayNum = etlInfo.getEffectDayNum();
+        this.faddishDayNum = etlInfo.getFaddishDayNum();
+    }
+
+    public KuaishouVideoEtlInfoEntity() {
+
+    }
+
+}

+ 32 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouVideoEtlInfo.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -19,51 +20,82 @@ import java.util.Date;
 public class KuaishouVideoEtlInfo {
 
 	@TableId(type = IdType.AUTO)
+	@Excel(name = "ID", width = 15)
 	private Long id;
 	/**视频唯一标识*/
+	@Excel(name = "视频唯一标识", width = 15)
 	private String videoCode;
 	/**初次产生消耗时间*/
+	@Excel(name = "开始投放时间", width = 15)
 	private String stateDate;
 	/**url*/
+	@Excel(name = "视频链接", width = 15)
 	private String url;
 	/**coverUrl*/
+	@Excel(name = "封面链接", width = 15)
 	private String coverUrl;
 	/**渠道类型*/
 	private String channelType;
 	/**companyName*/
+	@Excel(name = "公司名称", width = 15)
 	private String companyName;
 	/**planId*/
+	@Excel(name = "策划id", width = 15)
 	private String planId;
 	/**planName*/
+	@Excel(name = "策划名称", width = 15)
 	private String planName;
 	/**clipId*/
+	@Excel(name = "剪辑id", width = 15)
 	private String clipId;
 	/**clipName*/
+	@Excel(name = "剪辑名称", width = 15)
 	private String clipName;
 	/**shotId*/
+	@Excel(name = "拍摄id", width = 15)
 	private String shotId;
 	/**shotName*/
+	@Excel(name = "拍摄名称", width = 15)
 	private String shotName;
 	/**singleWeekCost*/
+	@Excel(name = "上线一周消耗", width = 15)
 	private BigDecimal singleWeekCost;
 	/**twoWeekCost*/
+	@Excel(name = "上线两周消耗", width = 15)
 	private BigDecimal twoWeekCost;
 	/**fourWeekCost*/
+	@Excel(name = "上线四周消耗", width = 15)
 	private BigDecimal fourWeekCost;
 	/**总消耗*/
+	@Excel(name = "总消耗", width = 15)
 	private BigDecimal totalCost;
 	/**photoShow*/
+	@Excel(name = "封面曝光量", width = 15)
 	private Long photoShow;
 	/**photoClick*/
+	@Excel(name = "封面点击数", width = 15)
 	private Long photoClick;
 	/**aclick*/
+	@Excel(name = "素材曝光数", width = 15)
 	private Long aclick;
 	/**bclick*/
+	@Excel(name = "行为数", width = 15)
 	private Long bclick;
+	@Excel(name = "达成有效日期", width = 15)
 	private String effectDate;
+	@Excel(name = "达成爆款日期", width = 15)
 	private String faddishDate;
+	@Excel(name = "达成有效天数", width = 15)
 	private Integer effectDayNum;
+	@Excel(name = "达成爆款天数", width = 15)
 	private Integer faddishDayNum;
+	@TableField(exist = false)
+	private String type;
+	@TableField(exist = false)
+	private String startDate;
+	@TableField(exist = false)
+	private String endDate;
+
 	/**createTime*/
 	private Date createTime;
 	/**updateTime*/

+ 0 - 5
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouVideoEtlInfoServiceImpl.java

@@ -1,9 +1,6 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
-import cn.com.ctop.common.module.entity.MaterialAscription;
-import cn.com.ctop.common.module.entity.MaterialInfo;
 import cn.com.ctop.common.module.service.IMaterialAscriptionService;
-import cn.com.ctop.common.module.service.IMaterialInfoService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouVideoEtlInfo;
@@ -14,7 +11,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.util.DateUtils;
-import org.opencv.core.Mat;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -24,7 +20,6 @@ import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.logging.Logger;
 
 /**
  * 快手视频信息清洗表(有效,爆款)

+ 0 - 150
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/controller/BytedanceVideoEtlInfoController.java

@@ -1,150 +0,0 @@
-package cn.com.ctop.toutiao.modules.report.controller;
-
-import cn.com.ctop.toutiao.modules.report.entity.BytedanceVideoEtlInfo;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceVideoEtlInfoService;
-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.system.query.QueryGenerator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Arrays;
-
- /**
- * 头条视频数据清洗信息
- * @author jeecg-boot
- * @date   2020-12-21
- * @version V1.0
- */
-@Slf4j
-@Api(tags="头条视频数据清洗信息")
-@RestController
-@RequestMapping("/ctop/bytedanceVideoEtlInfo")
-public class BytedanceVideoEtlInfoController {
-	@Autowired
-	private IBytedanceVideoEtlInfoService bytedanceVideoEtlInfoService;
-
-	/**
-	  * 分页列表查询
-	 * @param bytedanceVideoEtlInfo
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-分页列表查询", notes="头条视频数据清洗信息-分页列表查询")
-	@GetMapping(value = "/list")
-	public Result<IPage<BytedanceVideoEtlInfo>> queryPageList(BytedanceVideoEtlInfo bytedanceVideoEtlInfo,
-															  @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-															  @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-															  HttpServletRequest req) {
-		Result<IPage<BytedanceVideoEtlInfo>> result = new Result<>();
-		QueryWrapper<BytedanceVideoEtlInfo> queryWrapper = QueryGenerator.initQueryWrapper(bytedanceVideoEtlInfo, req.getParameterMap());
-		Page<BytedanceVideoEtlInfo> page = new Page<BytedanceVideoEtlInfo>(pageNo, pageSize);
-		IPage<BytedanceVideoEtlInfo> pageList = bytedanceVideoEtlInfoService.page(page, queryWrapper);
-		result.setSuccess(true);
-		result.setResult(pageList);
-		return result;
-	}
-
-	/**
-	  *   添加
-	 * @param bytedanceVideoEtlInfo
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-添加", notes="头条视频数据清洗信息-添加")
-	@PostMapping(value = "/add")
-	public Result<BytedanceVideoEtlInfo> add(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
-		Result<BytedanceVideoEtlInfo> result = new Result<>();
-		try {
-			bytedanceVideoEtlInfoService.save(bytedanceVideoEtlInfo);
-			result.success("添加成功!");
-		} catch (Exception e) {
-			log.error(e.getMessage(),e);
-			result.error500("操作失败");
-		}
-		return result;
-	}
-
-	/**
-	  *  编辑
-	 * @param bytedanceVideoEtlInfo
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-编辑", notes="头条视频数据清洗信息-编辑")
-	@PutMapping(value = "/edit")
-	public Result<BytedanceVideoEtlInfo> edit(@RequestBody BytedanceVideoEtlInfo bytedanceVideoEtlInfo) {
-		Result<BytedanceVideoEtlInfo> result = new Result<BytedanceVideoEtlInfo>();
-		BytedanceVideoEtlInfo bytedanceVideoEtlInfoEntity = bytedanceVideoEtlInfoService.getById(bytedanceVideoEtlInfo.getId());
-		if(bytedanceVideoEtlInfoEntity==null) {
-			result.error500("未找到对应实体");
-		}else {
-			boolean ok = bytedanceVideoEtlInfoService.updateById(bytedanceVideoEtlInfo);
-			if(ok) {
-				result.success("修改成功!");
-			}
-		}
-
-		return result;
-	}
-
-	/**
-	  *   通过id删除
-	 * @param id
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-通过id删除", notes="头条视频数据清洗信息-通过id删除")
-	@DeleteMapping(value = "/delete")
-	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
-		try {
-			bytedanceVideoEtlInfoService.removeById(id);
-		} catch (Exception e) {
-			log.error("删除失败",e.getMessage());
-			return Result.error("删除失败!");
-		}
-		return Result.ok("删除成功!");
-	}
-
-	/**
-	  *  批量删除
-	 * @param ids
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-批量删除", notes="头条视频数据清洗信息-批量删除")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<BytedanceVideoEtlInfo> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		Result<BytedanceVideoEtlInfo> result = new Result<>();
-		if(ids==null || "".equals(ids.trim())) {
-			result.error500("参数不识别!");
-		}else {
-			this.bytedanceVideoEtlInfoService.removeByIds(Arrays.asList(ids.split(",")));
-			result.success("删除成功!");
-		}
-		return result;
-	}
-
-	/**
-	  * 通过id查询
-	 * @param id
-	 * @return
-	 */
-	@ApiOperation(value="头条视频数据清洗信息-通过id查询", notes="头条视频数据清洗信息-通过id查询")
-	@GetMapping(value = "/queryById")
-	public Result<BytedanceVideoEtlInfo> queryById(@RequestParam(name="id",required=true) String id) {
-		Result<BytedanceVideoEtlInfo> result = new Result<>();
-		BytedanceVideoEtlInfo bytedanceVideoEtlInfo = bytedanceVideoEtlInfoService.getById(id);
-		if(bytedanceVideoEtlInfo==null) {
-			result.error500("未找到对应实体");
-		}else {
-			result.setResult(bytedanceVideoEtlInfo);
-			result.setSuccess(true);
-		}
-		return result;
-	}
-}

+ 37 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/entity/BytedanceVideoEtlInfo.java

@@ -3,7 +3,9 @@ package cn.com.ctop.toutiao.modules.report.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -20,55 +22,90 @@ public class BytedanceVideoEtlInfo {
 
 	/**id*/
 	@TableId(type = IdType.AUTO)
+	@Excel(name = "ID", width = 15)
 	private Long id;
 	/**视频唯一标识*/
+	@Excel(name = "视频唯一标识", width = 15)
 	private String videoCode;
 	/**初次产生消耗时间*/
+	@Excel(name = "视频上线时间", width = 15)
 	private String stateDate;
 	/**url*/
+	@Excel(name = "视频链接", width = 15)
 	private String url;
 	/**coverUrl*/
+	@Excel(name = "封面链接", width = 15)
 	private String coverUrl;
 	/**companyName*/
+	@Excel(name = "所属公司", width = 15)
 	private String companyName;
 	/**planId*/
+	@Excel(name = "编导ID", width = 15)
 	private String planId;
 	/**planName*/
+	@Excel(name = "编导名称", width = 15)
 	private String planName;
 	/**clipId*/
+	@Excel(name = "剪辑ID", width = 15)
 	private String clipId;
 	/**clipName*/
+	@Excel(name = "剪辑名称", width = 15)
 	private String clipName;
 	/**shotId*/
+	@Excel(name = "拍摄ID", width = 15)
 	private String shotId;
 	/**shotName*/
+	@Excel(name = "拍摄名称", width = 15)
 	private String shotName;
 	/**singleWeekCost*/
+	@Excel(name = "上线一周消耗", width = 15)
 	private BigDecimal singleWeekCost;
 	/**twoWeekCost*/
+	@Excel(name = "上线两周消耗", width = 15)
 	private BigDecimal twoWeekCost;
 	/**fourWeekCost*/
+	@Excel(name = "上线四周消耗", width = 15)
 	private BigDecimal fourWeekCost;
 	/**总消耗*/
+	@Excel(name = "总消耗", width = 15)
 	private BigDecimal totalCost;
 	/**clickNum*/
+	@Excel(name = "封面点击数", width = 15)
 	private Long clickNum;
 	/**showNum*/
+	@Excel(name = "素材曝光数", width = 15)
 	private Long showNum;
 	/**activeNum*/
+	@Excel(name = "有效数", width = 15)
 	private Long activeNum;
 	/**convertNum*/
+	@Excel(name = "转化数", width = 15)
 	private Long convertNum;
 	/**createTime*/
 	private Date createTime;
 	/**updateTime*/
 	private Date updateTime;
 	/**effectDate*/
+	@Excel(name = "达成有效日期", width = 15)
 	private String effectDate;
 	/**faddishDate*/
+	@Excel(name = "达成爆款日期", width = 15)
 	private String faddishDate;
 	/**effectDayNum*/
+	@Excel(name = "达成有效天数", width = 15)
 	private Integer effectDayNum;
 	/**faddishDayNum*/
+	@Excel(name = "达成爆款天数", width = 15)
 	private Integer faddishDayNum;
+	/**
+	 * 有效 valid
+	 * 爆款 hot
+	 * 上线 online
+	 */
+	@TableField(exist = false)
+	private String type;
+	@TableField(exist = false)
+	private String startDate;
+	@TableField(exist = false)
+	private String endDate;
 }