diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/DownloadThirdSysDataTask.java b/api-admin/src/main/java/com/glxp/api/admin/thread/DownloadThirdSysDataTask.java new file mode 100644 index 00000000..089a8bcd --- /dev/null +++ b/api-admin/src/main/java/com/glxp/api/admin/thread/DownloadThirdSysDataTask.java @@ -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 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> busResponse = erpBasicClient.getBusTypes(filterBasicThirdSysDetailRequest); + if (busResponse != null && busResponse.getCode() == 20000) { + List 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("第三方系统往来产品信息数据下载完成"); + } + } + } + + } +} diff --git a/api-admin/src/main/java/com/glxp/api/admin/thread/OrderSubmitTask.java b/api-admin/src/main/java/com/glxp/api/admin/thread/OrderSubmitTask.java new file mode 100644 index 00000000..de40f3b7 --- /dev/null +++ b/api-admin/src/main/java/com/glxp/api/admin/thread/OrderSubmitTask.java @@ -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 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()); + } + + +}