package com.mzl.flower.thread; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mzl.flower.entity.flower.FlowerCategory; import com.mzl.flower.entity.partner.Partner; import com.mzl.flower.mapper.flower.FlowerCategoryMapper; import com.mzl.flower.mapper.partner.PartnerMapper; import com.mzl.flower.service.flower.FlowerService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @Component @Slf4j public class FlowerCategoryPriceThread { ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); @Autowired private FlowerService flowerService; @Autowired private FlowerCategoryMapper categoryMapper; @Autowired private PartnerMapper partnerMapper; public void run() { List cLs = categoryMapper.selectList(new QueryWrapper() .isNotNull("parent_id")); if(cLs != null && cLs.size() > 0){ List ls = partnerMapper.selectList(new QueryWrapper().eq("status", "P")); for(FlowerCategory c : cLs){ addTask(flowerService, c.getId(), null); // if(ls != null && ls.size() > 0){ // for(Partner p : ls){ // addTask(flowerService, c.getId(), p.getId()); // } // } } } } private void addTask(FlowerService service, Long categoryId, Long partnerId) { SelfTask t = new SelfTask(service, categoryId, partnerId); fixedThreadPool.execute(t); } private class SelfTask implements Runnable { private FlowerService service; private Long categoryId; private Long partnerId; public SelfTask(FlowerService service, Long categoryId, Long partnerId) { this.service = service; this.categoryId = categoryId; this.partnerId = partnerId; } public void run() { try { service.calculateCategoryDaily(categoryId, partnerId); } catch (Exception e) { log.error("==> 计算均价 categoryId: " + categoryId + "; partnerId: " + partnerId + "; 错误信息:" + e.getMessage()); } } } }