| 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<String> cacheSet = redisCache.getCacheSet(Constants.AI_USER_INSPECTION); | 
|             // 获取前一天时间 | 
|             LocalDate lastDay = LocalDate.now().minusDays(1); | 
|             for (String phone : cacheSet) { | 
|                 R<JSONObject> 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<TCrmClinic> clinics = crmClinicService.list(); | 
|             List<TErpProcurement> 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<TErpProcurement> 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(); | 
|         } | 
|     } | 
|   | 
|   | 
| } |