SignReportSummerJob.java 2.65 KB
package com.ruoyi.job;

import com.ruoyi.domain.dss.app.vo.SignReportGroupByVo;
import com.ruoyi.domain.sign.in.summary.SignReportDaySummary;
import com.ruoyi.service.SignReportServer;
import com.ruoyi.service.sign.in.summary.SignReportDaySummaryService;
import com.ruoyi.utils.DateUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

@Slf4j
@Component("signReportSummerJob")
public class SignReportSummerJob implements InitializingBean {
    @Autowired
    private SignReportServer signReportServer;
    @Autowired
    private SignReportDaySummaryService signReportDaySummaryService;

    public void calSignReportSummary() throws ParseException {
        Date date = new Date();
        String dateStr = DateUtil.YYYY_MM_LINK.format(DateUtils.addDays(date, -1));
        List<SignReportGroupByVo> signReportGroupByVos = signReportServer.querySignReportGroupByDateStrVo(dateStr);
        String dateStr1 = DateUtil.YYYY_MM_DD_LINK.format(DateUtils.addDays(date, -1));

        if (CollectionUtils.isNotEmpty(signReportGroupByVos)) {
            List<SignReportGroupByVo> voList = signReportGroupByVos.stream().filter(s -> StringUtils.equals(s.getDateStr(), dateStr1)).collect(Collectors.toList());

            if (CollectionUtils.isNotEmpty(voList)) {
                SignReportDaySummary summary = new SignReportDaySummary();
                summary.setDatestr(dateStr1);

                List<SignReportDaySummary> summaries = signReportDaySummaryService.list(summary);
                if (CollectionUtils.isNotEmpty(summaries)) {
                    Set<Integer> ids = summaries.stream().map(SignReportDaySummary::getId).collect(Collectors.toSet());
                    signReportDaySummaryService.removeByIds(ids);
                }
                for (SignReportGroupByVo vo : voList) {
                    BeanUtils.copyProperties(vo, summary);
                    try {
                        signReportDaySummaryService.save(summary);
                    } catch (Exception e) {
                        log.error("保存签到汇总异常:[{}]", dateStr, e);
                    }
                }
            }
        }
    }

    @Override
    public void afterPropertiesSet() throws Exception {

    }
}