andy 9 months ago
parent
commit
8595aaba01

+ 36 - 0
mainFactory/.gitignore

@@ -0,0 +1,36 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### other ###
+.jlsp
+.arts

+ 16 - 0
mainFactory/pom.xml

@@ -141,11 +141,27 @@
             <artifactId>nashorn-core</artifactId>
             <version>15.4</version>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-jms</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.ibm.mq</groupId>
+            <artifactId>com.ibm.mq.jakarta.client</artifactId>
+            <version>9.3.4.1</version>
+        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>cn.hutool</groupId>-->
 <!--            <artifactId>hutool-all</artifactId>-->
 <!--            <version>5.8.18</version>-->
 <!--        </dependency>-->
+        <dependency>
+            <groupId>cn.com.kingbase</groupId>
+            <artifactId>kingbase8</artifactId>
+            <version>8.6.0</version>
+            <scope>runtime</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 7 - 1
mainFactory/src/main/java/org/bfkj/application/AuthApplicationImpl.java

@@ -7,6 +7,8 @@ import org.bfkj.config.ObjectMap;
 import org.bfkj.utils.*;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -62,7 +64,11 @@ public class AuthApplicationImpl {
         //创建当前请求的令牌
         Map<String, Object> appInfoData = appData.get(0); //apptoken 有效时长,用户有效存活时长
         String app_id = appInfoData.get("app_id").toString();
-        Map<String, Object> insertReturnKeyValues = myDbHelper.updateByCondition("insert into t_application_login(app_id,app_token,app_effective,session_id,request_time) values(?,?," + (Objects.nonNull(appInfoData.get("app_token_effective")) ? "" + appInfoData.get("app_token_effective") + " HOUR)" : null) + " ,?,?)", null, app_id, appTokenOnly, serviceOnlyID, MapTools.dateTostr(new Date()));
+        String app_effective_str = null;
+        if(Objects.nonNull(appInfoData.get("app_token_effective"))){
+            app_effective_str=  LocalDateTime.now().plusHours(Long.parseLong(appInfoData.get("app_token_effective").toString())).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        }
+        Map<String, Object> insertReturnKeyValues = myDbHelper.updateByCondition("insert into t_application_login(app_id,app_token,app_effective,session_id,request_time) values(?,?,?,?,?)", null, app_id, appTokenOnly,app_effective_str, serviceOnlyID, MapTools.dateTostr(new Date()));
         if (Objects.isNull(insertReturnKeyValues) || insertReturnKeyValues.get("code").equals("-1")) {
             return processFail("创建应用Token异常");
         }

+ 2 - 5
mainFactory/src/main/java/org/bfkj/application/DataProcess.java

@@ -3,10 +3,7 @@ package org.bfkj.application;
 
 import org.bfkj.config.AppConfig;
 import org.bfkj.config.ObjectMap;
-import org.bfkj.utils.LogUtils;
-import org.bfkj.utils.MapTools;
-import org.bfkj.utils.MyDbHelper;
-import org.bfkj.utils.ScriptEnginePro;
+import org.bfkj.utils.*;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -474,7 +471,7 @@ public class DataProcess {//数据处理对象
 //                returnData = MapTools.XMLListToListMap(returnData);//减少JAVA的动态调用,目前主要就是航班报文,BSMBPM等订阅的是String,所以不会进入这里
 //            }
                 returnData = "Map".equals(dataType) && !(returnData instanceof Map<?, ?>) ? null//是不是不妥
-                        : ("String".equals(dataType) ? returnData.toString() : ("Boolean".equals(dataType) ? returnData.toString().equals("true") : ("JSONStr".equals(dataType) ? MapTools.objToJSONStr(returnData) : returnData)));
+                        : ("String".equals(dataType) ? MapTools.objToJSONStr(returnData) : ("Boolean".equals(dataType) ? returnData.toString().equals("true") : ("JSONStr".equals(dataType) ? MapTools.objToJSONStr(returnData) : returnData)));
             }
             return returnData;
         } catch (Exception e) {

+ 25 - 0
mainFactory/src/main/java/org/bfkj/config/SpringContextBeans.java

@@ -0,0 +1,25 @@
+package org.bfkj.config;
+
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+@Component
+public class SpringContextBeans implements ApplicationContextAware {
+
+    private static ApplicationContext applicationContext;
+
+    @Override
+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+        SpringContextBeans.applicationContext = applicationContext;
+    }
+//    public static ApplicationContext getApplicationContext() {
+//        return applicationContext;
+//    }
+
+    @SuppressWarnings("unchecked")
+    public static <T> T getBean(String beanName) throws BeansException {
+        return (T) applicationContext.getBean(beanName);
+    }
+}

+ 301 - 0
mainFactory/src/main/java/org/bfkj/protocol/IBMMQ.java

@@ -0,0 +1,301 @@
+package org.bfkj.protocol;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ibm.mq.jakarta.jms.MQQueueConnectionFactory;
+import jakarta.jms.ConnectionFactory;
+import jakarta.jms.JMSException;
+import jakarta.jms.Message;
+import jakarta.jms.TextMessage;
+import org.springframework.jms.connection.CachingConnectionFactory;
+import org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
+import org.springframework.jms.core.JmsTemplate;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+public class IBMMQ {
+
+	private JmsTemplate jmsTemplate = null;
+
+	public ObjectMapper objectMapper = new ObjectMapper();
+
+	public List<String> receptionMessageByConnection(String connectionStr, String queueName, String receiveTimeout, String pollSize, String retry) throws JMSException, JsonProcessingException {
+
+		final Map<String,Object> config = objectMapper.readValue(connectionStr, Map.class);
+
+		return receptionMessage(config.get("host").toString(), Long.parseLong(config.get("port").toString()), config.get("channel").toString(), config.get("queueManager").toString(), queueName, Long.parseLong(config.get("ccsid").toString()), Optional.ofNullable(config.get("username")).map(Object::toString).orElse(null), Optional.ofNullable(config.get("password")).map(Object::toString).orElse(null), Long.parseLong(receiveTimeout), Long.parseLong(pollSize), Long.parseLong(retry));
+
+	}
+
+	/**
+	 * 从指定队列接收消息的函数。
+	 *
+	 * @param host           主机地址。
+	 * @param port           端口号。
+	 * @param channel        频道或连接标识。
+	 * @param queueManager   队列管理器名称。
+	 * @param queueName      需要接收消息的队列名称。
+	 * @param ccsid          编码集ID。
+	 * @param username       连接认证的用户名。
+	 * @param password       连接认证的密码。
+	 * @param receiveTimeout 接收消息的超时时间。
+	 * @param pollSize       每次轮询的最大消息数。如果为0,则默认为100。
+	 * @param retry          接收消息失败后的最大重试次数。
+	 *
+	 * @return 返回接收到的消息列表。
+	 *
+	 * @throws JMSException 如果JMS操作失败,则抛出此异常。
+	 */
+	public List<String> receptionMessage(
+			String host, Long port, String channel, String queueManager, String queueName, Long ccsid, String username, String password, Long receiveTimeout, Long pollSize, Long retry) throws JMSException {
+		// 初始化JmsTemplate用于消息接收
+		initJmsOperations(host, port.intValue(), ccsid.intValue(), queueManager, channel, username, password);
+
+		// 设置接收超时时间
+		jmsTemplate.setReceiveTimeout(receiveTimeout);
+
+		// 设置最大轮询消息数
+		long maxSize = 100; // 默认值
+		if ( pollSize > 0 ) {
+			maxSize = pollSize;
+		}
+
+		// 初始化最大重试次数
+		int maxRetry = 0;
+		List<String> result = new ArrayList<>();
+
+		// 不断尝试接收消息,直到满足退出条件
+		while ( retry>= maxRetry ) {
+			try {
+				// 尝试从指定队列接收消息
+				Message message = jmsTemplate.receive(queueName);
+				// 检查是否需要退出循环
+				if ( checkIsBreak(message, result, maxSize) ) break;
+				maxRetry++;
+			} catch ( Exception e ) {
+				// 捕获异常,增加重试计数
+				maxRetry++;
+				// 当重试次数超过设定值时,退出循环
+				if ( maxRetry > retry ) {
+					// 清理JmsTemplate资源并返回当前结果
+					if ( jmsTemplate != null ) {
+						jmsTemplate = null;
+					}
+					return result;
+				}
+			}
+		}
+		return result; // 返回最终接收的消息列表
+	}
+
+	/**
+	 * 发送单个消息到指定的队列。此方法封装了消息的发送过程,方便发送单个消息。
+	 *
+	 * @param host         主机地址,消息将从该主机发送。
+	 * @param port         端口号,用于指定主机上的通信端口。
+	 * @param channel      通道名称,用于连接到消息队列管理器。
+	 * @param queueManager 队列管理器名称,负责管理消息队列。
+	 * @param queueName    队列名称,指定消息将被发送到的队列。
+	 * @param ccsid        CCSID(Character Code Set Identifier),指定字符编码集。
+	 * @param username     用户名,用于认证发送消息的用户。
+	 * @param password     密码,与用户名一起用于认证。
+	 * @param data         要发送的数据,该方法支持任意类型的数据对象。
+	 *
+	 * @throws JMSException 如果发送消息过程中发生任何JMS异常,则抛出。
+	 */
+	public void sendSingletonMessage(
+			String host, Long port, String channel, String queueManager, String queueName, Long ccsid, String username, String password,
+			String data
+	) throws JMSException {
+		// 将数据封装为单元素列表,并调用sendMessage方法发送消息
+		sendMessage(host, port, channel, queueManager, queueName, ccsid, username, password, List.of(data));
+	}
+
+	/**
+	 * 发送消息到指定的队列
+	 *
+	 * @param host         主机地址
+	 * @param port         端口号
+	 * @param channel      频道或连接标识
+	 * @param queueManager 队列管理器名称
+	 * @param queueName    队列名称
+	 * @param ccsid        编码集ID
+	 * @param username     用户名,用于认证
+	 * @param password     密码,用于认证
+	 * @param data         要发送的消息数据列表
+	 *
+	 * @throws JMSException 如果发送消息过程中出现JMS异常
+	 */
+	public void sendMessage(
+			String host, Long port, String channel, String queueManager, String queueName, Long ccsid, String username, String password,
+			List<String> data
+	) throws JMSException {
+
+		// 初始化JMS模板,配置连接信息
+		initJmsOperations(host, port.intValue(), ccsid.intValue(), queueManager, channel, username, password);
+
+		try {
+			// 遍历数据列表,发送每条消息
+			for ( String it : data ) {
+				execSend(it, queueName);
+			}
+
+		} catch ( Exception e ) {
+			// 若开启调试模式,打印异常堆栈
+			e.printStackTrace();
+			// 出现异常时,清理jmsTemplate对象
+			jmsTemplate = null;
+		}
+	}
+
+	/**
+	 * 检查是否应该中断处理消息的循环。
+	 *
+	 * @param message 需要检查的消息对象,如果为null表示找到终止条件。
+	 * @param result  存储处理结果的列表,每处理一个消息,将其文本添加到列表中。
+	 * @param maxSize 当结果列表的大小达到或超过此值时,视为找到终止条件。
+	 *
+	 * @return 如果未找到终止条件,返回true;反之,返回false。
+	 *
+	 * @throws JMSException 如果处理消息时发生错误。
+	 */
+	private static boolean checkIsBreak(Message message, List<String> result, long maxSize) throws JMSException {
+		// 判断消息是否为null,若为null则认为找到了终止条件
+		boolean found = message == null;
+		// 如果消息是TextMessage类型,提取并存储其文本内容
+		if ( message instanceof TextMessage msg ) {
+			String text = msg.getText();
+			result.add(text);
+		}
+		// 如果结果列表的大小达到或超过最大值,认为找到了终止条件
+		if ( result.size() >= maxSize ) {
+			found = true;
+		}
+		// 返回相反的逻辑,即未找到终止条件为true,找到为false
+		return ! found;
+	}
+
+	/**
+	 * 使用JmsTemplate发送消息到指定的队列。
+	 *
+	 * @param data      要发送的数据,可以是任意类型,最终会被转换为字符串格式发送。
+	 * @param queueName 队列名称,指定消息要发送到的目标队列。
+	 */
+	private void execSend(
+			String data,
+			String queueName
+	) {
+		// 将数据转换为字符串格式
+		// 使用JmsTemplate发送消息
+		jmsTemplate.convertAndSend(queueName, data);
+	}
+
+	/**
+	 * 创建一个 MQ 队列连接工厂实例。
+	 *
+	 * @param host         主机名,用于指定 MQ 服务器的地址。
+	 * @param port         端口号,用于指定 MQ 服务器监听的端口。
+	 * @param ccsid        CCSID(Character Code Set Identifier),用于指定字符集。
+	 * @param queueManager 队列管理器名,标识一个 MQ 队列管理器。
+	 * @param channel      通道名,用于客户端和队列管理器之间的通信。
+	 *
+	 * @return 初始化后的 MQQueueConnectionFactory 实例。
+	 *
+	 * @throws JMSException 如果创建连接工厂时发生错误。
+	 */
+	private MQQueueConnectionFactory createMqQueueConnectionFactory(String host, int port, int ccsid, String queueManager, String channel) throws JMSException {
+		MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
+		// 设置连接工厂的主机名
+		mqQueueConnectionFactory.setHostName(host);
+		// 设置连接工厂的端口
+		mqQueueConnectionFactory.setPort(port);
+		// 设置连接工厂的字符集
+		mqQueueConnectionFactory.setCCSID(ccsid);
+		// 设置连接工厂的队列管理器名
+		mqQueueConnectionFactory.setQueueManager(queueManager);
+		// 设置连接工厂的通道名
+		mqQueueConnectionFactory.setChannel(channel);
+		// 设置连接工厂的传输类型为 TCP
+		mqQueueConnectionFactory.setTransportType(1);
+		return mqQueueConnectionFactory;
+	}
+
+	/**
+	 * 创建并配置一个JmsTemplate实例。
+	 *
+	 * @param factory CachingConnectionFactory的实例,用于设置JmsTemplate的消息工厂。
+	 *
+	 * @return 配置好的JmsTemplate实例,可用于发送消息。
+	 */
+	private JmsTemplate createJmsTemplate(CachingConnectionFactory factory) {
+		JmsTemplate template = new JmsTemplate();
+		template.setConnectionFactory(factory); // 设置消息工厂
+		return template;
+	}
+
+	/**
+	 * 创建一个 CachingConnectionFactory 实例。 此方法通过将一个给定的 ConnectionFactory 设置为缓存工厂的目标ConnectionFactory来配置
+	 * CachingConnectionFactory。
+	 *
+	 * @param factory 用于创建缓存工厂的目标ConnectionFactory。
+	 *
+	 * @return 配置好的 CachingConnectionFactory 实例。
+	 */
+	private CachingConnectionFactory createCachingConnectionFactory(ConnectionFactory factory) {
+		CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
+		// 设置目标ConnectionFactory,以便CachingConnectionFactory可以使用它来创建连接
+		cachingConnectionFactory.setTargetConnectionFactory(factory);
+		return cachingConnectionFactory;
+	}
+
+	/**
+	 * 创建并配置一个 UserCredentialsConnectionFactoryAdapter 实例。
+	 * 这个方法通过提供用户名、密码和一个ConnectionFactory,来创建一个已经设置了认证信息的ConnectionFactory适配器。
+	 *
+	 * @param username 将要用于认证的用户名。
+	 * @param password 将要用于认证的密码。
+	 * @param factory  是底层的ConnectionFactory,认证通过后将使用这个ConnectionFactory创建连接。
+	 *
+	 * @return 配置好的 UserCredentialsConnectionFactoryAdapter 实例,可用于进一步的使用。
+	 */
+	private UserCredentialsConnectionFactoryAdapter createAdapter(String username, String password, ConnectionFactory factory) {
+		UserCredentialsConnectionFactoryAdapter adapter = new UserCredentialsConnectionFactoryAdapter();
+		adapter.setUsername(username); // 设置认证使用的用户名
+		adapter.setPassword(password); // 设置认证使用的密码
+		adapter.setTargetConnectionFactory(factory); // 设置目标ConnectionFactory
+		return adapter;
+	}
+
+	/**
+	 * 获取一个配置好的JmsTemplate实例,用于与MQ队列进行交互。
+	 *
+	 * @param host         MQ服务器的主机名。
+	 * @param port         MQ服务器的端口号。
+	 * @param ccsid        MQ服务器的字符集编码。
+	 * @param queueManager MQ队列管理器的名称。
+	 * @param channel      与MQ队列管理器通信的通道名称。
+	 * @param username     连接MQ时的用户名。
+	 * @param password     连接MQ时的密码。
+	 *
+	 * @throws JMSException 如果在创建JMS连接工厂或模板时发生错误。
+	 */
+	private void initJmsOperations(String host, int port, int ccsid, String queueManager, String channel, String username, String password) throws JMSException {
+		// 如果jmsTemplate尚未初始化,则进行初始化
+		if ( jmsTemplate == null ) {
+			// 创建MQ队列连接工厂
+			MQQueueConnectionFactory mqQueueConnectionFactory = createMqQueueConnectionFactory(host, port, ccsid, queueManager, channel);
+			// 使用用户名和密码适配器包装MQ队列连接工厂
+			UserCredentialsConnectionFactoryAdapter adapter = createAdapter(username, password, mqQueueConnectionFactory);
+			// 创建缓存连接工厂,以提高性能
+			CachingConnectionFactory cachingConnectionFactory = createCachingConnectionFactory(adapter);
+
+			// 创建并配置JmsTemplate实例
+			jmsTemplate = createJmsTemplate(cachingConnectionFactory);
+
+		}
+
+	}
+}

+ 153 - 0
mainFactory/src/main/java/org/bfkj/protocol/MyFtp.java

@@ -0,0 +1,153 @@
+//package org.bfkj.protocol;
+//
+//import org.apache.commons.net.ftp.FTPClient;
+//import org.apache.kafka.clients.consumer.ConsumerRecord;
+//import org.apache.kafka.clients.consumer.ConsumerRecords;
+//import org.apache.kafka.clients.consumer.KafkaConsumer;
+//import org.apache.kafka.clients.producer.KafkaProducer;
+//import org.apache.kafka.clients.producer.ProducerRecord;
+//
+//import org.bfkj.resp.Result;
+//import org.bfkj.utils.MapTools;
+//
+//import java.time.Duration;
+//import java.util.*;
+//
+//public class MyFtp {
+//
+//    private static final int BUFFER_SIZE = 4096;
+//
+//
+//    private KafkaConsumer<String,Object> consumer;
+//    private KafkaProducer<String,Object> producer;
+//
+//    /**
+//     * 采集kafka数据
+//     *
+//     * @param data 连接参数信息
+//     * @return 读取内容信息
+//     */
+//    public Result<List<Map<String,Object>>> readMethod(Map<String, Object> data) {
+//        Object sourceObjectName = data.get("sourceObjectName");
+//        if (Objects.isNull(sourceObjectName)) {
+//            return Result.fail("队列为空: " + data);
+//        }
+//        Object connectConfig = data.get("connectConfig");
+////        Map<String, Object> connectConfigMaps = MapTools.stringToMap(connectConfig.toString());
+//        Map<String, Object> connectConfigMaps;
+//        if (connectConfig instanceof Map) {
+//            connectConfigMaps = (Map<String, Object>) connectConfig;
+//        } else {
+//            connectConfigMaps = MapTools.mapStrToMap_connect(connectConfig.toString());
+//        }
+//        if (!connectConfigMaps.containsKey("group.id")) {
+//            connectConfigMaps.put("group.id", "group_id_" + (String.format("%s", data.get("library_id").toString())));
+//        }
+//        connectConfigMaps.put("max.poll.records", 1);
+//        connectConfigMaps.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+//        connectConfigMaps.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+//
+//        if (Objects.isNull(consumer)) {
+//            consumer = new KafkaConsumer<>(connectConfigMaps);
+//            consumer.subscribe(Collections.singleton(sourceObjectName.toString()));
+//        }
+//        ConsumerRecords<String, Object> records = consumer.poll(Duration.ofSeconds(1));
+//        int count = records.count();
+//        String message = "";
+//        if (count > 0) {
+//            for (ConsumerRecord<String, Object> record : records.records(sourceObjectName.toString())) {
+//                message = record.value().toString();
+//                break;
+//            }
+//        }
+//
+//        Map<String, Object> tempMap = new HashMap<>();
+//        if (Strings.isNotBlank(message)) {
+//            tempMap.put("dataContent", message);
+//        }
+//        return Result.success(new ArrayList<Map<String, Object>>() {{
+//            add(tempMap);
+//        }});
+//    }
+//
+//    /**
+//     * 数据发送到kafka
+//     *
+//     * @param sendData 发送数据,及连接信息
+//     * @return 发送结果信息
+//     */
+//    public Result<List<Map<String,Object>>> sendMethod(Map<String, Object> sendData) {
+//        Object sourceObjectName = sendData.get("sourceObjectName");
+//        if (Objects.isNull(sourceObjectName)) {
+//            return Result.fail("队列为空 " + sendData);
+//        }
+//        Object data = sendData.get("dataContent");
+//        if (Objects.isNull(data)) {
+//            return Result.fail("数据内容为空 " + sendData);
+//        }
+//        Object connectConfig = sendData.get("connectConfig");
+//        Map<String, Object> connectConfigMaps;
+//
+//        if (connectConfig instanceof Map) {
+//            connectConfigMaps = (Map<String, Object>) connectConfig;
+//        } else {
+//            connectConfigMaps = MapTools.mapStrToMap_connect(connectConfig.toString());
+//        }
+//        connectConfigMaps.put("request.timeout.ms",60000);
+//        connectConfigMaps.put("max.request.size",10240000);
+//        connectConfigMaps.put("compression.type","gzip");
+//        connectConfigMaps.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+//        connectConfigMaps.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
+//
+//        if (Objects.isNull(producer)) producer = new KafkaProducer<>(connectConfigMaps);
+//        producer.send(new ProducerRecord<>(sourceObjectName.toString(), data.toString()));
+//        return Result.success();
+//    }
+//
+//    /**
+//     * 关闭kafka信息
+//     *
+//     * @throws Exception
+//     */
+//    public void close() {
+//        if (Objects.nonNull(consumer)) {
+//            consumer.close();
+//            consumer = null;
+//            System.out.println("consumer关闭");
+//        }
+//
+//        if (Objects.nonNull(producer)) {
+//            producer.close();
+//            producer = null;
+//            System.out.println("consumer关闭");
+//        }
+//    }
+//
+//    /**
+//     * 设置ftp客户端参数并创建ftp客户端
+//     *
+//     * @param config ftp连接配置信息
+//     * @return ftp客户端
+//     */
+//    private FTPClient createFtpClient(Map<String,Object> config) throws Exception {
+//        FTPClient ftp = new FTPClient();
+//        ftp.connect(config.getString("host"), Optional.ofNullable(config.getInteger("port")).orElse(21));
+//        //common-net的ftpclient默认是使用ASCII_FILE_TYPE,文件会经过ASCII编码转换,所以可能会造成文件损坏
+//        String password = Optional.ofNullable(config.getString("password")).orElse("");
+//        String name = Optional.ofNullable(config.getString("username")).orElse("");
+//        ftp.login(name, password);//登录
+//        ftp.setConnectTimeout(Optional.ofNullable(config.getInteger("timeOut")).orElse(1000 * 120)); //120秒
+//        ftp.setDataTimeout(Optional.ofNullable(config.getInteger("timeOut")).orElse(1000 * 120)); //120秒
+//        ftp.setBufferSize(1024 * 1024 * 10); //每次读取文件流时缓存数组的大小
+//        ftp.setRemoteVerificationEnabled(false); // 取消服务器获取自身Ip地址和提交的host进行匹配
+//        ftp.setControlEncoding(Optional.ofNullable(config.getString("encoding")).orElse("UTF-8")); //设置ftp编码
+//        ftp.setFileType(Optional.ofNullable(config.getInteger("fileType")).orElse(FTPClient.BINARY_FILE_TYPE));//设置文件编码类型为二进制文件,
+//        if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
+//            if (log.isDebugEnabled()) {
+//                log.info("未连接到FTP,用户名或密码错误。");
+//            }
+//            ftp.disconnect();
+//        }
+//        return ftp;
+//    }
+//}

+ 137 - 0
mainFactory/src/main/java/org/bfkj/resp/Result.java

@@ -0,0 +1,137 @@
+package org.bfkj.resp;
+
+
+import java.util.Map;
+import java.util.Objects;
+
+public class Result<T> {
+    /**
+     * 返回处理消息
+     */
+    private String message = "操作成功!";
+
+    /**
+     * 返回代码
+     */
+    private String code = "0";
+    /**
+     * 返回数据对象 data
+     */
+    private T returnData;
+    private T columnset;
+    private Integer rowcount;
+
+
+    private T columnList;
+
+    public Result() {
+    }
+
+    public static <T> Result<T> success() {
+        Result<T> r = new Result<T>();
+        r.setCode("0");
+        return r;
+    }
+
+
+
+    public static <T> Result<T> success(T data, T columnset, Integer rowcount) {
+        Result<T> r = new Result<T>();
+        r.setCode("0");
+        r.setReturnData(data);
+        r.setColumnset(columnset);
+        r.setRowcount(rowcount);
+        return r;
+    }
+
+    public static <T> Result<T> success(T data, String... message) {
+        Result<T> r = new Result<T>();
+        r.setCode("0");
+        r.setReturnData(data);
+        if (message.length !=0) {
+            r.setMessage(message[0]);
+        }
+        return r;
+    }
+
+    public static <T> Result<T> success(T data, Integer rowcount, String... message) {
+        Result<T> r = new Result<T>();
+        r.setCode("0");
+        if (!Objects.isNull(rowcount)) {
+            r.setRowcount(rowcount);
+        }
+        if (message.length !=0) {
+            r.setMessage(message[0]);
+        }
+        r.setReturnData(data);
+        return r;
+    }
+
+    public static <T> Result<T> fail(String msg) {
+        Result<T> r = new Result<T>();
+        r.setCode("-1");
+        r.setMessage(msg);
+        return r;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public T getReturnData() {
+        return returnData;
+    }
+
+    public void setReturnData(T returnData) {
+        this.returnData = returnData;
+    }
+
+    public T getColumnset() {
+        return columnset;
+    }
+
+    public void setColumnset(T columnset) {
+        this.columnset = columnset;
+    }
+
+    public Integer getRowcount() {
+        return rowcount;
+    }
+
+    public T getColumnList() {
+        return columnList;
+    }
+
+    public void setColumnList(T columnList) {
+        this.columnList = columnList;
+    }
+
+    public void setRowcount(Integer rowcount) {
+        this.rowcount = rowcount;
+    }
+
+
+    @Override
+    public String toString() {
+        return "Result{" +
+                "message='" + message + '\'' +
+                ", code='" + code + '\'' +
+                ", returnData=" + returnData +
+                ", columnset=" + columnset +
+                ", rowcount=" + rowcount +
+                '}';
+    }
+}
+

+ 1 - 1
mainFactory/src/main/java/org/bfkj/utils/MapTools.java

@@ -22,7 +22,7 @@ public class MapTools implements Serializable {
                 return null;
             }
             if (inObj instanceof String) {
-                inObj = strToObj(inObj.toString());
+                return (String) inObj;
             }
             return AppConfig.mapper.writeValueAsString(inObj);
         } catch (Exception e) {

+ 0 - 1
mainFactory/src/main/java/org/bfkj/utils/ScheduleTask.java

@@ -32,7 +32,6 @@ public class ScheduleTask implements Runnable {
         this.loopCount = loopCount;
         this.taskValid = taskValid;
         this.taskInvalid = taskInvalid;
-
     }
 
     @Override

+ 0 - 1
mainFactory/src/main/java/org/bfkj/utils/ScriptEnginePro.java

@@ -8,7 +8,6 @@ import javax.script.*;
 import java.io.File;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.*;

+ 1 - 1
mainFactory/src/main/resources/application-120.yml

@@ -18,7 +18,7 @@ log:
   type: com.mysql.cj.jdbc.Driver
 
 mydb:
-  url: jdbc:mysql://120.26.64.82:3306/ygm_db2_cen
+  url: jdbc:mysql://120.26.64.82:3306/mid_center
   title: root
   cipher: 123@bigdata
   type: com.mysql.cj.jdbc.Driver

+ 81 - 0
mainFactory/src/test/java/org/bfkj/jdbctemplate/JdbcTemplateDemoApplicationTests.java

@@ -0,0 +1,81 @@
+//package org.bfkj.jdbctemplate;
+//
+//import com.zaxxer.hikari.HikariDataSource;
+//import org.junit.Test;
+//import org.springframework.boot.test.context.SpringBootTest;
+//import org.springframework.data.repository.query.Param;
+//import org.springframework.jdbc.core.JdbcTemplate;
+//import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+//import org.springframework.transaction.TransactionDefinition;
+//import org.springframework.transaction.TransactionStatus;
+//import org.springframework.transaction.support.DefaultTransactionDefinition;
+//
+//import java.util.ArrayList;
+//import java.util.List;
+//
+////@BenchmarkMode(Mode.AverageTime)
+////@Warmup(iterations = 3, time = 1)
+////@Measurement(iterations = 3, time = 5)
+////@Threads(1)
+////@Fork(1)
+////@State(value = Scope.Benchmark)
+////@OutputTimeUnit(TimeUnit.MILLISECONDS)
+//@SpringBootTest
+//public class JdbcTemplateDemoApplicationTests {
+//    private DataSourceTransactionManager manager;
+//
+////    @Param(value = {"100", "500", "1000"})
+//    private long length=5000;
+//
+////    @Benchmark
+////    public void contextLoads(Blackhole blackhole) {
+////
+////        int[] extracted = getExtracted();
+////        blackhole.consume(extracted.toString());
+////    }
+//
+//    @Test
+//    public void getExtracted() {
+//        HikariDataSource dataSource = new HikariDataSource();
+////        dataSource.setUsername("jdbc:sqlite:db");
+////        dataSource.setPassword(password);
+//        dataSource.setJdbcUrl("jdbc:sqlite:db.sqlite");
+////        dataSource.setDriverClassName(DriverManagerDataSource);
+//        dataSource.addDataSourceProperty("cachePrepStmts", true);
+////        dataSource.addDataSourceProperty("prepStmtCacheSize", 10);
+////        dataSource.addDataSourceProperty("prepStmtCacheSqlLimit", 100);
+//        dataSource.addDataSourceProperty("useServerPrepStmts", true);
+////        dataSource.addDataSourceProperty("useLocalSessionState", true);
+//        dataSource.addDataSourceProperty("rewriteBatchedStatements", true);
+////        dataSource.addDataSourceProperty("cacheResultSetMetadata", properties.isCacheResultSetMetadata());
+//        dataSource.addDataSourceProperty("cacheServerConfiguration", true);
+//        dataSource.addDataSourceProperty("elideSetAutoCommits", true);
+////        dataSource.addDataSourceProperty("maintainTimeStats", properties.isMaintainTimeStats());
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        manager = new DataSourceTransactionManager();
+//        manager.setDataSource(dataSource);
+//
+//        int[] extracted = extracted(jdbcTemplate, this.length);
+////        return extracted;
+//    }
+//
+//    private int[] extracted(JdbcTemplate jdbcTemplate, Long max) {
+//        List<Object[]> list = new ArrayList<>();
+//        for (int i = 0; i < max; i++) {
+//            list.add(new Integer[]{
+//                    i, i
+//            });
+//        }
+//        TransactionDefinition definition2 = new DefaultTransactionDefinition();
+//        TransactionStatus status2 = manager.getTransaction(definition2);
+//        int[] result = new int[1];
+//        if (list.size() > 1) {
+//            result = jdbcTemplate.batchUpdate("insert into test(id,name) values (?,?)", list);
+//        } else {
+//            result[0] = jdbcTemplate.update("insert into test(id,name) values (?,?)", list.get(0));
+//        }
+//        manager.commit(status2);
+//        return result;
+//    }
+//}

+ 19 - 0
mainFactory/src/test/java/org/bfkj/protocol/MyRabbitMQTest.java

@@ -0,0 +1,19 @@
+package org.bfkj.protocol;
+
+public class MyRabbitMQTest {
+
+    public void testSendMethod() {
+        MyRabbitMQ myRabbitMQ = new MyRabbitMQ();
+        for (int i = 0; i < 100; i++) {
+
+            myRabbitMQ.sendMethod("Q_LUG_TO_CDP", ""
+                    , "hello:" + i, """
+                    {
+                      "host":"localhost",
+                      "username": "andy",
+                      "password": "123456",
+                      "port": "5672"
+                    }""", "amp.topic.lug");
+        }
+    }
+}

File diff suppressed because it is too large
+ 39 - 0
mainFactory/src/test/java/org/bfkj/utils/ScriptEngineProTest.java


Some files were not shown because too many files changed in this diff