中继服务拉取UDI自助平台同步任务数据

master
wj 2 years ago
parent e1c9174268
commit 3b7a01f69f

@ -0,0 +1,33 @@
package com.glxp.sale.admin.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum BasicExportStatusEnum {
/**
*
*/
WAIT_TRIGGERED(1, "任务待触发"),
/**
*
*/
WAIT_BUILT(2, "文件待生成"),
/**
*
*/
WAIT_SYNC(3, "文件待同步"),
/**
*
*/
COMPLETED(4, "任务完成"),
;
private Integer code;
private String remark;
}

@ -0,0 +1,28 @@
package com.glxp.sale.admin.constant;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum BasicExportTypeEnum {
/**
*
*/
BASIC_DATA("basic_data", "基础数据"),
/**
* DI
*/
COUNTRY_DI_DATA("country_di_data", "国家库DI数据"),
/**
*
*/
OTHER_DATA("other_data", "其他数据"),
;
private String key;
private String remark;
}

@ -0,0 +1,16 @@
package com.glxp.sale.admin.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RelaySyncDto {
String taskId;
String filePath;
String fileContent;
}

@ -1,10 +1,16 @@
package com.glxp.sale.admin.entity.sync;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BasicExportStatusEntity {
private String id;
private String taskId;

@ -1,8 +1,10 @@
package com.glxp.sale.admin.http;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.glxp.sale.admin.constant.BasicExportTypeEnum;
import com.glxp.sale.admin.entity.sync.BasicExportStatusEntity;
import com.glxp.sale.admin.entity.sync.BasicExportStatusTimeEntity;
import com.glxp.sale.admin.entity.sync.IOOrderStatusEntity;
@ -21,6 +23,7 @@ import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;
@Service
public class SpGetHttp {
@ -313,4 +316,24 @@ public class SpGetHttp {
return ResultVOUtils.error(500, "下载失败!");
}
}
/**
* UDI
*
* @return
*/
public String pullData(BasicExportTypeEnum exportType) {
Map<String, Object> paramMap = new WeakHashMap<>(1);
paramMap.put("exportType", exportType.name());
String result = UHttpClient.mipsGetHead(getSpmsUrl() + "/sps/sync/data", paramMap, getHeaders());
return result;
}
public void finishTask(String id) {
String result = UHttpClient.mipsGetHead(getSpmsUrl() + "/spssync/basic/udiinfo/finishTask"
, Map.of("id", id), getHeaders());
}
}

@ -1,12 +1,14 @@
package com.glxp.sale.admin.thread;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.glxp.sale.admin.constant.BasicProcessStatus;
import com.glxp.sale.admin.constant.ConstantStatus;
import com.glxp.sale.admin.constant.FileConstant;
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.BasicExportStatusEntity;
import com.glxp.sale.admin.entity.sync.ProductInfoEntity;
@ -20,12 +22,18 @@ import com.glxp.sale.admin.service.param.SystemParamConfigService;
import com.glxp.sale.admin.service.sync.BasicExportService;
import com.glxp.sale.admin.thread.didl.AsyncDiDlHelper;
import com.glxp.sale.admin.util.*;
import com.glxp.sale.common.enums.ResultEnum;
import com.glxp.sale.common.res.BaseResponse;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.List;
@ -232,6 +240,66 @@ public class DlAllDataService {
log.info("下载所有单据---结束");
}
/**
* UDI
*
* @param exportType
*/
@Transactional(rollbackFor = Exception.class)
public void pullData(BasicExportTypeEnum exportType) {
String data = spGetHttp.pullData(exportType);
cn.hutool.json.JSONObject obj = JSONUtil.parseObj(data);
Integer code = obj.getInt("code");
if (!code.equals(ResultEnum.SUCCESS.getCode())) {
log.error("从UDI自助平台拉取数据错误报文-----{}", data);
return;
}
//需要写入文件的内容
String dataStr = obj.getStr("data");
if (StrUtil.isNotBlank(dataStr)) {
RelaySyncDto bean = JSONUtil.toBean(dataStr, RelaySyncDto.class);
// 将数据写入文件
try {
this.writeFile(bean.getFilePath(), bean.getFileContent());
} catch (IOException e) {
log.error("从UDI自助平台拉取基础数据 文件写入异常----{}", e.getMessage());
throw new RuntimeException(e);
}
BasicExportStatusEntity exportStatusEntity = BasicExportStatusEntity.builder()
.id(bean.getTaskId())
.taskId(bean.getTaskId())
.status(BasicExportStatusEnum.WAIT_SYNC.getCode())
.type(exportType.getRemark())
.transportType(1)
.scheduleType(0)
.fromType(1)
.startTime(DateUtil.getDateTime())
.updateTime(new Date())
.cacheFilePath(bean.getFilePath())
.build();
basicExportService.insertExportStatus(exportStatusEntity);
//通知自助平台任务已完成
spGetHttp.finishTask(bean.getTaskId());
}
}
private void writeFile(String filePath, String content) throws IOException {
String folder = filePath.substring(filePath.lastIndexOf('/'));
File file = new File(folder);
if (!file.exists()) {
file.mkdirs();
}
file = new File(filePath);
file.createNewFile();
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(content);
fileWriter.flush();
fileWriter.close();
}
public void dllNewAllBusType() {
log.info("下载所有单据类型---");
BasicExportStatusRequest basicExportStatusRequest = new BasicExportStatusRequest();

@ -1,5 +1,6 @@
package com.glxp.sale.admin.thread;
import com.glxp.sale.admin.constant.BasicExportTypeEnum;
import com.glxp.sale.admin.dao.info.ScheduledDao;
import com.glxp.sale.admin.entity.info.ScheduledEntity;
import com.glxp.sale.admin.entity.param.SystemParamConfigEntity;
@ -20,6 +21,7 @@ import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
@Component
@EnableScheduling
@ -44,17 +46,16 @@ public class HeartTask implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
scheduledTaskRegistrar.addTriggerTask(() -> process(),
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("heartTask");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity.getCron();
if (cron.isEmpty()) {
logger.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
scheduledTaskRegistrar.addTriggerTask(() -> process(), triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("heartTask");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity.getCron();
if (cron.isEmpty()) {
logger.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
@ -145,6 +146,10 @@ public class HeartTask implements SchedulingConfigurer {
redisUtil.set("is_doing_download", "true", 60);
// dlAllDataService.dllNewAllData();
dlAllDataService.dllNewAllOrder();
Arrays.stream(BasicExportTypeEnum.values()).forEach(i -> {
dlAllDataService.pullData(i);
});
// dlAllDataService.dllNewAllBusType();
// dlAllDataService.dlScheduleStatus();
// dlAllDataService.dlAllDi();

Loading…
Cancel
Save