package com.dy.pipIrrTemp.statistics; 
 | 
  
 | 
import com.dy.common.util.DateTime; 
 | 
import com.dy.pipIrrGlobal.daoSt.StClientAmountDayMapper; 
 | 
import com.dy.pipIrrGlobal.daoSt.StClientAmountMonthMapper; 
 | 
import com.dy.pipIrrGlobal.daoSt.StClientAmountYearMapper; 
 | 
import com.dy.pipIrrGlobal.pojoSt.StClientAmountYear; 
 | 
import com.dy.pipIrrGlobal.voSt.VoClientAmountStatistics; 
 | 
import com.dy.pipIrrTemp.util.StClientAmountConstant; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * @Author: liurunyu 
 | 
 * @Date: 2024/12/30 09:52 
 | 
 * @Description 
 | 
 */ 
 | 
  
 | 
@Slf4j 
 | 
@Service 
 | 
public class StClientAmountYearSv { 
 | 
  
 | 
    protected StClientAmountDayMapper stClientAmountDayDao; 
 | 
  
 | 
    protected StClientAmountMonthMapper stClientAmountMonthDao; 
 | 
  
 | 
    protected StClientAmountYearMapper stClientAmountYearDao; 
 | 
  
 | 
    @Autowired 
 | 
    private void setDao(StClientAmountDayMapper dao) { 
 | 
        this.stClientAmountDayDao = dao; 
 | 
    } 
 | 
  
 | 
    @Autowired 
 | 
    private void setDao(StClientAmountMonthMapper dao) { 
 | 
        this.stClientAmountMonthDao = dao; 
 | 
    } 
 | 
  
 | 
    @Autowired 
 | 
    private void setDao(StClientAmountYearMapper dao) { 
 | 
        this.stClientAmountYearDao = dao; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 删除所有 
 | 
     * @throws Exception 
 | 
     */ 
 | 
    public void deleteAllStClientAmountYear() throws Exception { 
 | 
        stClientAmountYearDao.deleteAll() ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 转存农户年取水量 
 | 
     * 
 | 
     * @throws Exception 
 | 
     */ 
 | 
    public void statisticsClientAmountYear() throws Exception { 
 | 
        //统计到昨天,今天的统计明日零晨定时任务统计 
 | 
        Long curY = Long.parseLong(DateTime.yyyy().replaceAll("-", "")); 
 | 
        Long atYear ; 
 | 
        for(int[] ym : StClientAmountConstant.yearMonthGrp) { 
 | 
            atYear = ym[0] + 0L ; 
 | 
            if(atYear <= curY) { 
 | 
                this.doSome(ym[0]); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    @Transactional 
 | 
    protected void doSome(Integer statisticsYear){ 
 | 
        List<VoClientAmountStatistics> list = stClientAmountMonthDao.statisticsByClient(statisticsYear) ; 
 | 
        if(list != null && list.size() > 0){ 
 | 
            List<StClientAmountYear> listOfYear = stClientAmountYearDao.selectByYear(statisticsYear) ; 
 | 
            for(VoClientAmountStatistics vo : list){ 
 | 
                StClientAmountYear po = this.getDataOfClient(listOfYear, vo.clientId) ; 
 | 
                if(po == null){ 
 | 
                    po = new StClientAmountYear() ; 
 | 
                    po.clientId = vo.clientId ; 
 | 
                    po.year = statisticsYear ; 
 | 
                } 
 | 
                this.setValue(vo, po); 
 | 
                if(po.id == null) { 
 | 
                    stClientAmountYearDao.insert(po); 
 | 
                }else{ 
 | 
                    stClientAmountYearDao.updateByPrimaryKeySelective(po) ; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
    private StClientAmountYear getDataOfClient(List<StClientAmountYear> list, Long clientId){ 
 | 
        if(list != null && list.size() > 0){ 
 | 
            for(StClientAmountYear vo : list){ 
 | 
                if(vo.clientId.longValue() == clientId.longValue()){ 
 | 
                    //程序逻辑控制上,集合中只有一个对象 
 | 
                    return vo ; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
    private void setValue(VoClientAmountStatistics vo, StClientAmountYear po){ 
 | 
        po.amount = vo.amount; 
 | 
        po.money = vo.money; 
 | 
        po.times = vo.times; 
 | 
    } 
 | 
  
 | 
} 
 |