diff --git a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java index 95fe4b11..f9a5d63e 100644 --- a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java +++ b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java @@ -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; //需要传递任务 diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index 1ddd5641..1a61fc87 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -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"; diff --git a/src/main/java/com/glxp/api/res/sync/SpSyncUdiResponse.java b/src/main/java/com/glxp/api/res/sync/SpSyncUdiResponse.java new file mode 100644 index 00000000..d2276d0c --- /dev/null +++ b/src/main/java/com/glxp/api/res/sync/SpSyncUdiResponse.java @@ -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 productInfoEntityList; + List udiCompanyEntities; +} diff --git a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java index 6a669cf6..2186961b 100644 --- a/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java +++ b/src/main/java/com/glxp/api/service/sync/SpsSyncDownloadService.java @@ -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 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 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 productInfoEntityList = productInfoService.syncDlUdi(productInfoFilterRequest); + UdiCompanyRequest udiCompanyRequest = new UdiCompanyRequest(); + BeanUtils.copyProperties(spsSyncDataRequest, udiCompanyRequest); + udiCompanyRequest.setUpdateTime(spsSyncDataRequest.getLastUpdateTime()); + List 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); diff --git a/src/main/java/com/glxp/api/task/AsyncHeartTask.java b/src/main/java/com/glxp/api/task/AsyncHeartTask.java index c1d3eafa..9680a655 100644 --- a/src/main/java/com/glxp/api/task/AsyncHeartTask.java +++ b/src/main/java/com/glxp/api/task/AsyncHeartTask.java @@ -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); } }