ソースを参照

新上监控添加同步当日数据接口

zhouzeyu@c-top.com.cn 3 年 前
コミット
223daf29ec

+ 152 - 47
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/MaterialInfoServiceImpl.java

@@ -10,6 +10,7 @@ import cn.com.ctop.common.module.mapper.MaterialTagMapper;
 import cn.com.ctop.common.module.service.*;
 import cn.com.ctop.common.module.utils.*;
 import cn.com.ctop.common.module.vo.ResFileDTO;
+import cn.com.ctop.kuaishou.modules.label.entity.MaterialLabelInfo;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,6 +22,13 @@ import it.sauronsoftware.jave.Encoder;
 import it.sauronsoftware.jave.MultimediaInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.aggregations.AggregationBuilder;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+import org.elasticsearch.search.collapse.CollapseBuilder;
+import org.elasticsearch.search.sort.SortOrder;
 import org.jeecg.common.system.entity.SysUser;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.MD5Util;
@@ -38,6 +46,8 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URLDecoder;
 import java.nio.channels.FileChannel;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -75,6 +85,9 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
     private ISupplierWatermarkService supplierWatermarkService;
     @Value("${oss.replace.download}")
     private String downloadUrl;
+    @Resource
+    ElasticsearchUtil elasticsearchUtil;
+
 
     @Override
     public void watermarkVideo(String materialId, Long videoWatermarkTemplateId, String userId) {
@@ -935,6 +948,7 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
 
     @Override
     public Map<String, Object> getListByParams(String tagCode, String type, Integer status, String materialName, List<Long> projectIds, String code, String startDate, String endDate, String userId, String clipId, String shotId, String planId, String leaderName, Integer offlineFlag, Integer pageNo, Integer pageSize) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Map<String, Object> result = new HashMap<>();
         PageHelper.startPage(pageNo, pageSize);
 
@@ -951,60 +965,151 @@ public class MaterialInfoServiceImpl extends ServiceImpl<MaterialInfoMapper, Mat
         if (!Check.isNull(endDate)) {
             endDate = endDate + " 23:59:59";
         }
+        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
+        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+        if (tagCode != null) {
+            boolQueryBuilder.filter(QueryBuilders.wildcardQuery("tagCode", "*"+tagCode+"*"));
+        }
+        if (clipId != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("clipId", clipId));
+        }
+        if (shotId != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("shotId", shotId));
+        }
+        if (planId != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("planId", planId));
+        }
+        if (status != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("status", status));
+        }
+        if (userId != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("userId", userId));
+        }
+        if (code != null) {
+            boolQueryBuilder.filter(QueryBuilders.matchPhraseQuery("code", code));
+        }
+        if (materialName != null) {
+            boolQueryBuilder.filter(QueryBuilders.wildcardQuery("materialName", "*"+materialName+"*"));
+        }
+        if (projectIds != null && !projectIds.isEmpty()) {
+            boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("projectId", projectIds));
+        }
+        if (startDate != "" && startDate != null && endDate != "" && endDate != null) {
+            Calendar cal = Calendar.getInstance();
+            Calendar calAfter = Calendar.getInstance();
+            try {
+                Date startTime = sdf.parse(startDate);
+                Date endTime = sdf.parse(endDate);
+                cal.setTime(startTime);
+                calAfter.setTime(endTime);
+                cal.add(Calendar.HOUR_OF_DAY, -8);
+                calAfter.add(Calendar.HOUR_OF_DAY, -8);
+                log.info(sdf.format(cal.getTime()));
+                log.info(sdf.format(calAfter.getTime()));
+                boolQueryBuilder.must(QueryBuilders.rangeQuery("createTime").from(startTime).to(endTime));
+            } catch (ParseException e) {
+                log.info("搜索日期转换错误");
+            }
+        }
+        if (offlineFlag != null) {
+            boolQueryBuilder.must(QueryBuilders.matchPhraseQuery("offlineFlag", offlineFlag));
+        }
+        if (status != null && status.equals("1")) {
+            searchSourceBuilder.sort("confirmTime", SortOrder.DESC);
+        } else {
+            searchSourceBuilder.sort("createTime", SortOrder.DESC);
 
-        List<MaterialInfo> dailyList = materialInfoMapper.getListByParams(tagCode, type, status, materialName, code, startDate, endDate, userId, projectIds, ascription, clipId, shotId, planId, leaderName, offlineFlag);
+        }
+        searchSourceBuilder.query(boolQueryBuilder);
+
+//       AggregationBuilder aggregation = AggregationBuilders.cardinality("count").field("code");
+//        searchSourceBuilder.aggregation(aggregation);
+//        searchSourceBuilder.collapse(new CollapseBuilder("code"));
+
+        searchSourceBuilder.from((pageNo - 1) * pageSize);
+        searchSourceBuilder.size(pageSize);
+        searchSourceBuilder.sort("createTime");
+        PageInfo<MaterialLabelInfo> search = new PageInfo<>();
+        int total = 0;
+
+        try {
+            search = elasticsearchUtil.search(searchSourceBuilder, pageNo, pageSize, MaterialLabelInfo.class);
+            total = (int) search.getTotal();
+            log.info("查询数据成功:{}", search.getTotal());
+        } catch (Exception e) {
+            log.info("查询数据错误:{}", e.toString());
+            e.printStackTrace();
+        }
+        //List<MaterialInfo> dailyList = materialInfoMapper.getListByParams(tagCode, type, status, materialName, code, startDate, endDate, userId, projectIds, ascription, clipId, shotId, planId, leaderName, offlineFlag);
         List<MaterialInfo> setList = new ArrayList<>();
-        PageInfo<MaterialInfo> pageInfo = new PageInfo<>(dailyList);
-        if (!dailyList.isEmpty()) {
-            for (MaterialInfo info : dailyList) {
+        PageInfo<MaterialInfo> pageInfo = new PageInfo<>();
+        if (null != search.getList() && !search.getList().isEmpty()) {
+            for (MaterialLabelInfo info : search.getList()) {
                 MaterialInfo materialInfo = materialInfoMapper.selectById(info.getId());
-                materialInfo.setSlogansCount(info.getSlogansCount());
-                materialInfo.setOfflineFlag(info.getOfflineFlag());
-                materialInfo.setConfirmTime(info.getConfirmTime());
-                //素材名称为空 则使用素材id 同步失败
-                materialInfo.setMaterialName(Check.isNull(materialInfo.getMaterialName()) ? materialInfo.getId() : materialInfo.getMaterialName());
-                //判断是否已经同步到快手平台
-                Integer kuaishouMaterialUpCount = this.getKuaishouUpVideoCount(info.getCode());
-                if (kuaishouMaterialUpCount > 0) {
-                    materialInfo.setKuaishouVideoIsUp(1);
-                } else {
-                    materialInfo.setKuaishouVideoIsUp(0);
-                }
-                //判断是否已经同步到抖音平台
-                Integer toutiaoMaterialUpCount = this.getToutiaoUpVideoCount(info.getCode());
-                if (toutiaoMaterialUpCount > 0) {
-                    materialInfo.setToutiaoVideoIsUp(1);
-                } else {
-                    materialInfo.setToutiaoVideoIsUp(0);
-                }
-                //统计快手总消耗数据
-                JSONObject kuaishous = materialParameterMapper.getMaterialTotalCharge(info.getCode());
-                if (!Check.isNull(kuaishous)) {
-                    materialInfo.setCost(kuaishous.getBigDecimal("charges"));
-                } else {
-                    materialInfo.setCost(new BigDecimal(0));
-                }
-                //统计抖音总消耗数据
-                JSONObject bytedances = materialParameterMapper.getByteDanceMaterialTotalCharge(info.getCode());
-                if (!Check.isNull(bytedances)) {
-                    materialInfo.setBytedanceCost(bytedances.getBigDecimal("charges"));
-                } else {
-                    materialInfo.setBytedanceCost(new BigDecimal(0));
-                }
-                Project project = projectService.getById(info.getProjectId());
-                if (!Check.isNull(project)) {
-                    materialInfo.setMediaId(project.getMediaId());
-                    materialInfo.setProjectName(project.getProjectName());
+                if (materialInfo != null) {
+                    if (info.getSlogansCount() != null) {
+                        materialInfo.setSlogansCount(Integer.parseInt(info.getSlogansCount()));
+                    }
+                    if (info.getOfflineFlag() != null) {
+                        materialInfo.setOfflineFlag(Integer.parseInt(info.getOfflineFlag()));
+                    }
+                    try {
+                        if (info.getConfirmTime() != null) {
+                            materialInfo.setConfirmTime(info.getConfirmTime());
+                        }
+                    } catch (Exception e) {
+                        log.info("日期转换失败");
+                    }
+                    //素材名称为空 则使用素材id 同步失败
+                    materialInfo.setMaterialName(Check.isNull(materialInfo.getMaterialName()) ? materialInfo.getId() : materialInfo.getMaterialName());
+                    //判断是否已经同步到快手平台
+                    Integer kuaishouMaterialUpCount = this.getKuaishouUpVideoCount(info.getCode());
+                    if (kuaishouMaterialUpCount > 0) {
+                        materialInfo.setKuaishouVideoIsUp(1);
+                    } else {
+                        materialInfo.setKuaishouVideoIsUp(0);
+                    }
+                    //判断是否已经同步到抖音平台
+                    Integer toutiaoMaterialUpCount = this.getToutiaoUpVideoCount(info.getCode());
+                    if (toutiaoMaterialUpCount > 0) {
+                        materialInfo.setToutiaoVideoIsUp(1);
+                    } else {
+                        materialInfo.setToutiaoVideoIsUp(0);
+                    }
+                    //统计快手总消耗数据
+                    JSONObject kuaishous = materialParameterMapper.getMaterialTotalCharge(info.getCode());
+                    if (!Check.isNull(kuaishous)) {
+                        materialInfo.setCost(kuaishous.getBigDecimal("charges"));
+                    } else {
+                        materialInfo.setCost(new BigDecimal(0));
+                    }
+                    //统计抖音总消耗数据
+                    JSONObject bytedances = materialParameterMapper.getByteDanceMaterialTotalCharge(info.getCode());
+                    if (!Check.isNull(bytedances)) {
+                        materialInfo.setBytedanceCost(bytedances.getBigDecimal("charges"));
+                    } else {
+                        materialInfo.setBytedanceCost(new BigDecimal(0));
+                    }
+                    Project project = projectService.getById(info.getProjectId());
+                    if (!Check.isNull(project)) {
+                        materialInfo.setMediaId(project.getMediaId());
+                        materialInfo.setProjectName(project.getProjectName());
+                    }
+                    QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
+                    imageInfoQueryWrapper.eq("video_id", info.getCode());
+                    imageInfoQueryWrapper.eq("status", 0);
+                    List<MaterialImageInfo> imageInfoList = materialImageInfoService.list(imageInfoQueryWrapper);
+                    materialInfo.setWhetherUnaudited(!Check.isNull(imageInfoList));
+                    setList.add(materialInfo);
                 }
-                QueryWrapper<MaterialImageInfo> imageInfoQueryWrapper = new QueryWrapper<>();
-                imageInfoQueryWrapper.eq("video_id", info.getCode());
-                imageInfoQueryWrapper.eq("status", 0);
-                List<MaterialImageInfo> imageInfoList = materialImageInfoService.list(imageInfoQueryWrapper);
-                materialInfo.setWhetherUnaudited(!Check.isNull(imageInfoList));
-                setList.add(materialInfo);
             }
         }
         pageInfo.setList(setList);
+        pageInfo.setPageNum(pageNo);
+        pageInfo.setTotal(search.getTotal());
+        pageInfo.setPageSize(search.getPageSize());
+        pageInfo.setPages(total == 0 ? 0 : (total % pageSize == 0 ? total / pageSize : (total / pageSize) + 1));
+        pageInfo.setHasNextPage(pageNo < search.getPages());
         result.put("data", pageInfo);
         ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
         return result;

+ 1 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/controller/NewMonitorController.java

@@ -38,7 +38,7 @@ public class NewMonitorController {
             newMonitorService.synchronousKuaiShouMonitor(type, aLong);
         }
         for (Long aLong : touTiaoAccountId) {
-            newMonitorService.synchronousKuaiShouMonitor(type, aLong);
+            newMonitorService.synchronousTouTiaoMonitor(type, aLong);
         }
 
         return new Result();

+ 6 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/NewMonitorMapper.java

@@ -17,10 +17,16 @@ public interface NewMonitorMapper {
 
     List<Map> getKuaiShouGroup(@Param("date") String date, @Param("accountId") String accountId);
 
+    List<Map> getKuaiShouGroupNow(@Param("date") String date, @Param("accountId") String accountId);
+
     List<Map> getKuaiShouCampaign(@Param("date") String date, @Param("accountId") String accountId);
 
+    List<Map> getKuaiShouCampaignNow(@Param("date") String date, @Param("accountId") String accountId);
+
     List<Map> getTouTiaoCampaign(@Param("date") String date, @Param("accountId") String accountId);
 
+    List<Map> getTouTiaoCampaignNow(@Param("date") String date, @Param("accountId") String accountId);
+
     BigDecimal getGroupCharge(@Param("unitId") String unitId, @Param("afterDate") String afterDate);
 
     BigDecimal getCampaignCharge(@Param("campaignId") String campaignId, @Param("afterDate") String afterDate);

+ 27 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/NewMonitorMapper.xml

@@ -35,6 +35,15 @@
      </where>
     </select>
 
+    <select id="getKuaiShouGroupNow" resultType="Map">
+        SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.unit_id as 'unitId',t.group_create_time as 'groupCreatTime',DATE_FORMAT(DATE_ADD(t.group_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
+        from ctop_user_allocation t1 LEFT JOIN  ctop_kuaishou_group t on t1.account_id=t.account_id
+        <where>
+            and t.account_id=#{accountId}
+            and  t.group_create_time &gt;= #{date}
+        </where>
+    </select>
+
     <select id="getKuaiShouCampaign" resultType="Map">
         SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.campaign_id as 'campaignId',t.put_create_time as 'campaignCreatTime',DATE_FORMAT(DATE_ADD(t.put_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
         from ctop_user_allocation t1 LEFT JOIN  ctop_kuaishou_campaign t on t1.account_id=t.account_id
@@ -51,6 +60,15 @@
         </where>
     </select>
 
+    <select id="getKuaiShouCampaignNow" resultType="Map">
+        SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.campaign_id as 'campaignId',t.put_create_time as 'campaignCreatTime',DATE_FORMAT(DATE_ADD(t.put_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
+        from ctop_user_allocation t1 LEFT JOIN  ctop_kuaishou_campaign t on t1.account_id=t.account_id
+        <where>
+            and t.account_id=#{accountId}
+            and  t.put_create_time &gt;=#{date}
+        </where>
+    </select>
+
     <select id="getTouTiaoCampaign" resultType="Map">
         SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.id as 'campaignId',t.ad_create_time as 'campaignCreatTime',DATE_FORMAT(DATE_ADD(t.ad_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
         from ctop_user_allocation t1 LEFT JOIN  ctop_bytedance_advertise_plan t on t1.account_id=t.account_id
@@ -67,6 +85,15 @@
         </where>
     </select>
 
+    <select id="getTouTiaoCampaignNow" resultType="Map">
+        SELECT t1.account_id as 'accountId',t1.auth_name as 'accountName',t1.user_name as 'userName',t.id as 'campaignId',t.ad_create_time as 'campaignCreatTime',DATE_FORMAT(DATE_ADD(t.ad_create_time,INTERVAL 7 DAY),'%Y-%m-%d') as 'afterTime'
+        from ctop_user_allocation t1 LEFT JOIN  ctop_bytedance_advertise_plan t on t1.account_id=t.account_id
+        <where>
+            and t.account_id=#{accountId}
+            and  t.ad_create_time &gt;= #{date}
+        </where>
+    </select>
+
     <select id="getGroupCharge" resultType="java.math.BigDecimal">
 
         select sum(charge) from ctop_kuaishou_report_daily_group t where t.stat_date &lt; #{afterDate} and t.unit_id=#{unitId}

+ 11 - 2
jeecg-boot-module-system/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/NewMonitorServiceImpl.java

@@ -34,7 +34,7 @@ public class NewMonitorServiceImpl implements NewMonitorService {
      */
     @Async("calcThreadExecutor")
     public Result synchronousKuaiShouMonitor(String type, Long accId) {
-        log.info("同步快手新上数据:{}",accId);
+        log.info("同步快手新上数据:{}", accId);
         Result result = new Result();
         List<Map> kuaiShouGroup = new ArrayList<>();
         List<Map> kuaiShouCampaign = new ArrayList<>();
@@ -45,6 +45,9 @@ public class NewMonitorServiceImpl implements NewMonitorService {
             if (type.equals("0")) {
                 //查询创建不满7天的快手组信息
                 kuaiShouGroup = newMonitorMapper.getKuaiShouGroup(sdf.format(new Date()), String.valueOf(accId));
+            } else if (type.equals("1")) {
+                //查询当日快手组信息
+                kuaiShouGroup = newMonitorMapper.getKuaiShouGroupNow(sdf.format(new Date()), String.valueOf(accId));
             } else {
                 //查询全量快手组信息
                 kuaiShouGroup = newMonitorMapper.getKuaiShouGroup(null, String.valueOf(accId));
@@ -89,6 +92,9 @@ public class NewMonitorServiceImpl implements NewMonitorService {
             if (type.equals("0")) {
                 //查询创建不满7天的快手广告计划
                 kuaiShouCampaign = newMonitorMapper.getKuaiShouCampaign(sdf.format(new Date()), String.valueOf(accId));
+            } else if (type.equals("1")) {
+                //查询当日快手广告计划
+                kuaiShouCampaign = newMonitorMapper.getKuaiShouCampaignNow(sdf.format(new Date()), String.valueOf(accId));
             } else {
                 //查询全量快手广告计划
                 kuaiShouCampaign = newMonitorMapper.getKuaiShouCampaign(null, String.valueOf(accId));
@@ -140,7 +146,7 @@ public class NewMonitorServiceImpl implements NewMonitorService {
      * @return
      */
     public Result synchronousTouTiaoMonitor(String type, Long accId) {
-        log.info("同步头条新上数据:{}",accId);
+        log.info("同步头条新上数据:{}", accId);
         Result result = new Result();
         List<Map> kuaiShouGroup = new ArrayList<>();
         List<Map> kuaiShouCampaign = new ArrayList<>();
@@ -151,6 +157,9 @@ public class NewMonitorServiceImpl implements NewMonitorService {
             if (type.equals("0")) {
                 //查询创建不满7天的头条广告计划
                 TouTiaoCampaign = newMonitorMapper.getTouTiaoCampaign(sdf.format(new Date()), String.valueOf(accId));
+            } else if (type.equals("1")) {
+                //查询当日头条广告计划
+                TouTiaoCampaign = newMonitorMapper.getTouTiaoCampaignNow(sdf.format(new Date()), String.valueOf(accId));
             } else {
                 //查询全量头条广告计划
                 TouTiaoCampaign = newMonitorMapper.getTouTiaoCampaign(null, String.valueOf(accId));