diff --git a/api-mapper/src/main/java/com/heyu/api/data/config/RabbitConfig.java b/api-mapper/src/main/java/com/heyu/api/data/config/RabbitConfig.java index 3d0b5e1..45647e7 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/config/RabbitConfig.java +++ b/api-mapper/src/main/java/com/heyu/api/data/config/RabbitConfig.java @@ -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() { diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvAllDataDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvAllDataDao.java index a28fe1f..dcf1075 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvAllDataDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvAllDataDao.java @@ -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 { @@ -33,4 +39,8 @@ public interface VvAllDataDao extends BaseMapper { int deleteVvAllDataById(@Param("id")Long id); + @LIMIT + VvAllDataEntity selectVvAllDataByRunIdRunDate(Long runId, String runDate); + + List> selectSQL(String sql); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCreateDataConfigDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCreateDataConfigDao.java index dd97ae9..f34d26b 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCreateDataConfigDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvCreateDataConfigDao.java @@ -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 { @@ -33,4 +36,5 @@ public interface VvCreateDataConfigDao extends BaseMapper selectVvCreateDataConfigByAll(); } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/dto/VvCreateDataConfigDTO.java b/api-mapper/src/main/java/com/heyu/api/data/dto/VvCreateDataConfigDTO.java new file mode 100644 index 0000000..7e91cd7 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/dto/VvCreateDataConfigDTO.java @@ -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 ; + + + +} + diff --git a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvAllDataEntity.java b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvAllDataEntity.java index 00fbeab..0e1c008 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvAllDataEntity.java +++ b/api-mapper/src/main/java/com/heyu/api/data/entity/vv/VvAllDataEntity.java @@ -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 + "}"; } } \ No newline at end of file diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/ExpressionParse.java b/api-mapper/src/main/java/com/heyu/api/data/utils/ExpressionParse.java index d82a592..d1c1ae0 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/ExpressionParse.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/ExpressionParse.java @@ -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); } diff --git a/api-mapper/src/main/resources/mapper/vv/VvAllDataDao.xml b/api-mapper/src/main/resources/mapper/vv/VvAllDataDao.xml index 50d1f5d..aba75b8 100644 --- a/api-mapper/src/main/resources/mapper/vv/VvAllDataDao.xml +++ b/api-mapper/src/main/resources/mapper/vv/VvAllDataDao.xml @@ -2,5 +2,8 @@ + diff --git a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java index 4220e2c..0a14e71 100644 --- a/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java +++ b/api-mapper/src/test/java/com/test/xxx/MysqlMain_update.java @@ -49,7 +49,7 @@ public class MysqlMain_update { List list = new ArrayList(); - String a = "vv_request_log"; + String a = "vv_all_data"; for (String s : a.split(",")) { list.add(new TablesBean(s)); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java new file mode 100644 index 0000000..3366744 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppTestController.java @@ -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 paramMap = JSONObject.parseObject(paramsConfig, Map.class); + for (Map.Entry entry : paramMap.entrySet()) { + valuesMap.put(entry.getKey(), ExpressionParse.getValue(entry.getValue() + "")); + } + StrSubstitutor sub = new StrSubstitutor(valuesMap); + String resolvedString = sub.replace(configSql); + + List> mapList = vvAllDataDao.selectSQL(resolvedString); + if (!CollectionUtils.isEmpty(mapList)) { + for (Map objectMap : mapList) { + + VvAllDataEntity vvAllDataEntity = JSONObject.parseObject(JSON.toJSONString(objectMap), VvAllDataEntity.class); + vvAllDataEntity.setCreateTimestamp(System.currentTimeMillis()); + vvAllDataDao.insert(vvAllDataEntity); + } + } + + return R.ok(); + + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/listener/CreateDataQueueSimpleRabbitListener.java b/api-web/api-interface/src/main/java/com/heyu/api/listener/CreateDataQueueSimpleRabbitListener.java new file mode 100644 index 0000000..4928219 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/listener/CreateDataQueueSimpleRabbitListener.java @@ -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 paramMap = JSONObject.parseObject(paramsConfig, Map.class); + for(Map.Entry entry : paramMap.entrySet()){ + valuesMap.put(entry.getKey(), ExpressionParse.getValue(entry.getValue() + "")); + } + StrSubstitutor sub = new StrSubstitutor(valuesMap); + String resolvedString = sub.replace(configSql); + List> mapList = vvAllDataDao.selectSQL(resolvedString); + if (!CollectionUtils.isEmpty(mapList)) { + for (Map 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); + } + } + } +} \ No newline at end of file diff --git a/api-web/api-interface/src/main/java/com/heyu/api/schedule/CronTriggerUtils.java b/api-web/api-interface/src/main/java/com/heyu/api/schedule/CronTriggerUtils.java index a6285cd..44308c9 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/schedule/CronTriggerUtils.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/schedule/CronTriggerUtils.java @@ -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"); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/schedule/impl/TestJob.java b/api-web/api-interface/src/main/java/com/heyu/api/schedule/impl/TestJob.java index 2dd8a27..3caa5c2 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/schedule/impl/TestJob.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/schedule/impl/TestJob.java @@ -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 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)); + } + } } } diff --git a/api-web/api-interface/src/main/resources/bootstrap.yml b/api-web/api-interface/src/main/resources/bootstrap.yml index 05d6049..8bb8c1b 100644 --- a/api-web/api-interface/src/main/resources/bootstrap.yml +++ b/api-web/api-interface/src/main/resources/bootstrap.yml @@ -58,6 +58,7 @@ eb: accountLogName: ACCOUNT_LOG_NAME postCodeData: post_code_data urlStatisticQueue: URL_STATISTIC_QUEUE + createDataQueue: CREATE_DATA_QUEUE tencent: