package com.ruoyi.web.controller.task; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.system.model.TCrmClinic; import com.ruoyi.system.model.TErpProcurement; import com.ruoyi.system.service.TCrmClinicService; import com.ruoyi.system.service.TErpProcurementService; import com.ruoyi.system.utils.util.AIUtil; import com.ruoyi.system.vo.TCrmClinicVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; /** * @author xiaochen * @date 2023/7/11 8:39 */ @Component public class TaskUtil { @Autowired private RedisCache redisCache; @Autowired private AIUtil aiUtil; @Autowired private TCrmClinicService crmClinicService; @Autowired private TErpProcurementService erpProcurementService; @Scheduled(fixedRate = 86460000) // @Scheduled(cron = "10 0 0 * * ?") public void dayOfProportionBill() { try { // 查询跳转检测的用户 Set cacheSet = redisCache.getCacheSet(Constants.AI_USER_INSPECTION); // 获取前一天时间 LocalDate lastDay = LocalDate.now().minusDays(1); for (String phone : cacheSet) { R result = aiUtil.reportQuery(phone, lastDay.toString(), lastDay.toString()); JSONObject data = result.getData(); System.err.println(data); } } catch (Exception e) { e.printStackTrace(); } } @Scheduled(cron = "10 0 0 * * ?") public void monthUpdateClinicPerformance() { try { // 判断哪些诊所本月没有业绩达标 List clinics = crmClinicService.list(); List procurements = erpProcurementService.list(Wrappers.lambdaQuery(TErpProcurement.class) .in(TErpProcurement::getStatus, Arrays.asList(3,4,5)) .likeRight(TErpProcurement::getCreateTime, LocalDate.now())); for (TCrmClinic clinic : clinics) { List procurementList = procurements.stream().filter(procurement -> procurement.getClinicId().equals(clinic.getId())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(procurementList)){ BigDecimal monthPurchaseAmount = procurementList.stream().map(TErpProcurement::getPayMoney).reduce(BigDecimal.ZERO, BigDecimal::add); // 未达标 if(monthPurchaseAmount.compareTo(clinic.getLowProcurementMoney())<0){ clinic.setPerformanceCount(clinic.getPerformanceCount()+1); } } } crmClinicService.updateBatchById(clinics); } catch (Exception e) { e.printStackTrace(); } } }