1.添加立即下载自助平台数据接口

zhairh
x_z 3 years ago
parent de98f063c5
commit d3bdc7bb1d

@ -41,6 +41,7 @@ public class Constant {
public static final String dlThrInvProducts = "THR_DOWNLOAD_INV_PRODUCTS"; public static final String dlThrInvProducts = "THR_DOWNLOAD_INV_PRODUCTS";
public static final String dlThrOrders = "THR_DOWNLOAD_ORDERS"; public static final String dlThrOrders = "THR_DOWNLOAD_ORDERS";
public static final String dlThrCorps = "THR_DOWNLOAD_CORPS"; public static final String dlThrCorps = "THR_DOWNLOAD_CORPS";
public static final String SPS_SYNC_DOWNLOAD_INFO = "SPS_SYNC_DOWNLOAD_INFO";
public static String SPTM_TO_DI = "sptm_to_di"; public static String SPTM_TO_DI = "sptm_to_di";

@ -7,8 +7,9 @@ import com.glxp.api.admin.req.basic.BasicDownloadRequest;
import com.glxp.api.admin.req.info.DeleteRequest; import com.glxp.api.admin.req.info.DeleteRequest;
import com.glxp.api.admin.res.PageSimpleResponse; import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.service.basic.BasicDownloadService; import com.glxp.api.admin.service.basic.BasicDownloadService;
import com.glxp.api.admin.service.inout.OrderService; import com.glxp.api.admin.thread.DlBasicService;
import com.glxp.api.admin.util.RedisUtil; import com.glxp.api.admin.util.RedisUtil;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.common.util.ResultVOUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -32,7 +33,7 @@ public class SpsSyncDownloadController {
@Resource @Resource
SpGetHttpClient spGetHttp; SpGetHttpClient spGetHttp;
@Resource @Resource
OrderService orderService; DlBasicService dlBasicService;
@GetMapping("/spssync/download/basic/udiinfo/getStatus") @GetMapping("/spssync/download/basic/udiinfo/getStatus")
@ -82,5 +83,19 @@ public class SpsSyncDownloadController {
} }
/**
*
*
* @param type
* @return
*/
@GetMapping("/spsync/download/now")
public BaseResponse downloadNow(Integer type) {
if (null == type) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL);
}
return dlBasicService.downloadNow(type);
}
} }

@ -6,10 +6,9 @@ import com.alibaba.fastjson.TypeReference;
import com.glxp.api.admin.entity.basic.BasicExportStatusEntity; import com.glxp.api.admin.entity.basic.BasicExportStatusEntity;
import com.glxp.api.admin.entity.info.SyncDataSetEntity; import com.glxp.api.admin.entity.info.SyncDataSetEntity;
import com.glxp.api.admin.entity.inout.IOOrderStatusEntity; import com.glxp.api.admin.entity.inout.IOOrderStatusEntity;
import com.glxp.api.admin.httpclient.UHttpClient;
import com.glxp.api.admin.req.basic.BasicExportStatusRequest; import com.glxp.api.admin.req.basic.BasicExportStatusRequest;
import com.glxp.api.admin.req.inout.OrderStatusFilterRequest; import com.glxp.api.admin.req.inout.OrderStatusFilterRequest;
import com.glxp.api.admin.req.sync.BasicDataFilterRequest; import com.glxp.api.admin.req.sync.PostDownloadInfo;
import com.glxp.api.admin.res.PageSimpleResponse; import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.basic.SpsSyncBusResponse; import com.glxp.api.admin.res.basic.SpsSyncBusResponse;
import com.glxp.api.admin.res.basic.SpsSyncDataResponse; import com.glxp.api.admin.res.basic.SpsSyncDataResponse;
@ -20,7 +19,6 @@ import com.glxp.api.admin.service.info.SyncDataSetService;
import com.glxp.api.admin.util.OkHttpCli; import com.glxp.api.admin.util.OkHttpCli;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.common.util.ResultVOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -204,5 +202,13 @@ public class SpGetHttpClient {
return response; return response;
} }
public BaseResponse<String> postDownloadInfo(PostDownloadInfo postDownloadInfo) {
String json = JSONUtil.toJsonStr(postDownloadInfo);
String result = okHttpCli.doPostJson(getIpUrl() + "/udisp/sync/downloadNow", json);
BaseResponse<String> response =
JSONObject.parseObject(result, new TypeReference<BaseResponse<String>>() {
});
return response;
}
} }

@ -0,0 +1,16 @@
package com.glxp.api.admin.req.sync;
import lombok.Data;
/**
*
*/
@Data
public class PostDownloadInfo {
/**
*
*/
private Integer type;
}

@ -1,9 +1,11 @@
package com.glxp.api.admin.thread; package com.glxp.api.admin.thread;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.glxp.api.admin.constant.BasicProcessStatus; import com.glxp.api.admin.constant.BasicProcessStatus;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.constant.ConstantStatus; import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.dao.auth.AuthAdminDao; import com.glxp.api.admin.dao.auth.AuthAdminDao;
import com.glxp.api.admin.dao.basic.*; import com.glxp.api.admin.dao.basic.*;
@ -34,13 +36,13 @@ import com.glxp.api.admin.entity.purchase.SupProductEntity;
import com.glxp.api.admin.entity.thrsys.*; import com.glxp.api.admin.entity.thrsys.*;
import com.glxp.api.admin.httpclient.SpGetHttpClient; import com.glxp.api.admin.httpclient.SpGetHttpClient;
import com.glxp.api.admin.req.basic.BasicExportStatusRequest; import com.glxp.api.admin.req.basic.BasicExportStatusRequest;
import com.glxp.api.admin.req.sync.PostDownloadInfo;
import com.glxp.api.admin.res.basic.SpSyncUdiResponse; import com.glxp.api.admin.res.basic.SpSyncUdiResponse;
import com.glxp.api.admin.res.basic.SpsSyncBusResponse; import com.glxp.api.admin.res.basic.SpsSyncBusResponse;
import com.glxp.api.admin.res.basic.SpsSyncDataResponse; import com.glxp.api.admin.res.basic.SpsSyncDataResponse;
import com.glxp.api.admin.res.basic.SpsSyncOrderResponse; import com.glxp.api.admin.res.basic.SpsSyncOrderResponse;
import com.glxp.api.admin.service.auth.DeptService; import com.glxp.api.admin.service.auth.DeptService;
import com.glxp.api.admin.service.basic.*; import com.glxp.api.admin.service.basic.*;
import com.glxp.api.admin.service.info.SystemParamConfigService;
import com.glxp.api.admin.service.inout.OrderService; import com.glxp.api.admin.service.inout.OrderService;
import com.glxp.api.admin.service.inventory.InvBusUserService; import com.glxp.api.admin.service.inventory.InvBusUserService;
import com.glxp.api.admin.service.inventory.InvSubWarehouseService; import com.glxp.api.admin.service.inventory.InvSubWarehouseService;
@ -54,6 +56,8 @@ import com.glxp.api.admin.util.CustomUtil;
import com.glxp.api.admin.util.DateUtil; import com.glxp.api.admin.util.DateUtil;
import com.glxp.api.admin.util.RedisUtil; import com.glxp.api.admin.util.RedisUtil;
import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactory;
@ -65,8 +69,11 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Slf4j
@Service @Service
public class DlBasicService { public class DlBasicService {
@ -730,4 +737,54 @@ public class DlBasicService {
} }
/**
*
*
* @param type
* @return
*/
public BaseResponse downloadNow(Integer type) {
Object o = redisUtil.get(Constant.SPS_SYNC_DOWNLOAD_INFO);
if (null != o) {
return ResultVOUtils.error(500, "已存在下载任务,请等待下载完成!");
}
String downloadInfo = null;
if (null != type) {
switch (type) {
case 1:
downloadInfo = "基础信息";
break;
case 2:
downloadInfo = "单据类型";
break;
case 3:
downloadInfo = "扫码单据";
break;
case 4:
downloadInfo = "国家库信息";
break;
default:
break;
}
}
PostDownloadInfo postDownloadInfo = new PostDownloadInfo();
postDownloadInfo.setType(type);
BaseResponse<String> response = spGetHttp.postDownloadInfo(postDownloadInfo);
if (null == response) {
log.error("创建下载任务失败!");
return ResultVOUtils.error(500, response.getMessage());
} else if (response.getCode() != 20000) {
log.error(response.getMessage());
return ResultVOUtils.error(500, response.getMessage());
} else {
log.info("创建:{} 下载任务成功", downloadInfo);
//在Redis中创建下载任务标识
Map<String, Object> map = new HashMap<>(2);
map.put("type", postDownloadInfo.getType());
map.put("time", cn.hutool.core.date.DateUtil.offsetMinute(new Date(), 2).getTime());
redisUtil.set(Constant.SPS_SYNC_DOWNLOAD_INFO, JSONUtil.toJsonStr(map));
return ResultVOUtils.success();
}
}
} }

@ -0,0 +1,79 @@
package com.glxp.api.admin.thread;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.dao.schedule.ScheduledDao;
import com.glxp.api.admin.entity.info.ScheduledEntity;
import com.glxp.api.admin.req.info.ScheduledRequest;
import com.glxp.api.admin.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Map;
@Slf4j
@Component
@EnableScheduling
public class DownloadSpDataTask implements SchedulingConfigurer {
@Resource
private ScheduledDao scheduledDao;
@Resource
private RedisUtil redisUtil;
@Resource
private DlBasicService dlBasicService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(this::process, triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("downloadSpDataTask");
ScheduledEntity scheduled = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduled.getCron();
if (StrUtil.isBlank(cron)) {
log.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
Object result = redisUtil.get(Constant.SPS_SYNC_DOWNLOAD_INFO);
if (null != result) {
//解析下载参数
Map map = JSONUtil.toBean(String.valueOf(result), Map.class);
DateTime taskTime = DateUtil.date(Long.valueOf(String.valueOf(map.get("time"))));
if (DateUtil.date().getTime() <= taskTime.getTime()) {
Integer type = Integer.valueOf(String.valueOf(map.get("type")));
if (type == 1) {
log.info("开始下载基础信息");
dlBasicService.dlAllData();
log.info("基础信息下载完毕");
} else if (type == 2) {
log.info("开始下载单据类型");
dlBasicService.dlAllBus();
log.info("单据类型下载完毕");
} else if ((type == 3)) {
log.info("开始下载扫码单据");
dlBasicService.dlAllOrder();
log.info("扫码单据下载完毕");
} else if (type == 4) {
log.info("开始下载国家库数据");
dlBasicService.dlAllUDI();
log.info("国家库数据下载完毕");
}
//删除标记
redisUtil.del(Constant.SPS_SYNC_DOWNLOAD_INFO);
}
}
}
}

@ -5,6 +5,7 @@ CALL Pro_Temp_ColumnWork ('io_order','wzUploadStatus','varchar(255) ', 1);
CALL Pro_Temp_ColumnWork ('io_order','wzUploadResult','varchar(255) ', 1); CALL Pro_Temp_ColumnWork ('io_order','wzUploadResult','varchar(255) ', 1);
INSERT ignore INTO sys_scheduled (`cronName`, `cron`, `customerId`, `remark`) VALUES ('downloadSpDataTask', '0 0/1 * * * ?', NULL, '立即下载自助平台数据');
-- 创建表时必须 create table if not exists 表名 -- 创建表时必须 create table if not exists 表名

Loading…
Cancel
Save