package com.glxp.api.task; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.glxp.api.dao.basic.SysWorkplaceDocumentDao; import com.glxp.api.dao.schedule.ScheduledDao; import com.glxp.api.entity.auth.AuthAdmin; import com.glxp.api.entity.basic.SysWorkplaceBus; import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectSet; import com.glxp.api.entity.system.ScheduledEntity; import com.glxp.api.req.basic.WorkBindBusTypeRequest; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.req.system.ScheduledRequest; import com.glxp.api.res.basic.SysWorkplaceDocumentResponse; import com.glxp.api.service.basic.SysWorkplaceBusService; import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.collect.IoCollectOrderService; import com.glxp.api.service.collect.IoCollectOriginService; import com.glxp.api.service.collect.IoCollectSetService; import com.glxp.api.util.IntUtil; import com.glxp.api.util.MsDateUtil; import lombok.extern.slf4j.Slf4j; 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.Date; import java.util.List; @Slf4j @Component @EnableScheduling public class AsyncIoCollectOrderFinishTask implements SchedulingConfigurer { final Logger logger = LoggerFactory.getLogger(AsyncIoCollectOrderFinishTask.class); @Resource private ScheduledDao scheduledDao; @Resource SysWorkplaceDocumentService sysWorkplaceDocumentService; @Resource IoCollectOrderService collectOrderService; @Resource SysWorkplaceBusService sysWorkplaceBusService; @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(() -> process(), triggerContext -> { ScheduledRequest scheduledRequest = new ScheduledRequest(); scheduledRequest.setCronName("ioCollectOrderFinishTask"); ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); String cron = scheduledEntity != null ? scheduledEntity.getCron() : "0 */30 * * * ?"; if (cron.isEmpty()) { logger.error("cron is null"); } return new CronTrigger(cron).nextExecutionTime(triggerContext); }); } private void process() { List list = collectOrderService.list(new LambdaQueryWrapper().eq(IoCollectOrder::getTagStatus, 1)); if (CollUtil.isNotEmpty(list)) { for (IoCollectOrder collectOrder : list) { SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(collectOrder.getBusType()); if (sysWorkplaceDocumentEntity != null && IntUtil.value(sysWorkplaceDocumentEntity.getAutoTag()) == 1 && IntUtil.value(collectOrder.getTagStatus()) == 1) { CollectOrderRequest collectOrderRequest = new CollectOrderRequest(); BeanUtils.copyProperties(collectOrderRequest, collectOrder); //获取当前业务类型对应的采集工位 SysWorkplaceBus sysWorkplaceBus = sysWorkplaceBusService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceBus::getBusTypeCode, sysWorkplaceDocumentEntity.getWorkplaceCode()).last("limit 1")); if (sysWorkplaceBus == null) break; collectOrderRequest.setWorkPlaceCode(sysWorkplaceBus.getWorkplaceCode()); collectOrderRequest.setBusType(sysWorkplaceBus.getBusTypeCode()); collectOrderRequest.setBillNo(collectOrder.getBillNo()); if (sysWorkplaceDocumentEntity.getAutoHandle()) { //单据是否自动完成 是 调用 完成 AuthAdmin authAdmin = new AuthAdmin(); authAdmin.setId(1l); collectOrderRequest.setUpdateUser(1l); collectOrderService.finishOrder(collectOrderRequest, authAdmin, true); } } } } } }