| | |
| | | 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.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author xiaochen |
| | |
| | | @Component |
| | | public class TaskUtil { |
| | | |
| | | @Scheduled(cron = "0 0 0 * * ?") |
| | | @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 = "0 0 0 L * ?") |
| | | public void monthUpdateClinicPerformance() { |
| | | try { |
| | | // 判断哪些诊所本月没有业绩达标 |
| | | List<TCrmClinic> clinics = crmClinicService.list(); |
| | | String monthDate = new SimpleDateFormat("yyyy-MM").format(new Date()); |
| | | List<TErpProcurement> procurements = erpProcurementService.list(Wrappers.lambdaQuery(TErpProcurement.class) |
| | | .in(TErpProcurement::getStatus, Arrays.asList(3,4,5)) |
| | | .likeRight(TErpProcurement::getCreateTime, monthDate)); |
| | | 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(); |
| | | } |