|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | private RedisCache redisCache; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AIUtil aiUtil; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TCrmClinicService crmClinicService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TErpProcurementService erpProcurementService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(fixedRate = 86460000) | 
|---|
|  |  |  | //    @Scheduled(cron = "10 0 0 * * ?") | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|