Browse Source

1.优化欧派的数据的存储方式,更换为文件存储

training
pref_mail@163.com 1 year ago
parent
commit
f4d4d235ab
  1. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 86
      blade-biz-common/src/main/java/org/springblade/common/utils/FileLogsUtil.java
  3. 12
      blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/entity/OpOrderStatusLogEntity.java
  4. 16
      blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/vo/OpOrderStatusLogVO.java
  5. 8
      blade-service/logpm-factory/pom.xml
  6. 2
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/receiver/OpReceivingDataHandler.java
  7. 3
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/receiver/OpSignDataHandler.java
  8. 70
      blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java

2
blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java

@ -8,7 +8,7 @@ public interface ModuleNameConstant {
/**
* 如果不需要 ""
*/
public static final String DEVAUTH ="";
public static final String DEVAUTH ="-pref";
/**
* 工厂对接服务名称

86
blade-biz-common/src/main/java/org/springblade/common/utils/FileLogsUtil.java

@ -0,0 +1,86 @@
package org.springblade.common.utils;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.unit.DataUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.common.constant.CommonConstant;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Calendar;
import java.util.Date;
/**
* 根据日志文件生成本地文件
*/
public class FileLogsUtil {
private static final Logger log = LoggerFactory.getLogger(FileLogsUtil.class);
// 根基传入的String 日志响应内容 保存到本地磁盘,返回本次保存的磁盘路径
public static String saveFileLogs(String logs) {
Date date = new Date();
// 获取当前系统时间
Long startdate = date.getTime();
String dataString = makeDateString(date);
String imgPath = CommonConstant.SYSTEMFILEPATH + "logs/";
//根据当前时间 按照 年/月/日 创建一个文件
imgPath = imgPath + dataString;
// 判断文件夹是否存在
File imgPathFile = new File(imgPath);
if (!imgPathFile.exists()) {
imgPathFile.mkdirs();
}
// 按照年-月-日 创建一个字符串
String fileName = System.currentTimeMillis() + ".log";
Writer writer = null;
try {
writer = new FileWriter(imgPath + fileName);
writer.write(logs);
writer.flush();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
Long endDate = new Date().getTime();
log.info("保存消耗时间:" + (endDate - startdate) + "毫秒");
return imgPath + fileName;
}
private static String makeDateString(Date date) {
StringBuffer stringBuffer = new StringBuffer();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); //放入Date类型数据
//获取年份
stringBuffer.append(calendar.get(Calendar.YEAR)+"/");
//获取月份
stringBuffer.append(calendar.get(Calendar.MONTH) + 1+"/");
//获取日份
stringBuffer.append(calendar.get(Calendar.DATE)+"/");
return stringBuffer.toString();
}
}

12
blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/entity/OpOrderStatusLogEntity.java

@ -1,5 +1,6 @@
package com.logpm.factory.oupai.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ -12,8 +13,16 @@ import org.springblade.core.mp.base.BaseEntity;
@EqualsAndHashCode(callSuper = true)
public class OpOrderStatusLogEntity extends BaseEntity {
/**
* 请求参数
*/
private String args;
/**
* 响应文件资源
*/
private String responseUrl;
/**
* 数据用途 1. 发车数据
*/
@ -26,4 +35,7 @@ public class OpOrderStatusLogEntity extends BaseEntity {
*/
private Integer dataStatus;
@TableField(exist = false)
private String responseBody;
}

16
blade-service-api/logpm-factory-api/src/main/java/com/logpm/factory/oupai/vo/OpOrderStatusLogVO.java

@ -0,0 +1,16 @@
package com.logpm.factory.oupai.vo;
import com.logpm.factory.oupai.entity.OpOrderStatusLogEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
public class OpOrderStatusLogVO extends OpOrderStatusLogEntity {
/**
* 响应内容
*/
private String reponseBody;
}

8
blade-service/logpm-factory/pom.xml

@ -107,6 +107,14 @@
<version>3.1.0.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-resource-api</artifactId>
<version>3.1.0.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

2
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/receiver/OpReceivingDataHandler.java

@ -35,7 +35,7 @@ public class OpReceivingDataHandler {
// 如果手动ACK,消息会被监听消费,但是消息在队列中依旧存在,如果 未配置 acknowledge-mode 默认是会在消费完毕后自动ACK掉
log.info("##################opReceivingDataHandler: 处理欧派收货数据到新系统");
OpOrderStatusLogEntity opOrderStatusLogEntity = (OpOrderStatusLogEntity) map.get("messageData");
String args = opOrderStatusLogEntity.getArgs();
String args = opOrderStatusLogEntity.getResponseBody();
JSONObject jsonObject = JSONObject.parseObject(args);
JSONArray jsonArray = jsonObject.getJSONArray("value");
for (int i = 0; i < jsonArray.size(); i++) {

3
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/receiver/OpSignDataHandler.java

@ -58,8 +58,7 @@ public class OpSignDataHandler {
String messageData = new String(message.getBody());
OpOrderStatusLogEntity opOrderStatusLogEntity = (OpOrderStatusLogEntity) map.get("messageData");
String args = opOrderStatusLogEntity.getArgs();
JSONObject jsonObject = JSONObject.parseObject(args);
JSONObject jsonObject = JSONObject.parseObject(opOrderStatusLogEntity.getResponseBody());
JSONArray jsonArray = jsonObject.getJSONArray("value");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject valueObject = jsonArray.getJSONObject(i);

70
blade-service/logpm-factory/src/main/java/com/logpm/factory/oupai/service/impl/OuPaiFactoryServiceImpl.java

@ -11,15 +11,27 @@ import com.logpm.factory.comfac.service.IAsyncDataService;
import com.logpm.factory.oupai.entity.*;
import com.logpm.factory.oupai.mapper.ReceivingOrderMapper;
import com.logpm.factory.oupai.service.*;
import com.logpm.factory.oupai.vo.OpOrderStatusLogVO;
import com.logpm.factory.props.OuPaiProperties;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.jetbrains.annotations.NotNull;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.common.utils.CommonUtil;
import org.springblade.common.utils.FileLogsUtil;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.tool.api.R;
import org.springblade.resource.feign.IOssClient;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ -52,6 +64,8 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private IOssClient ossClient;
@Override
public String saveOuPaiFactoryOrderDTOByCarCarNumber(String code) {
@ -161,12 +175,11 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
// 保存需要解析的数据
// 获取返回内容
try {
JSONObject jsonObject = JSONObject.parseObject(opOrderStatusLogEntity.getArgs());
JSONObject jsonObject = JSONObject.parseObject(opOrderStatusLogEntity.getResponseBody());
JSONArray resultArray = jsonObject.getJSONArray("value");
log.info("############handlePackageData: 数据处理开始");
//TODO 这里需要添加处理配送发运单的逻辑
opOrderStatusLogEntity.setDataStatus(1);
} catch (Exception e) {
log.error("############handlePackageData: {}", e.getMessage());
@ -207,14 +220,16 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
HttpResponse httpResponse = HttpRequest.get(url).header("Authorization", token).execute();
String result = httpResponse.body();
// log.info("#################sendRequestData: 返回数据 result={}", result);
OpOrderStatusLogEntity orderStatusLog = new OpOrderStatusLogEntity();
orderStatusLog.setArgs(result);
orderStatusLog.setArgs(url);
orderStatusLog.setStatus(1);
orderStatusLog.setType(event);
orderStatusLog.setDataStatus(0);
orderStatusLog.setBrand("欧派");
orderStatusLog.setResponseBody(result);
orderStatusLog.setResponseUrl(uploadFile(result));
opOrderStatusLogService.save(orderStatusLog);
@ -234,13 +249,12 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
// 保存需要解析的数据
// 获取返回内容
try {
JSONObject jsonObject = JSONObject.parseObject(opOrderStatusLogEntity.getArgs());
JSONObject jsonObject = JSONObject.parseObject(opOrderStatusLogEntity.getResponseBody());
JSONArray resultArray = jsonObject.getJSONArray("value");
log.info("############handleData: 数据处理开始");
analyzeData(resultArray);
opOrderStatusLogEntity.setDataStatus(1);
} catch (Exception e) {
e.printStackTrace();
log.error(">>>> error {}", e.getMessage());
opOrderStatusLogEntity.setDataStatus(2);
@ -378,7 +392,7 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
factoryOrderEntity.setStoreCode(store.getString("Code"));
factoryOrderEntity.setStoreName(store.getString("Name"));
JSONObject shop = store.getJSONObject("Shop");
if(!Objects.isNull(shop)){
if (!Objects.isNull(shop)) {
factoryOrderEntity.setShopCode(shop.getString("Code"));
factoryOrderEntity.setShopName(shop.getString("Name"));
}
@ -574,14 +588,18 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
HttpResponse httpResponse = HttpRequest.get(url).header("Authorization", token).execute();
String result = httpResponse.body();
// log.info(">>> findOurPaiDataByCarNumber result {}", result);
OpOrderStatusLogEntity orderStatusLog = new OpOrderStatusLogEntity();
orderStatusLog.setArgs(result);
orderStatusLog.setArgs(url);
orderStatusLog.setStatus(1);
orderStatusLog.setType(3);
orderStatusLog.setDataStatus(0);
orderStatusLog.setBrand("欧派");
orderStatusLog.setResponseBody(result);
orderStatusLog.setResponseUrl(uploadFile(result));
opOrderStatusLogService.save(orderStatusLog);
@ -589,6 +607,40 @@ public class OuPaiFactoryServiceImpl implements IOuPaiFactoryService {
}
/**
* 上传文件到服务 返回文件路径
*
* @param body
* @return
*/
private String uploadFile(String body) {
//文本内容和保存为本地文件 并上传
String logPath = FileLogsUtil.saveFileLogs(body);
MultipartFile multi = getMultipartFile(logPath);
OpOrderStatusLogEntity orderStatusLog = new OpOrderStatusLogEntity();
//上传到服务器
R r = ossClient.fileUpload(multi);
if (r.isSuccess()) {
BladeFile data = (BladeFile) r.getData();
return data.getLink();
}
return null;
}
/**
* 通过文件构建 MultipartFile
*/
@NotNull
private MultipartFile getMultipartFile(String logPath) {
File f = new File(logPath);
DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",
"multipart/form-data", true, f.getName());
MultipartFile multi = new CommonsMultipartFile(fileItem);
return multi;
}
/**
* 获取请求签名

Loading…
Cancel
Save