package com.glxp.api.task; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.glxp.api.dao.schedule.ScheduledDao; import com.glxp.api.entity.collect.RelCodeBatch; import com.glxp.api.entity.collect.RelCodeDetail; import com.glxp.api.entity.system.ScheduledEntity; import com.glxp.api.idc.service.IdcService; import com.glxp.api.req.collect.RelCodeBatchRequest; import com.glxp.api.req.collect.RelCodeDetailRequest; import com.glxp.api.req.system.ScheduledRequest; import com.glxp.api.service.collect.RelCodeBatchService; import com.glxp.api.service.collect.RelCodeDetailService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; 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.ArrayList; import java.util.List; @Component @EnableScheduling public class UploadDrugDataTask implements SchedulingConfigurer { final Logger logger = LoggerFactory.getLogger(UploadDrugDataTask.class); @Resource private ScheduledDao scheduledDao; @Resource private RelCodeBatchService relCodeBatchService; @Resource private RelCodeDetailService relCodeDetailService; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(() -> process(), triggerContext -> { ScheduledRequest scheduledRequest = new ScheduledRequest(); scheduledRequest.setCronName("uploadDrugData"); logger.info("uploadDrugData----------------"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 0/5 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); } logger.info("uploadDrugData----------------"); return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } private void process() { logger.info("uploadDrugData----process------------"); //查找扫描 List list = relCodeBatchService.list(new LambdaUpdateWrapper().in(RelCodeBatch::getUploadFlag, 0, 2)); if (CollUtil.isNotEmpty(list)){ for (int i = 0; i < list.size(); i++) { RelCodeBatch relCodeBatch = list.get(i); Integer id = relCodeBatch.getId(); List list1 = relCodeDetailService.list(new LambdaUpdateWrapper().eq(RelCodeDetail::getBatchIdFk, id)); List detailList = new ArrayList<>(); if (CollUtil.isNotEmpty(list)){ for (int i1 = 0; i1 < list1.size(); i1++) { RelCodeDetail relCodeDetail = list1.get(i1); RelCodeDetailRequest request = new RelCodeDetailRequest(); BeanUtils.copyProperties(relCodeDetail,request); detailList.add(request); } } RelCodeBatchRequest relCodeBatchRequest = new RelCodeBatchRequest(); BeanUtils.copyProperties(relCodeBatch,relCodeBatchRequest); relCodeBatchRequest.setDetailList(detailList); relCodeBatchService.uploadDrugDataOne(relCodeBatchRequest); } } } }