package com.glxp.api.task; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.glxp.api.dao.collect.IoCollectSetBustypeMapper; 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.collect.IoCollectSetBustype; import com.glxp.api.entity.system.ScheduledEntity; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.req.system.ScheduledRequest; 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.IoCollectSetService; import com.glxp.api.util.IntUtil; 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.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; @Resource IoCollectSetBustypeMapper ioCollectSetBustypeMapper; @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); }); } @Resource IoCollectSetService collectSetService; private void process() { List list = collectOrderService.list(new LambdaQueryWrapper().eq(IoCollectOrder::getTagStatus, 1)); IoCollectSet collectSet = collectSetService.getSet(); 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(collectOrder, collectOrderRequest); //获取当前业务类型对应的采集工位 List ioCollectSetBustypes = ioCollectSetBustypeMapper.selectList( new LambdaQueryWrapper() .eq(IoCollectSetBustype::getSetCode, "autoFinishOrder") .eq(IoCollectSetBustype::getBusType, sysWorkplaceDocumentEntity.getDocumentTypeCode())); SysWorkplaceBus sysWorkplaceBus = null; if (CollUtil.isNotEmpty(ioCollectSetBustypes)) { sysWorkplaceBus = sysWorkplaceBusService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceBus::getBusTypeCode, sysWorkplaceDocumentEntity.getDocumentTypeCode()).last("limit 1")); } if (sysWorkplaceBus == null) break; collectOrderRequest.setWorkPlaceCode(sysWorkplaceBus.getWorkplaceCode()); collectOrderRequest.setBusType(sysWorkplaceBus.getBusTypeCode()); collectOrderRequest.setBillNo(collectOrder.getBillNo()); if (IntUtil.value(collectSet.getAutoFinishOrder())) { //单据是否自动完成 是 调用 完成 AuthAdmin authAdmin = new AuthAdmin(); authAdmin.setId(1l); collectOrderRequest.setUpdateUser(1l); try { collectOrderService.finishOrder(collectOrderRequest, authAdmin, true); } catch (Exception e) { log.error("自动完成第三方处方单异常", e); } } } } } } }