Compare commits

..

34 Commits

Author SHA1 Message Date
wj d22a9f388f Merge branch 'dev' into test 2 years ago
wj 2314e8076b 返回改为taskId 2 years ago
wj 6ad32b2933 响应码改为20000 2 years ago
anthonywj f08a344c1c 代码备份 2 years ago
wj c3de69dc95 请求转发 2 years ago
anthonywj 6569dcc49c 同步查看外网文件 2 years ago
wj 40cbbe738a Merge branch 'dev' into test 2 years ago
wj 0e11628791 Merge branch 'dev' into test 2 years ago
wj cf4d754740 Merge branch 'dev' into test 2 years ago
wj 9cce456609 Merge branch 'dev' into test 2 years ago
wj 4e65d033b5 测试自动部署 2 years ago
wj 4069cb9eb8 测试自动部署 2 years ago
anthonywj b58e177621 枚举修改 2 years ago
anthonywj 2336119dac 枚举修改 2 years ago
wj 66af59182d Merge branch 'master' into test 2 years ago
wj 631e9004ab Merge branch 'master' into test 2 years ago
wj 3b97f643af Merge branch 'master' into test 2 years ago
wj 8f226ed1f8 Merge branch 'master' into test 2 years ago
wj de78944359 拉取数据增加特殊处理 2 years ago
wj c5531aa625 Merge branch 'master' into test 2 years ago
wj a917d4d386 Merge branch 'master' into test 2 years ago
wj d9985ab370 Merge branch 'master' into test 2 years ago
anthonywj b8e92dd1b7 Merge remote-tracking branch 'origin/test' into test
# Conflicts:
#	api-admin/src/main/java/com/glxp/sale/admin/constant/BasicExportTypeEnum.java
2 years ago
anthonywj c946ef8422 新增发票更新同步 2 years ago
wj 38416a4755 Merge branch 'master' into test 2 years ago
anthonywj 4827b7dd1e 多个中继服务同步相关问题修改 2 years ago
wj d826ae4c52 Merge branch 'master' into test 2 years ago
wj cc998fa35a Merge branch 'master' into test 2 years ago
wj 5473878bd8 Merge branch 'master' into test 2 years ago
wj 004f2a52be Merge branch 'master' into test 2 years ago
wj 6371399e09 Merge branch 'master' into test
# Conflicts:
#	api-admin/src/main/resources/logback-spring.xml
2 years ago
wj 0a2ae9e530 日志调整 2 years ago
wj bf86451a0c Merge branch 'master' into test 2 years ago
wj 791f7bfdde 增加测试环境 2 years ago

@ -307,11 +307,6 @@
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
<build>

@ -1,103 +0,0 @@
package com.glxp.sale.admin.config.rabbit;
import cn.hutool.core.util.StrUtil;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Configuration
public class RabbitConfig {
// private final static String exchangeName = "sync_direct_exchange";
public final static String topicExchangeName = "sync_topic_exchange";
/**
*
*/
public final static String syncQueueName = "sync";
public final static String uploadQueueName = "upload";
private final static String syncTopicKey = "sync.*";
public final static String syncInsertKey = "sync.insert";
public final static String syncUpdateKey = "sync.update";
public final static String syncDeleteKey = "sync.delete";
private final static String uploadTopicKey = "upload.*";
public final static String uploadInsertKey = "upload.insert";
public final static String uploadUpdateKey = "upload.update";
public final static String uploadDeleteKey = "upload.delete";
/**
* direct
*/
// @Bean
// DirectExchange udiExchange() {
// //设置消息持久化
// return new DirectExchange(exchangeName, true, false);
// }
/**
* topic
*/
@Bean
TopicExchange udiTopicExchange() {
//设置消息持久化
return new TopicExchange(topicExchangeName, true, false);
}
/**
*
*/
@Bean
Queue syncQueue() {
//设置消息持久化
return new Queue(syncQueueName, true);
}
@Bean
Queue uploadQueue() {
//设置消息持久化
return new Queue(uploadQueueName, true);
}
/**
* key
*/
@Bean
Binding bindingSync() {
return BindingBuilder.bind(syncQueue()).to(udiTopicExchange()).with(syncTopicKey);
}
/**
* key
*/
@Bean
Binding bindingUpload() {
return BindingBuilder.bind(uploadQueue()).to(udiTopicExchange()).with(uploadTopicKey);
}
// /**
// * 将根据路由key队列绑定交换机
// */
// @Bean
// Binding bindingSync() {
// return BindingBuilder.bind(syncQueue()).to(udiExchange()).with(syncKey);
// }
//
// @Bean
// Binding bindingUpload() {
// return BindingBuilder.bind(uploadQueue()).to(udiExchange()).with(uploadKey);
// }
}

@ -1,103 +0,0 @@
package com.glxp.sale.admin.config.rabbit;
import cn.hutool.core.util.StrUtil;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
@Configuration
public class RabbitConnectionConfig {
/*
*rabbitMQ
*/
@Bean(name = "upperConnectionFactory")
public ConnectionFactory upperConnectionFactory(
@Value("${upper.spring.rabbitmq.host}") String host,
@Value("${upper.spring.rabbitmq.port}") int port,
@Value("${upper.spring.rabbitmq.username}") String username,
@Value("${upper.spring.rabbitmq.password}") String password,
@Value("${upper.spring.rabbitmq.virtual-host}") String virtualHost) {
return connectionFactory(host, port, username, password, virtualHost);
}
/*
*rabbitMQ
*/
@Bean(name = "localConnectionFactory")
@Primary
public ConnectionFactory localConnectionFactory(
@Value("${local.spring.rabbitmq.host}") String host,
@Value("${local.spring.rabbitmq.port}") int port,
@Value("${local.spring.rabbitmq.username}") String username,
@Value("${local.spring.rabbitmq.password}") String password,
@Value("${local.spring.rabbitmq.virtual-host}") String virtualHost) {
return connectionFactory(host, port, username, password, virtualHost);
}
/*
*rabbitMQ
*/
// @Bean(name = "localConnectionFactory")
// @Primary
// public ConnectionFactory localConnectionFactory(
// @Value("${listen.rabbitmq.local.host}") String host,
// @Value("${listen.rabbitmq.local.port}") int port,
// @Value("${listen.rabbitmq.local.username}") String username,
// @Value("${listen.rabbitmq.local.password}") String password,
// @Value("${listen.rabbitmq.local.virtual-host}") String virtualHost) {
// return connectionFactory(host, port, username, password, virtualHost);
// }
public CachingConnectionFactory connectionFactory(String host, int port, String username, String password, String virtualHost) {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
if (StrUtil.isNotBlank(virtualHost)) {
connectionFactory.setVirtualHost(virtualHost);
}
return connectionFactory;
}
@Bean(name = "upperRabbitTemplate")
public RabbitTemplate upperRabbitTemplate(@Qualifier("upperConnectionFactory") ConnectionFactory connectionFactory) {
RabbitTemplate upperRabbitTemplate = new RabbitTemplate(connectionFactory);
return upperRabbitTemplate;
}
@Bean(name = "localRabbitTemplate")
@Primary
public RabbitTemplate localRabbitTemplate(@Qualifier("localConnectionFactory") ConnectionFactory connectionFactory) {
RabbitTemplate localRabbitTemplate = new RabbitTemplate(connectionFactory);
return localRabbitTemplate;
}
@Bean(name = "upperFactory")
public SimpleRabbitListenerContainerFactory upperFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("upperConnectionFactory") ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
@Bean(name = "localFactory")
@Primary
public SimpleRabbitListenerContainerFactory localFactory(
SimpleRabbitListenerContainerFactoryConfigurer configurer,
@Qualifier("localConnectionFactory") ConnectionFactory connectionFactory) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
}
}

@ -47,6 +47,17 @@ public enum BasicExportTypeEnum {
*/
ORDER_INVOICE("io_order_invoice", "扫码单据发票信息"),
/**
*
*/
// IO_ORDER("io_order", "单据信息"),
/**
*
*/
// ORDER_INVOICE("io_order_invoice", "扫码单据发票信息"),
/**
*
*/

@ -1,15 +1,14 @@
package com.glxp.sale.admin.controller.sync;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.glxp.sale.admin.constant.*;
import com.glxp.sale.admin.dto.RelaySyncDto;
import com.glxp.sale.admin.entity.param.SystemParamConfigEntity;
import com.glxp.sale.admin.entity.sync.*;
import com.glxp.sale.admin.entity.sync.BasicExportStatusEntity;
import com.glxp.sale.admin.entity.sync.BasicUploadStatusEntity;
import com.glxp.sale.admin.http.SpGetHttp;
import com.glxp.sale.admin.http.SpPostHttp;
import com.glxp.sale.admin.idc.utils.UriUtils;
@ -257,7 +256,7 @@ public class SpsSyncDataController {
throw new RuntimeException("系统异常,文件名为空");
}
relaySyncResponse = RelaySyncResponse.builder()
.taskId(one.getId())
.taskId(one.getTaskId())
.fileContent(this.readDataFile(one.getCacheFilePath()))
.build();
}

@ -16,10 +16,6 @@ import com.glxp.sale.admin.idc.service.FileService;
import com.glxp.sale.common.res.BaseResponse;
/**
*
*/
@ -56,6 +52,4 @@ public class FileController {
}
}

@ -1,37 +1,37 @@
package com.glxp.sale.admin.idc.controller;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.glxp.sale.admin.idc.dao.DbDao;
import com.glxp.sale.admin.idc.service.IdcService;
import com.glxp.sale.admin.idc.utils.UriUtils;
import com.glxp.sale.admin.service.param.SystemParamConfigService;
import com.glxp.sale.admin.util.MyStrUtil;
import com.glxp.sale.common.res.BaseResponse;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
/**
@ -149,6 +149,7 @@ public class IdcController {
if (StrUtil.isNotEmpty(upperServerHost)) {
uri = upperServerHost + "/" + uri;
}
uri = changeUri(uri);
log.info(uri);
if (uri.contains("getImage")) {
return redirectIamge(request, httpServletResponse, uri);
@ -157,6 +158,67 @@ public class IdcController {
}
}
// @RequestMapping("/dirImages/**")
// public void images(HttpServletRequest request, HttpServletResponse httpServletResponse) {
// String uri = uriUtils.parseUri(request.getRequestURL().toString());
//
// log.info(uri);
// String imageHost = "http://192.168.0.66:9000";
// String url = "";
//// systemParamConfigService.selectValueByParamKey("is_top_service");
// if (StrUtil.isNotEmpty(imageHost)) {
// String prefix = "dirImages/";
// url = (imageHost.substring(imageHost.length() - 1) == "/" ? imageHost : imageHost + "/")
// + uri.substring(uri.indexOf(prefix) + prefix.length());
//
// }
// log.info(url);
// redirectIamge2(request, httpServletResponse, url);
// }
public String changeUri(String uri) {
String isTopService = systemParamConfigService.selectValueByParamKey("is_top_service");
if (StrUtil.isNotEmpty(isTopService) && isTopService.equals("1")) {
if (uri.contains("SP_SYNC_SERVER")) {
uri = uri.replace("SP_SYNC_SERVER/", "");
}
} else {
uri = MyStrUtil.deDup(uri);
}
log.error("changeUri = " + uri);
return uri;
}
private void redirectIamge2(HttpServletRequest request, HttpServletResponse httpServletResponse, String uri) {
HttpRequest result = HttpUtil.createGet(uri);
HttpResponse execute = result.execute();
execute.headers().forEach((k, v) -> {
httpServletResponse.setHeader(k, v.get(0));
});
ServletOutputStream outputStream = null;
InputStream inputStream = null;
try {
outputStream = httpServletResponse.getOutputStream();
inputStream = execute.bodyStream();
outputStream.write(inputStream.readAllBytes());
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
if (outputStream != null)
outputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
try {
if (inputStream != null)
inputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
private byte[] redirectIamge(HttpServletRequest request, HttpServletResponse httpServletResponse, String uri) {
RestTemplate restTemplate = new RestTemplate();

@ -221,7 +221,7 @@ public class FileServiceImpl implements FileService {
if(config!=null&&config.get("paramValue")!=null)
host = config.get("paramValue").toString();
} catch (Exception ex) {
ex.printStackTrace();
}
if(!StringUtils.isEmpty(host)) {
String result = IDCUtils.post(host+"/spssync/file/downloadFile", params);

@ -1,39 +0,0 @@
package com.glxp.sale.admin.rabbitmq;
import com.glxp.sale.admin.config.rabbit.RabbitConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Slf4j
@Service
@RequiredArgsConstructor
public class SyncListener {
@Resource(name = "localRabbitTemplate")
private RabbitTemplate rabbitTemplate;
@RabbitListener(queues = RabbitConfig.syncQueueName, containerFactory = "upperFactory", concurrency = "20-40")
public void process(Message message, @Payload String str) {
//获取路由key
String routingKey = message.getMessageProperties().getReceivedRoutingKey();
System.out.println(routingKey);
System.out.println(str);
switch (routingKey) {
case RabbitConfig.syncInsertKey:
case RabbitConfig.syncUpdateKey:
case RabbitConfig.syncDeleteKey:
rabbitTemplate.convertSendAndReceive(RabbitConfig.topicExchangeName, routingKey, str);
default:
break;
}
}
}

@ -1,44 +0,0 @@
package com.glxp.sale.admin.rabbitmq;
import com.glxp.sale.admin.config.rabbit.RabbitConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Primary;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Slf4j
@Service
@RequiredArgsConstructor
public class UploadListener {
@Resource(name = "upperRabbitTemplate")
private RabbitTemplate rabbitTemplate;
@Value("${upper.spring.rabbitmq.exchange}")
private String upperExchange;
@RabbitListener(queues = RabbitConfig.uploadQueueName,containerFactory = "localFactory", concurrency = "20-40")
public void process(Message message, @Payload String str) {
//获取路由key
String routingKey = message.getMessageProperties().getReceivedRoutingKey();
System.out.println(routingKey);
System.out.println(str);
switch (routingKey) {
case RabbitConfig.uploadInsertKey:
case RabbitConfig.uploadUpdateKey:
case RabbitConfig.uploadDeleteKey:
rabbitTemplate.convertSendAndReceive(upperExchange, routingKey, str);
default:
break;
}
}
}

@ -1,7 +1,7 @@
# \u751F\u4EA7\u73AF\u5883
server.port=10002
server.port=10001
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3333/udispsync?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/udispsync?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456
#spring.datasource.password=xiamenswan
@ -44,9 +44,9 @@ spring.redis.database=6
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6377
spring.redis.port=6379
# Redis服务器连接密码默认为空
spring.redis.password=123456
spring.redis.password=
#连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
@ -57,17 +57,3 @@ spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.jedis.timeout=300
local.spring.rabbitmq.host=192.168.0.66
local.spring.rabbitmq.port=5672
local.spring.rabbitmq.virtual-host=sync/dev
local.spring.rabbitmq.username=glxp
local.spring.rabbitmq.password=glxp1234
upper.spring.rabbitmq.host=192.168.0.66
upper.spring.rabbitmq.port=5672
upper.spring.rabbitmq.virtual-host=dev
upper.spring.rabbitmq.username=glxp
upper.spring.rabbitmq.password=glxp1234
upper.spring.rabbitmq.exchange=spms_topic_exchange

@ -16,8 +16,8 @@ cors.allowed-Credentials=true
server.tomcat.max-http-form-post-size=100MB
server.max-http-header-size=100MB
#\u6700\u5927\u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F(10MB)
spring.servlet.multipart.max-file-size=104857600
spring.servlet.multipart.max-request-size=104857600
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=100MB
server.connectionTimeout=180000
#logging.level.com.glxp.sale.admin.dao=debug
# \u8F93\u51FA\u65E5\u5FD7\u5230\u9879\u76EE\u6839\u76EE\u5F55\u4E0B\u7684springboot.log\u6587\u4EF6\u4E2D // \u914D\u7F6E logback-spring.xml\u65F6 \u6B64\u65E5\u5FD7\u8F93\u51FA\u65B9\u5F0F\u4F1A\u88AB\u8986\u76D6\u3002

@ -1,4 +1,4 @@
spring.profiles.active=dev
spring.profiles.active=test
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*/*.xml

@ -8,7 +8,7 @@ import lombok.Getter;
@Getter
public enum ResultEnum {
SUCCESS(0, "success"),
SUCCESS(20000, "success"),
NOT_NETWORK(1, "系统繁忙,请稍后再试。"),
LOGIN_VERIFY_FALL(2, "登录失效"),
PARAM_VERIFY_FALL(3, "参数验证错误"),

@ -18,7 +18,7 @@ public class ResultVOUtils {
*/
public static BaseResponse success(Object data) {
BaseResponse<Object> baseResponse = new BaseResponse<>();
baseResponse.setCode(20000);
baseResponse.setCode(ResultEnum.SUCCESS.getCode());
baseResponse.setMessage("success");
baseResponse.setData(data);
return baseResponse;

Loading…
Cancel
Save