package io.renren.modules.app.service.impl;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import io.renren.modules.app.entity.FwxxEntity;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import io.renren.modules.app.dao.FhxxSelectDao;
import io.renren.modules.app.entity.Cxtj_CxtjCsbEntity;
import io.renren.modules.app.entity.FhmxzEntity;
import io.renren.modules.app.entity.FhxxSelectEntity;
import io.renren.modules.app.service.FhxxSelectService;

@Service("fhxxSelectService")
public class FhxxSelectServicelmpl extends ServiceImpl<FhxxSelectDao, FhxxSelectEntity> implements FhxxSelectService {

	/**
	 * 分户信息查询
	 * * @param pageNum
	 * @param pageSize
	 * @param map
	 * @return
	 */
	@Override
	public PageInfo<FhxxSelectEntity> selectFhxxByPage(Integer pageNum, Integer pageSize,
			FhxxSelectEntity fhxxSelectEntity) {
		//个人缴交额
		Double grje = 0.0;
		//单位缴交额
		Double dwje = 0.0;
		//缴交总额
		Double jjze = 0.0;
		//当前余额
		Double dqye = 0.0;
		Double zqje=0.0;
		List<FhxxSelectEntity> list2=new ArrayList<FhxxSelectEntity>();
		List<FwxxEntity> list3=new ArrayList<FwxxEntity>();
		List<FwxxEntity> list4=new ArrayList<FwxxEntity>();
		if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&!"".equals(fhxxSelectEntity.getDhbm())&&fhxxSelectEntity.getDhbm()!=null){
			list2 = baseMapper.selectFhxx(fhxxSelectEntity);
			list3 =baseMapper.selectgrje(fhxxSelectEntity.getDhbm());
			list4 =baseMapper.selectdwje(fhxxSelectEntity.getDhbm());
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			list2 = baseMapper.selectFhxx2(fhxxSelectEntity);
			list3 =baseMapper.selectgrje2(fhxxSelectEntity.getXmbm());
			list4 =baseMapper.selectdwje2(fhxxSelectEntity.getXmbm());
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&("".equals(fhxxSelectEntity.getXmbm())||fhxxSelectEntity.getXmbm()==null)&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			list2 = baseMapper.selectFhxx3(fhxxSelectEntity);
			list3 =baseMapper.selectgrje3(fhxxSelectEntity.getXqbm());
			list4 =baseMapper.selectdwje3(fhxxSelectEntity.getXqbm());
		}	
		
		FhxxSelectEntity entity = new FhxxSelectEntity();
		for(FwxxEntity f:list3){//合计行个人缴交额合计值
			grje+=f.getGrje();
		}
		for(FwxxEntity f:list4){//合计行单位缴交额合计值
			dwje+=f.getDwje();
		}
		for(FhxxSelectEntity f:list2){//合计行支取支出额合计值
		zqje+=Double.parseDouble(f.getZqje());
		}
		jjze=grje+dwje;//缴交总额合计值
		dqye=grje+dwje-zqje;//当前余额合计值
		PageHelper.startPage(pageNum, pageSize);
		List<FhxxSelectEntity> list = new ArrayList<FhxxSelectEntity>();
		if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&!"".equals(fhxxSelectEntity.getDhbm())&&fhxxSelectEntity.getDhbm()!=null){
			list = baseMapper.selectFhxx(fhxxSelectEntity);
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			list = baseMapper.selectFhxx2(fhxxSelectEntity);
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&("".equals(fhxxSelectEntity.getXmbm())||fhxxSelectEntity.getXmbm()==null)&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			list = baseMapper.selectFhxx3(fhxxSelectEntity);
		}
		//--------------------------------------------每一户的grje，dwje，jjze，dqye
		for(FhxxSelectEntity f1:list){
			Double grje0=0.0;
			Double dwje0=0.0;
			Double jjze0=0.0;
			Double dqye0=0.0;
			for(FwxxEntity f2:list3){
				if(f1.getFwbm().equals(f2.getFwbm())){
					grje0+=f2.getGrje();
				}
			}
			for(FwxxEntity f3:list4){
				if(f1.getFwbm().equals(f3.getFwbm())){
					dwje0+=f3.getDwje();
				}
			}
			jjze0=grje0+dwje0;
			dqye0=grje0+dwje0-Double.parseDouble(f1.getZqje());
			f1.setGrje(grje0.toString());
			f1.setDwje(dwje0.toString());
			f1.setJjze(jjze0.toString());
			BigDecimal b = new BigDecimal(dqye0);
			f1.setDqye(Double.toString(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()));
		}
		//--------------------------------------------
		int fwyjhs=0;
		if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&!"".equals(fhxxSelectEntity.getDhbm())&&fhxxSelectEntity.getDhbm()!=null){
			fwyjhs=baseMapper.selectfwyjhs(fhxxSelectEntity.getDhbm());
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&!"".equals(fhxxSelectEntity.getXmbm())&&fhxxSelectEntity.getXmbm()!=null&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			fwyjhs=baseMapper.selectfwyjhs(fhxxSelectEntity.getXmbm());
		}else if(!"".equals(fhxxSelectEntity.getXqbm())&&fhxxSelectEntity.getXqbm()!=null&&("".equals(fhxxSelectEntity.getXmbm())||fhxxSelectEntity.getXmbm()==null)&&("".equals(fhxxSelectEntity.getDhbm())||fhxxSelectEntity.getDhbm()==null)){
			fwyjhs=baseMapper.selectfwyjhs(fhxxSelectEntity.getXqbm());
		}
		entity.setFwyjhs(fwyjhs);//统计该楼栋已缴房屋户数
		entity.setIshj("1");
		entity.setGrje(grje.toString());
		entity.setJjze(jjze.toString());
		entity.setDwje(dwje.toString());
		entity.setDqye(dqye.toString());
		list.add(entity);
		PageInfo<FhxxSelectEntity> pageInfo = new PageInfo<FhxxSelectEntity>(list);
		return pageInfo;
	}

	
}
