提交修改

This commit is contained in:
quyixiao 2025-10-20 21:15:53 +08:00
parent 2e190a8edd
commit 7c2333d269
13 changed files with 273 additions and 10 deletions

View File

@ -48,6 +48,14 @@ public class RabbitConfig {
@Bean
public Queue createDataQueue(@Value("${eb.config.rabbitQueue.createDataQueue}") String queueName) {
return new Queue(queueName);
}
@Bean(name = "accountAmountQueueSimpleRabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory accountAmountQueueSimpleRabbitListenerContainerFactory() {

View File

@ -7,10 +7,16 @@ package com.heyu.api.data.dao.vv;
* @author quyixiao
* @since 2025-10-20
*/
import com.heyu.api.data.entity.vv.VvAllDataEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.heyu.api.data.entity.vv.VvAllDataEntity;
import com.lz.mybatis.plugin.annotations.LIMIT;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface VvAllDataDao extends BaseMapper<VvAllDataEntity> {
@ -33,4 +39,8 @@ public interface VvAllDataDao extends BaseMapper<VvAllDataEntity> {
int deleteVvAllDataById(@Param("id")Long id);
@LIMIT
VvAllDataEntity selectVvAllDataByRunIdRunDate(Long runId, String runDate);
List<Map<String,Object>> selectSQL(String sql);
}

View File

@ -11,6 +11,9 @@ import com.heyu.api.data.entity.vv.VvCreateDataConfigEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface VvCreateDataConfigDao extends BaseMapper<VvCreateDataConfigEntity> {
@ -33,4 +36,5 @@ public interface VvCreateDataConfigDao extends BaseMapper<VvCreateDataConfigEnti
int deleteVvCreateDataConfigById(@Param("id")Long id);
List<VvCreateDataConfigEntity> selectVvCreateDataConfigByAll();
}

View File

@ -0,0 +1,14 @@
package com.heyu.api.data.dto;
import com.heyu.api.data.entity.vv.VvCreateDataConfigEntity;
import lombok.Data;
@Data
public class VvCreateDataConfigDTO extends VvCreateDataConfigEntity {
private String runDate ;
}

View File

@ -1,12 +1,11 @@
package com.heyu.api.data.entity.vv;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.lz.mybatis.plugin.annotations.AS;
import java.math.BigDecimal;
import java.util.Date;import java.util.Date;
import java.util.Date;
/**
*所有数据表
* @author quyixiao
@ -32,6 +31,8 @@ private static final long serialVersionUID = 1L;
public final static String x_title = CLASS_NAME + "x_title"; // x 标题
public final static String y_title = CLASS_NAME + "y_title"; // y 标题
public final static String create_timestamp = CLASS_NAME + "create_timestamp"; // 创建日期
public final static String run_date = CLASS_NAME + "run_date"; // 运行日期
public final static String run_id = CLASS_NAME + "run_id"; // 运行id
//
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ -46,7 +47,7 @@ private static final long serialVersionUID = 1L;
//用户名
private String x;
//y值
private BigDecimal y;
private double y;
//头部标题
private String headerTitle;
//x 标题
@ -55,6 +56,10 @@ private static final long serialVersionUID = 1L;
private String yTitle;
//创建日期
private Long createTimestamp;
//运行日期
private String runDate;
//运行id
private String runId;
/**
*
* @return
@ -149,14 +154,14 @@ private static final long serialVersionUID = 1L;
* y值
* @return
*/
public BigDecimal getY() {
public double getY() {
return y;
}
/**
* y值
* @param y
*/
public void setY(BigDecimal y) {
public void setY(double y) {
this.y = y;
}
@ -220,6 +225,36 @@ private static final long serialVersionUID = 1L;
this.createTimestamp = createTimestamp;
}
/**
* 运行日期
* @return
*/
public String getRunDate() {
return runDate;
}
/**
* 运行日期
* @param runDate
*/
public void setRunDate(String runDate) {
this.runDate = runDate;
}
/**
* 运行id
* @return
*/
public String getRunId() {
return runId;
}
/**
* 运行id
* @param runId
*/
public void setRunId(String runId) {
this.runId = runId;
}
@Override
public String toString() {
return "VvAllDataEntity{" +
@ -234,6 +269,8 @@ private static final long serialVersionUID = 1L;
",xTitle=" + xTitle +
",yTitle=" + yTitle +
",createTimestamp=" + createTimestamp +
",runDate=" + runDate +
",runId=" + runId +
"}";
}
}

View File

@ -71,9 +71,15 @@ public class ExpressionParse {
public static void main(String[] args) throws Exception {
String a = "com.heyu.api.data.utils.SqlDateParse.addDaysReturnTimestamp('yyyy-MM-dd 00:00:00',-1)";
String b = "com.heyu.api.data.utils.SqlDateParse.addDaysReturnTimestamp('yyyy-MM-dd 23:59:59',-1)";
Long aTime= getValue(a);
Long bTime = getValue(b);
System.out.println(aTime);
System.out.println(bTime);
}

View File

@ -2,5 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.heyu.api.data.dao.vv.VvAllDataDao">
<select id="selectSQL" resultType="java.util.Map">
${sql}
</select>
</mapper>

View File

@ -49,7 +49,7 @@ public class MysqlMain_update {
List<TablesBean> list = new ArrayList<TablesBean>();
String a = "vv_request_log";
String a = "vv_all_data";
for (String s : a.split(",")) {
list.add(new TablesBean(s));
}

View File

@ -0,0 +1,71 @@
package com.heyu.api.controller.vv;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.heyu.api.alibaba.request.vv.AppOrderRequest;
import com.heyu.api.common.annotation.Describe;
import com.heyu.api.data.dao.vv.VvAllDataDao;
import com.heyu.api.data.dao.vv.VvCreateDataConfigDao;
import com.heyu.api.data.entity.vv.VvAllDataEntity;
import com.heyu.api.data.entity.vv.VvCreateDataConfigEntity;
import com.heyu.api.data.utils.ExpressionParse;
import com.heyu.api.data.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.text.StrSubstitutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/app/test")
public class AppTestController {
@Autowired
private VvAllDataDao vvAllDataDao;
@Autowired
private VvCreateDataConfigDao vvCreateDataConfigDao;
// /app/test/insert
@Describe("测试数据插入")
@RequestMapping("/insert")
public R list(@RequestBody AppOrderRequest vvOrderRequest) {
VvCreateDataConfigEntity vvCreateDataConfigDTO = vvCreateDataConfigDao.selectVvCreateDataConfigById(16L);
String configSql = vvCreateDataConfigDTO.getSqlConfig();
String paramsConfig = vvCreateDataConfigDTO.getParamsConfig();
Map valuesMap = new HashMap();
Map<String, Object> paramMap = JSONObject.parseObject(paramsConfig, Map.class);
for (Map.Entry<String, Object> entry : paramMap.entrySet()) {
valuesMap.put(entry.getKey(), ExpressionParse.getValue(entry.getValue() + ""));
}
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(configSql);
List<Map<String, Object>> mapList = vvAllDataDao.selectSQL(resolvedString);
if (!CollectionUtils.isEmpty(mapList)) {
for (Map<String, Object> objectMap : mapList) {
VvAllDataEntity vvAllDataEntity = JSONObject.parseObject(JSON.toJSONString(objectMap), VvAllDataEntity.class);
vvAllDataEntity.setCreateTimestamp(System.currentTimeMillis());
vvAllDataDao.insert(vvAllDataEntity);
}
}
return R.ok();
}
}

View File

@ -0,0 +1,78 @@
package com.heyu.api.listener;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.heyu.api.data.dao.vv.VvAllDataDao;
import com.heyu.api.data.dto.VvCreateDataConfigDTO;
import com.heyu.api.data.entity.vv.VvAllDataEntity;
import com.heyu.api.data.utils.ExpressionParse;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.text.StrSubstitutor;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.support.AmqpHeaders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class CreateDataQueueSimpleRabbitListener {
@Value("${eb.config.rabbitQueue.createDataQueue}")
private String createDataQueue;
@Autowired
private VvAllDataDao vvAllDataDao;
@RabbitHandler
@RabbitListener(queues = "#{createDataQueue.name}", containerFactory = "accountAmountQueueSimpleRabbitListenerContainerFactory")
public void consumeMessage(@Payload String message, @Header(AmqpHeaders.DELIVERY_TAG) long delivertTag, Channel channel) {
try {
VvCreateDataConfigDTO vvCreateDataConfigDTO = JSONObject.parseObject(message, VvCreateDataConfigDTO.class);
VvAllDataEntity vvAllData = vvAllDataDao.selectVvAllDataByRunIdRunDate(vvCreateDataConfigDTO.getId(), vvCreateDataConfigDTO.getRunDate());
if (vvAllData != null) {
return;
}
String configSql = vvCreateDataConfigDTO.getSqlConfig();
String paramsConfig = vvCreateDataConfigDTO.getParamsConfig();
Map valuesMap = new HashMap();
Map<String,Object> paramMap = JSONObject.parseObject(paramsConfig, Map.class);
for(Map.Entry<String,Object> entry : paramMap.entrySet()){
valuesMap.put(entry.getKey(), ExpressionParse.getValue(entry.getValue() + ""));
}
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(configSql);
List<Map<String, Object>> mapList = vvAllDataDao.selectSQL(resolvedString);
if (!CollectionUtils.isEmpty(mapList)) {
for (Map<String, Object> objectMap : mapList) {
VvAllDataEntity vvAllDataEntity = JSONObject.parseObject(JSON.toJSONString(objectMap), VvAllDataEntity.class);
vvAllDataEntity.setCreateTimestamp(System.currentTimeMillis());
vvAllDataEntity.setRunId(vvCreateDataConfigDTO.getId()+"");
vvAllDataEntity.setRunDate(vvCreateDataConfigDTO.getRunDate());
vvAllDataDao.insert(vvAllDataEntity);
}
}
} catch (Exception e) {
log.error("urlStatisticQueue handle", e);
} finally {
try {
log.info("urlStatisticQueue消息{},消息确认完成", message);
channel.basicAck(delivertTag, true);
} catch (IOException e) {
log.error("urlStatisticQueue消息确认异常", e);
}
}
}
}

View File

@ -110,7 +110,7 @@ public class CronTriggerUtils {
public boolean isRun(Date time, String cronExpression) {
public static boolean isRun(Date time, String cronExpression) {
try {
Date dateStr = DateUtils.formateDate(time, "yyyy-MM-dd HH:mm:00");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

View File

@ -1,15 +1,46 @@
package com.heyu.api.schedule.impl;
import com.alibaba.fastjson.JSON;
import com.heyu.api.data.dao.vv.VvCreateDataConfigDao;
import com.heyu.api.data.dto.VvCreateDataConfigDTO;
import com.heyu.api.data.entity.vv.VvCreateDataConfigEntity;
import com.heyu.api.schedule.CronTriggerUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
@Component("testJob")
@Slf4j
public class TestJob {
@Autowired
private VvCreateDataConfigDao createDataConfigDao;
@Value("${eb.config.rabbitQueue.createDataQueue}")
private String createDataQueue;
@Autowired
private RabbitTemplate rabbitTemplate;
public void test() {
System.out.println("test");
List<VvCreateDataConfigEntity> vvCreateDataConfigEntityList = createDataConfigDao.selectVvCreateDataConfigByAll();
Date now = new Date();
for (VvCreateDataConfigEntity vvCreateDataConfigEntity : vvCreateDataConfigEntityList) {
if (CronTriggerUtils.isRun(now, vvCreateDataConfigEntity.getCronExp())) {
VvCreateDataConfigDTO dto = new VvCreateDataConfigDTO();
BeanUtils.copyProperties(vvCreateDataConfigEntity, dto);
dto.setRunDate(CronTriggerUtils.cronCurrentDate(now, vvCreateDataConfigEntity.getCronExp()));
rabbitTemplate.convertAndSend(createDataQueue, JSON.toJSONString(dto));
}
}
}
}

View File

@ -58,6 +58,7 @@ eb:
accountLogName: ACCOUNT_LOG_NAME
postCodeData: post_code_data
urlStatisticQueue: URL_STATISTIC_QUEUE
createDataQueue: CREATE_DATA_QUEUE
tencent: