Răsfoiți Sursa

修改 标签分布统计相关数据查询接口

2507040827 4 săptămâni în urmă
părinte
comite
2024b5f442

+ 0 - 4
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/controller/AitagTagLogController.java

@@ -7,24 +7,20 @@ import cn.com.yusys.yusp.domain.dto.TagResultDto;
 import cn.com.yusys.yusp.domain.entity.AitagTagLogEntity;
 import cn.com.yusys.yusp.domain.vo.*;
 import cn.com.yusys.yusp.service.AitagTagLogService;
-import cn.com.yusys.yusp.service.DistributedScheduledTask;
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
 
 import static cn.com.yusys.yusp.config.DataDictionary.FEEDBACK_RESULT_REJECT;
 

+ 0 - 55
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/domain/entity/AitagTagDailyAggEntity.java

@@ -1,55 +0,0 @@
-package cn.com.yusys.yusp.domain.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.IdType;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-
-/**
- * 智能标签按天汇总信息
- *
- * @author 2507040827
- * @date 2026-02-26 11:07:40
- */
-@TableName("aitag_tag_daily_agg")
-@Data
-@ApiModel(value = "AitagTagDailyAggEntity", description = "智能标签按天汇总信息")
-public class AitagTagDailyAggEntity {
-
-    /**
-     * id
-     **/
-    @ApiModelProperty(value="id")
-    @TableId(type=IdType.UUID)
-    private String id;
-
-    /**
-     * 汇总日期
-     **/
-    @ApiModelProperty(value = "汇总日期")
-    private String aggDate;
-
-    /**
-     * 类别名称
-     **/
-    @ApiModelProperty(value = "标签类别")
-    private String categoryId;
-
-    /**
-     * 标签名称
-     **/
-    @ApiModelProperty(value = "标签名称")
-    private String tagNm;
-
-    /**
-     * 统计梳理
-     **/
-    @ApiModelProperty(value = "统计梳理")
-    private Integer tagCount;
-
-
-
-}

+ 0 - 24
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/mapper/AitagTagDailyAggDao.java

@@ -1,24 +0,0 @@
-package cn.com.yusys.yusp.mapper;
-
-import cn.com.yusys.yusp.commons.mybatisplus.mapper.BaseMapper;
-import cn.com.yusys.yusp.domain.vo.IconResVo;
-import cn.com.yusys.yusp.domain.entity.AitagTagDailyAggEntity;
-import cn.com.yusys.yusp.domain.vo.TagDistStatsReqVo;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-
-/**
- * 智能标签按天汇总信息
- *
- * @author 2507040827
- * @date 2026-02-26 11:07:40
- */
-
-@Mapper
-public interface AitagTagDailyAggDao extends BaseMapper<AitagTagDailyAggEntity> {
-
-    List<IconResVo> selectTagDistStats(TagDistStatsReqVo taggingResult);
-
-}

+ 4 - 0
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/mapper/AitagTagLogDao.java

@@ -4,6 +4,7 @@ import cn.com.yusys.yusp.commons.mybatisplus.mapper.BaseMapper;
 import cn.com.yusys.yusp.domain.vo.IconResVo;
 import cn.com.yusys.yusp.domain.vo.SmartTaggingResultVo;
 import cn.com.yusys.yusp.domain.entity.AitagTagLogEntity;
+import cn.com.yusys.yusp.domain.vo.TagDistStatsReqVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -31,4 +32,7 @@ public interface AitagTagLogDao extends BaseMapper<AitagTagLogEntity> {
     List<IconResVo> selectTagReportByWeek(SmartTaggingResultVo taggingResult);
 
     List<AitagTagLogEntity> selectByInsertTime(@Param("insertTime") String insertTime);
+
+
+    List<IconResVo> selectTagDistStats(TagDistStatsReqVo taggingResult);
 }

+ 0 - 122
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/DistributedScheduledTask.java

@@ -1,122 +0,0 @@
-package cn.com.yusys.yusp.service;
-
-
-import cn.com.yusys.yusp.commons.util.StringUtils;
-import cn.com.yusys.yusp.domain.dto.TagResultDto;
-import cn.com.yusys.yusp.domain.entity.AitagTagDailyAggEntity;
-import cn.com.yusys.yusp.domain.entity.AitagTagLogEntity;
-import cn.com.yusys.yusp.mapper.AitagTagDailyAggDao;
-import cn.com.yusys.yusp.mapper.AitagTagLogDao;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.time.LocalDate;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
-
-import static cn.com.yusys.yusp.config.DataDictionary.FEEDBACK_RESULT_AGREE;
-import static cn.com.yusys.yusp.config.DataDictionary.FEEDBACK_RESULT_REJECT;
-
-@Component
-@Slf4j
-public class DistributedScheduledTask {
-
-
-
-    @Autowired
-    private StringRedisTemplate redisTemplate;
-
-
-    @Autowired
-    private AitagTagLogDao aitagTagLogDao;
-
-    @Autowired
-    private AitagTagDailyAggDao aitagTagDailyAggDao;
-
-    /**
-     * 每天凌晨统计昨天打标数据
-     */
-    @Scheduled(cron = "#{@environment.getProperty('application.scheduled.task-cron')}")
-    public void syncDataTask() {
-        log.info("智能标签统计,准备获取redis锁");
-        Boolean taskCron = redisTemplate.opsForValue().setIfAbsent("taskCron", "1", 4, TimeUnit.HOURS);
-        if(Boolean.TRUE.equals(taskCron)){
-            try{
-                log.info("获取redis锁成功,智能标签开始统计");
-                LambdaQueryWrapper<AitagTagDailyAggEntity> queryWrapper = new LambdaQueryWrapper<>();
-                String yesterday = LocalDate.now().minusDays(1).toString();
-                queryWrapper.eq(AitagTagDailyAggEntity::getAggDate,yesterday);
-                int count = aitagTagDailyAggDao.selectCount(queryWrapper);
-                if(count == 0){
-                    executeBusinessLogic(yesterday);
-                }
-                log.info("智能标签统计任务结束");
-            }finally {
-                log.info("删除redis锁信息");
-                redisTemplate.delete("taskCron");
-            }
-        }else{
-            log.warn("智能标签统计任务已有节点执行--本次执行跳过");
-        }
-    }
-
-    private void executeBusinessLogic(String yesterday) {
-        List<AitagTagLogEntity> aitagTagLogEntities = aitagTagLogDao.selectByInsertTime(yesterday);
-        if(aitagTagLogEntities != null){
-            Map<String,Integer> count = new HashMap<>();
-            for (AitagTagLogEntity aitagTagLog:aitagTagLogEntities){
-                String feedback = aitagTagLog.getFeedback();
-                String result = null;
-                if(FEEDBACK_RESULT_REJECT.equals(feedback)){
-                    result = aitagTagLog.getFeedbackResult();
-                }else{
-                    result = aitagTagLog.getResult();
-                }
-                if(StringUtils.isBlank(result)){
-                    continue;
-                }
-                duCount(result, count);
-            }
-            AitagTagDailyAggEntity aitagTagLog = new AitagTagDailyAggEntity();
-            for (String key : count.keySet()){
-                aitagTagLog.setId(StringUtils.getUUID());
-                aitagTagLog.setAggDate(yesterday);
-                aitagTagLog.setTagCount(count.get(key));
-                String[] split = key.split(":");
-                if(split.length==2){
-                    aitagTagLog.setCategoryId(split[1]);
-                }
-                aitagTagLog.setTagNm(split[0]);
-                aitagTagDailyAggDao.insert(aitagTagLog);
-            }
-
-        }
-    }
-
-    private static void duCount(String result, Map<String, Integer> count) {
-        List<TagResultDto> results = JSONArray.parseArray(result, TagResultDto.class);
-        for (int i = 0 ;i<results.size();i++){
-            TagResultDto resultMap = results.get(i);
-            String labe = resultMap.getTag_name()+":"
-                    + resultMap.getCategory_id();
-            if(count.containsKey(labe)){
-                Integer integer = count.get(labe);
-                count.put(labe,integer+1);
-            }else{
-                count.put(labe,1);
-            }
-        }
-    }
-
-
-}

+ 1 - 12
server/yusp-tagging-core/src/main/java/cn/com/yusys/yusp/service/impl/AitagTagLogServiceImpl.java

@@ -1,13 +1,9 @@
 package cn.com.yusys.yusp.service.impl;
 
-import cn.com.yusys.yusp.commons.exception.BizException;
 import cn.com.yusys.yusp.commons.util.date.DateUtils;
 import cn.com.yusys.yusp.config.DataDictionary;
 import cn.com.yusys.yusp.domain.dto.TagLogDto;
-import cn.com.yusys.yusp.domain.dto.TagResultDto;
-import cn.com.yusys.yusp.domain.entity.AitagTagInfoEntity;
 import cn.com.yusys.yusp.domain.vo.*;
-import cn.com.yusys.yusp.mapper.AitagTagDailyAggDao;
 import cn.com.yusys.yusp.mapper.AitagTagInfoDao;
 import cn.com.yusys.yusp.mapper.AitagTagLogDao;
 import cn.com.yusys.yusp.domain.entity.AitagTagLogEntity;
@@ -16,21 +12,16 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.net.URL;
-import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 import static cn.com.yusys.yusp.config.DataDictionary.*;
 
@@ -48,8 +39,6 @@ public class AitagTagLogServiceImpl extends ServiceImpl<AitagTagLogDao, AitagTag
     @Autowired
     private AitagTagInfoDao tagInfoDao;
 
-    @Autowired
-    private AitagTagDailyAggDao aggDao;
 
     @Override
     public DataOverviewVo dataOverview(SmartTaggingResultVo taggingResult) {
@@ -157,7 +146,7 @@ public class AitagTagLogServiceImpl extends ServiceImpl<AitagTagLogDao, AitagTag
 
     @Override
     public List<IconResVo> tagDistStats(TagDistStatsReqVo resultVo) {
-        return aggDao.selectTagDistStats(resultVo);
+        return this.baseMapper.selectTagDistStats(resultVo);
     }
 
 

+ 0 - 37
server/yusp-tagging-core/src/main/resources/mapper/AitagTagDailyAggMapper.xml

@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.com.yusys.yusp.mapper.AitagTagDailyAggDao">
-    <resultMap id="aitagTagDailyAgg" type="cn.com.yusys.yusp.domain.entity.AitagTagDailyAggEntity">
-        <id column="id" jdbcType="VARCHAR" property="id"/>
-        <result column="agg_date" jdbcType="VARCHAR" property="aggDate"/>
-        <result column="category_id" jdbcType="VARCHAR" property="categoryId"/>
-        <result column="tag_nm" jdbcType="VARCHAR" property="tagNm"/>
-        <result column="tag_count" jdbcType="INTEGER" property="tagCount"/>
-    </resultMap>
-
-
-    <select id="selectTagDistStats" resultType="cn.com.yusys.yusp.domain.vo.IconResVo" parameterType="cn.com.yusys.yusp.domain.vo.TagDistStatsReqVo">
-        SELECT
-        tag_nm as stat,
-        tag_count AS val
-        FROM aitag_tag_daily_agg
-        <where>
-            <if test="startTaggingTime != null and startTaggingTime != ''">
-                AND agg_date >= #{startTaggingTime}
-            </if>
-            <if test="endTaggingTime != null and endTaggingTime != ''">
-                AND #{endTaggingTime} >= agg_date
-            </if>
-            <if test="categoryId != null and categoryId != '' ">
-                AND #{categoryId} = category_id
-            </if>
-            <if test="sort == 'ase'">
-                order by tag_count
-            </if>
-            <if test="sort == 'desc' ">
-                order by tag_count desc
-            </if>
-        </where>
-        Limit 6
-    </select>
-</mapper>

+ 31 - 0
server/yusp-tagging-core/src/main/resources/mapper/AitagTagLogMapper.xml

@@ -109,4 +109,35 @@
         AND state in ('2','3')
     </select>
 
+
+    <select id="selectTagDistStats" resultType="cn.com.yusys.yusp.domain.vo.IconResVo" parameterType="cn.com.yusys.yusp.domain.vo.TagDistStatsReqVo">
+        SELECT
+        elem->>'tag_name' AS stat,
+        COUNT(1) AS val
+        FROM
+        aitag_tag_log t,
+        jsonb_array_elements(result) AS elem
+        WHERE
+        t.tag_scope = 0
+        AND t.state in ('2','3')
+        <if test="startTaggingTime != null and startTaggingTime != ''">
+            AND insert_time >= #{startTaggingTime}
+        </if>
+        <if test="endTaggingTime != null and endTaggingTime != ''">
+            AND #{endTaggingTime} >= insert_time
+        </if>
+        <if test="categoryId != null and categoryId != '' ">
+            AND #{categoryId} = category_id
+        </if>
+        GROUP BY
+        elem->>'tag_name'
+        <if test="sort == 'ase'">
+            order by val
+        </if>
+        <if test="sort == 'desc' ">
+            order by val desc
+        </if>
+        Limit 6
+    </select>
+
 </mapper>