1.提交定时任务

master
x_z 3 years ago
parent d9bcca035d
commit fd244a1a7c

@ -0,0 +1,173 @@
package com.glxp.api.admin.thread;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.glxp.api.admin.constant.BasicProcessStatus;
import com.glxp.api.admin.dao.basic.BasicThirdSysDao;
import com.glxp.api.admin.dao.schedule.ScheduledDao;
import com.glxp.api.admin.dao.schedule.SystemParamConfigDao;
import com.glxp.api.admin.entity.basic.BasicThirdSysBusApiEntity;
import com.glxp.api.admin.entity.basic.BussinessOriginTypeEntity;
import com.glxp.api.admin.entity.info.ScheduledEntity;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
import com.glxp.api.admin.entity.thrsys.ThrCorpImportLogEntity;
import com.glxp.api.admin.entity.thrsys.ThrProductsImportLogEntity;
import com.glxp.api.admin.httpclient.ErpBasicClient;
import com.glxp.api.admin.req.basic.FilterBasicThirdSysDetailRequest;
import com.glxp.api.admin.req.info.ScheduledRequest;
import com.glxp.api.admin.req.thrsys.FilterThrProductsRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.service.basic.BussinessOriginTypeService;
import com.glxp.api.admin.service.thrsys.ThrCorpImportLogService;
import com.glxp.api.admin.service.thrsys.ThrInvWarehouseService;
import com.glxp.api.admin.service.thrsys.ThrProductsImportLogService;
import com.glxp.api.admin.util.CustomUtil;
import com.glxp.api.common.res.BaseResponse;
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.Date;
import java.util.List;
/**
*
*/
@Slf4j
@Component
@EnableScheduling
public class DownloadThirdSysDataTask implements SchedulingConfigurer {
@Resource
private ScheduledDao scheduledDao;
@Resource
private SystemParamConfigDao systemParamConfigDao;
@Resource
private ThrInvWarehouseService thrInvWarehouseService;
@Resource
private BasicThirdSysDao basicThirdSysDao;
@Resource
private ThrCorpImportLogService thrCorpImportLogService;
@Resource
private ThrCorpsDlService thrCorpsDlService;
@Resource
private ThrProductsImportLogService thrProductsImportLogService;
@Resource
private ThrProductsDlService thrProductsDlService;
@Resource
private ErpBasicClient erpBasicClient;
@Resource
private BussinessOriginTypeService bussinessOriginTypeService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(this::process,
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("downThirdSysDataTask");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity.getCron();
if (cron.isEmpty()) {
log.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
SystemParamConfigEntity auto_download_thirdSys_data = systemParamConfigDao.selectByParamKey("auto_download_thirdSys_data");
if (auto_download_thirdSys_data.getParamValue().equals("0")) {
log.info("未开启自动下载第三方系统基础数据");
return;
}
//下载第三方仓库数据
//查询所有启用的第三方系统的标识
List<String> thirdIds = basicThirdSysDao.selectEnabledThirdId();
if (CollUtil.isNotEmpty(thirdIds)) {
for (String thirdId : thirdIds) {
log.info("自动下载第三方系统为:{} 的基础数据", thirdId);
log.info("开始下载第三方系统的仓库数据");
BaseResponse baseResponse = thrInvWarehouseService.downloadThirdWarehouse(thirdId);
if (baseResponse.getCode() == 20000) {
log.info("第三方系统标识为:{} 的仓库数据下载完成", thirdId);
} else {
log.info(thirdId + " 仓库数据下载失败");
log.error(JSONUtil.toJsonStr(baseResponse));
}
log.info("开始下载第三方系统的往来单位数据");
ThrCorpImportLogEntity thrCorpImportLogEntity = new ThrCorpImportLogEntity();
String genKey = CustomUtil.getId();
thrCorpImportLogEntity.setGenKey(genKey);
thrCorpImportLogEntity.setFromType("第三方系统获取");
thrCorpImportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_PROCESS);
thrCorpImportLogEntity.setUpdateTime(new Date());
thrCorpImportLogEntity.setThirdSysFk(thirdId);
thrCorpImportLogService.insertImportLog(thrCorpImportLogEntity);
thrCorpsDlService.importCorps(genKey, null, thirdId);
log.info("第三方系统往来单位数据下载完成");
log.info("开始下载第三方系统的产品信息数据");
ThrProductsImportLogEntity thrProductsImportLogEntity = new ThrProductsImportLogEntity();
String genKey1 = CustomUtil.getId();
thrProductsImportLogEntity.setGenKey(genKey1);
thrProductsImportLogEntity.setFromType("第三方系统下载");
thrProductsImportLogEntity.setStatus(BasicProcessStatus.UDIINFO_IMPORT_PROCESS);
thrProductsImportLogEntity.setUpdateTime(new Date());
thrProductsImportLogEntity.setThirdSysFk(thirdId);
thrProductsImportLogService.insertImportLog(thrProductsImportLogEntity);
FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest();
filterThrProductsRequest.setThirdSysFk(thirdId);
filterThrProductsRequest.setThirdSys(thirdId);
filterThrProductsRequest.setPage(1);
filterThrProductsRequest.setLimit(100);
thrProductsDlService.importProducrs(genKey1, filterThrProductsRequest);
log.info("第三方系统往来产品信息数据下载完成");
log.info("开始下载第三方系统的产品信息数据");
FilterBasicThirdSysDetailRequest filterBasicThirdSysDetailRequest = new FilterBasicThirdSysDetailRequest();
filterBasicThirdSysDetailRequest.setThirdSysFk(thirdId);
int page = 1;
int limit = 100;
while (true) {
filterBasicThirdSysDetailRequest.setPage(page);
filterBasicThirdSysDetailRequest.setLimit(limit);
BaseResponse<PageSimpleResponse<BasicThirdSysBusApiEntity>> busResponse = erpBasicClient.getBusTypes(filterBasicThirdSysDetailRequest);
if (busResponse != null && busResponse.getCode() == 20000) {
List<BasicThirdSysBusApiEntity> basicThirdSysBusApiEntities = busResponse.getData().getList();
if (CollUtil.isNotEmpty(basicThirdSysBusApiEntities)) {
for (BasicThirdSysBusApiEntity basicThirdSysBusApiEntity : basicThirdSysBusApiEntities) {
BussinessOriginTypeEntity bussinessOriginTypeEntity = new BussinessOriginTypeEntity();
bussinessOriginTypeEntity.setName(basicThirdSysBusApiEntity.getName());
bussinessOriginTypeEntity.setAction(basicThirdSysBusApiEntity.getCode());
bussinessOriginTypeEntity.setThirdSys(thirdId);
bussinessOriginTypeEntity.setInoutType(basicThirdSysBusApiEntity.getInoutType());
bussinessOriginTypeEntity.setRemark(basicThirdSysBusApiEntity.getRemark());
bussinessOriginTypeEntity.setEnable(true);
bussinessOriginTypeEntity.setUpdateTime(new Date());
bussinessOriginTypeService.insertBusOriginType(bussinessOriginTypeEntity);
}
if (basicThirdSysBusApiEntities.size() >= 100) {
page++;
} else
break;
} else {
break;
}
} else {
log.error("第三方系统单据类型数据下载失败");
}
log.info("第三方系统往来产品信息数据下载完成");
}
}
}
}
}

@ -0,0 +1,83 @@
package com.glxp.api.admin.thread;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.glxp.api.admin.dao.schedule.ScheduledDao;
import com.glxp.api.admin.dao.schedule.SystemParamConfigDao;
import com.glxp.api.admin.entity.info.ScheduledEntity;
import com.glxp.api.admin.entity.info.SystemParamConfigEntity;
import com.glxp.api.admin.req.info.ScheduledRequest;
import com.glxp.api.admin.service.business.StockOrderService;
import com.glxp.api.admin.service.inout.OrderService;
import com.glxp.api.common.res.BaseResponse;
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.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
*
*/
@Slf4j
@Component
@EnableScheduling
public class OrderSubmitTask implements SchedulingConfigurer {
@Resource
private ScheduledDao scheduledDao;
@Resource
private SystemParamConfigDao systemParamConfigDao;
@Resource
private OrderService orderService;
@Resource
private StockOrderService stockOrderService;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(this::process,
triggerContext -> {
ScheduledRequest scheduledRequest = new ScheduledRequest();
scheduledRequest.setCronName("submitOrderTask");
ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest);
String cron = scheduledEntity.getCron();
if (cron.isEmpty()) {
log.error("cron is null");
}
return new CronTrigger(cron).nextExecutionTime(triggerContext);
});
}
private void process() {
SystemParamConfigEntity auto_submit_order = systemParamConfigDao.selectByParamKey("auto_submit_order");
if (auto_submit_order.getParamValue().equals("0")) {
log.info("未开启自动提交单据");
return;
}
//查询可提交订单
List<String> orderIds = orderService.getWaitSubmitOrder();
AtomicInteger count = new AtomicInteger(0);
if (CollUtil.isNotEmpty(orderIds)) {
log.info("待提交单据数量为: {} 条", orderIds.size());
for (String orderId : orderIds) {
log.info("开始提交id为 {} 的单据", orderId);
BaseResponse baseResponse = stockOrderService.submitOrderToThirdys(orderId);
if (baseResponse.getCode() == 20000) {
count.addAndGet(1);
log.info("自动提交成功");
} else {
log.error("自动提交失败,响应信息:{}" + JSONUtil.toJsonStr(baseResponse));
}
}
}
log.info("单据自动提交完成,提交成功: {} 条", count.get());
}
}
Loading…
Cancel
Save