新增国家库数据同步

master
anthonywj 2 years ago
parent 6cc3d6585d
commit 8666566189

@ -29,7 +29,7 @@ public class BasicProcessStatus {
public static final int NEW_ALL_BUS = 8;
public static final String NEW_ALL_ORDER = "9";
public static final String NEW_ALL_BUS_ORDER = "11";
public static final int NEW_ALL_DI = 10;
public static final String NEW_ALL_DI = "10";
public static final int SCHEDULE_NORMAL = 1; //常规任务
public static final int SCHEDULE_TRANSFER = 2; //需要传递任务

@ -226,6 +226,7 @@ public class ConstantStatus {
public static final String SYNC_BASIC_DATA = "AutoUploadAllData";
public static final String SYNC_BUS_TYPE = "AutoUploadBusType";
public static final String SYNC_SCAN_ORDER = "AutoUploadOrder";
public static final String SYNC_DI_PRODUCTS = "AutoDownloadDiProducts";
//自动下载所有数据
public static final String SYNC_DOWNLOAD_BASIC_DATA = "AutoDownloadAllData";

@ -0,0 +1,15 @@
package com.glxp.api.res.sync;
import com.glxp.api.entity.basic.ProductInfoEntity;
import com.glxp.api.entity.basic.UdiCompanyEntity;
import lombok.Data;
import java.util.List;
@Data
public class SpSyncUdiResponse extends BaseSyncResponse {
//同步任务ID
List<ProductInfoEntity> productInfoEntityList;
List<UdiCompanyEntity> udiCompanyEntities;
}

@ -6,14 +6,21 @@ import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.BasicProcessStatus;
import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.entity.basic.ProductInfoEntity;
import com.glxp.api.entity.basic.UdiCompanyEntity;
import com.glxp.api.entity.inout.*;
import com.glxp.api.entity.sync.BasicExportStatusEntity;
import com.glxp.api.entity.sync.BasicExportStatusTimeEntity;
import com.glxp.api.entity.sync.SyncDataBustypeEntity;
import com.glxp.api.req.basic.ProductInfoFilterRequest;
import com.glxp.api.req.basic.UdiCompanyRequest;
import com.glxp.api.req.inout.FilterOrderRequest;
import com.glxp.api.req.sync.SpsSyncDataRequest;
import com.glxp.api.res.sync.SpSyncUdiResponse;
import com.glxp.api.res.sync.SpsSyncOrderResponse;
import com.glxp.api.res.system.SyncDataSetResponse;
import com.glxp.api.service.basic.ProductInfoService;
import com.glxp.api.service.basic.UdiCompanyService;
import com.glxp.api.service.inout.*;
import com.glxp.api.util.CustomUtil;
import com.glxp.api.util.DateUtil;
@ -52,15 +59,21 @@ public class SpsSyncDownloadService {
@Resource
IoOrderInvoiceService orderInvoiceService;
public void syncOrderUpdateTime() {
// 创建单据同步任务
public void syncOrderTask() {
log.info("创建单据同步任务");
//自动创建要求被下载已完成单据任务
//自动创建要求被下载已完成单据任务.
// 1.判断是否同步任务已存在
BasicExportStatusEntity basicExportStatusEntity1 = basicExportService.findByData(ConstantStatus.SYNC_SCAN_ORDER, 0);
if (basicExportStatusEntity1 == null) {
BaseResponse<SpsSyncOrderResponse> baseResponse = findOrder(getRequest(ConstantStatus.SYNC_SCAN_ORDER));
SpsSyncOrderResponse syncOrderResponse = baseResponse.getData();
// 2.查看是否有需要更新的数据
if (CollUtil.isNotEmpty(syncOrderResponse.getOrderEntities())) {
// 3.插入到任务表,等待获取
BasicExportStatusEntity orderStatusEntity = new BasicExportStatusEntity();
orderStatusEntity.setId(CustomUtil.getId());
orderStatusEntity.setIdDatas(ConstantStatus.SYNC_SCAN_ORDER);
@ -74,7 +87,29 @@ public class SpsSyncDownloadService {
}
}
// 创建国家库同步任务
public void syncDiProductsTask() {
BasicExportStatusEntity basicExportStatusEntity4 = basicExportService.findByData(ConstantStatus.SYNC_DI_PRODUCTS, 0);
if (basicExportStatusEntity4 == null) {
BaseResponse<SpSyncUdiResponse> baseResponse = syncUdi(getRequest(ConstantStatus.SYNC_DI_PRODUCTS));
SpSyncUdiResponse spSyncUdiResponse = baseResponse.getData();
if (CollUtil.isNotEmpty(spSyncUdiResponse.getProductInfoEntityList())
|| CollUtil.isNotEmpty(spSyncUdiResponse.getUdiCompanyEntities())) {
BasicExportStatusEntity basicExportStatusEntity = new BasicExportStatusEntity();
basicExportStatusEntity.setId(CustomUtil.getId());
basicExportStatusEntity.setIdDatas(ConstantStatus.SYNC_DI_PRODUCTS);
basicExportStatusEntity.setType(BasicProcessStatus.NEW_ALL_DI);
basicExportStatusEntity.setUpdateTime(new Date());
basicExportStatusEntity.setStatus(0);
basicExportStatusEntity.setStartTime(new Date());
basicExportStatusEntity.setScheduleType(BasicProcessStatus.SCHEDULE_NORMAL);
basicExportService.insertExportStatus(basicExportStatusEntity);
}
}
}
//获取需要同步信息
public BaseResponse findOrder(SpsSyncDataRequest spsSyncDataRequest) {
SpsSyncOrderResponse syncOrderResponse = new SpsSyncOrderResponse();
@ -159,6 +194,33 @@ public class SpsSyncDownloadService {
return ResultVOUtils.success(syncOrderResponse);
}
// 获取需要同步国家库数据
@Resource
ProductInfoService productInfoService;
@Resource
UdiCompanyService udiCompanyService;
//udi同步数据
public BaseResponse syncUdi(SpsSyncDataRequest spsSyncDataRequest) {
SpSyncUdiResponse spSyncUdiResponse = new SpSyncUdiResponse();
SyncDataSetResponse syncDataSetEntity = syncDataSetService.selectSet();
if (syncDataSetEntity.getDbDiProducts() == 2) {
ProductInfoFilterRequest productInfoFilterRequest = new ProductInfoFilterRequest();
BeanUtils.copyProperties(spsSyncDataRequest, productInfoFilterRequest);
productInfoFilterRequest.setUpdateTime(spsSyncDataRequest.getLastUpdateTime());
List<ProductInfoEntity> productInfoEntityList = productInfoService.syncDlUdi(productInfoFilterRequest);
UdiCompanyRequest udiCompanyRequest = new UdiCompanyRequest();
BeanUtils.copyProperties(spsSyncDataRequest, udiCompanyRequest);
udiCompanyRequest.setUpdateTime(spsSyncDataRequest.getLastUpdateTime());
List<UdiCompanyEntity> udiCompanyEntities = udiCompanyService.syncDlCompany(udiCompanyRequest);
spSyncUdiResponse.setUdiCompanyEntities(udiCompanyEntities);
spSyncUdiResponse.setProductInfoEntityList(productInfoEntityList);
}
return ResultVOUtils.success(spSyncUdiResponse);
}
public SpsSyncDataRequest getRequest(String type) {
SpsSyncDataRequest spsSyncDataRequest = new SpsSyncDataRequest();
spsSyncDataRequest.setPage(1);

@ -55,6 +55,24 @@ public class AsyncHeartTask implements SchedulingConfigurer {
SyncDataSetResponse syncDataSetEntity = syncDataSetService.selectSet();
if (syncDataSetEntity.isDownstreamEnable()) {
if (syncDataSetEntity.getSyncTime() != null) {
long timeInterval = syncDataSetEntity.getSyncTime() * 60 * 1000;
long curTime = System.currentTimeMillis();
Long lastTime = (Long) redisUtil.get("SPS_SYNC_GEN_DATA");
if (lastTime == null) {
lastTime = System.currentTimeMillis();
redisUtil.set("SPS_SYNC_GEN_DATA", lastTime);
}
if (curTime - lastTime > timeInterval) {
spsSyncDownloadService.syncDiProductsTask();
// todo 生成任务都写在这
redisUtil.set("SPS_SYNC_GEN_DATA", curTime);
}
}
//定时同步单据最近更新数据至任务表,等待下载
if (syncDataSetEntity.getOrderSyncTime() != null) {
long timeInterval = syncDataSetEntity.getOrderSyncTime() * 60 * 1000;
@ -65,7 +83,7 @@ public class AsyncHeartTask implements SchedulingConfigurer {
redisUtil.set("SPS_ORDER_SYNC_GEN_DATA", lastTime);
}
if (curTime - lastTime > timeInterval) {
spsSyncDownloadService.syncOrderUpdateTime();
spsSyncDownloadService.syncOrderTask();
redisUtil.set("SPS_ORDER_SYNC_GEN_DATA", curTime);
}
}

Loading…
Cancel
Save