package com.chinaweal.aiccs.aiccs.punishment.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.chinaweal.aiccs.aiccs.abnormal.entity.TSAbnList;
import com.chinaweal.aiccs.aiccs.abnormal.mapper.TSAbnListMapper;
import com.chinaweal.aiccs.aiccs.punishment.entity.Personlock;
import com.chinaweal.aiccs.aiccs.punishment.entity.dto.PersonEntDto;
import com.chinaweal.aiccs.aiccs.punishment.mapper.PersonEntMapper;
import com.chinaweal.aiccs.aiccs.punishment.mapper.PersonlockMapper;
import com.chinaweal.aiccs.aiccs.punishment.service.PersonEntService;
import com.chinaweal.aiccs.common.util.StringUtils;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.BaseServiceImpl;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.function.CustomFilterFunction;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.function.CustomWrapperPackingFunction;
import com.chinaweal.youfool.framework.springboot.mybatis.plus.page.PageRequestDto;

import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;
import java.util.*;
import java.util.function.Function;

/**
 * @ClassName PersonEntServiceImpl
 * @Description TODO
 * @Author admin
 * @Date 2022/6/24 20:37
 * @Version 1.0
 **/
@Service
public class PersonEntServiceImpl extends BaseServiceImpl<PersonEntMapper, PersonEntDto> implements PersonEntService {

    @Resource
    private PersonEntMapper personEntMapper;

    @Override
    public IPage<PersonEntDto> query(IPage<PersonEntDto> page, String regorg, String entname, String locktype, String searchCode) {
//        long size = page.getSize();
//        long current = page.getCurrent();
//        long total = page.getTotal();
        long current = page.getCurrent();
        String unisicd = "";
        String regno = "";

        if (StringUtils.isNotBlank(searchCode)) {
            if (StringUtils.isUscc(searchCode)) {
                unisicd = searchCode;
            } else {
                regno = searchCode;
            }
        }

        page.setCurrent(1);

        List<PersonEntDto> ents = personEntMapper.queryEnt( regorg, entname, locktype, searchCode);

        IPage<PersonEntDto> entDtos = personEntMapper.queryEntCjjsByPage(page, regorg, entname, locktype, searchCode);


        List<PersonEntDto> personDtos = personEntMapper.queryPerson(regorg, entname, searchCode);
//        if(entDtos!=null&entDtos.size()>0){
//            list=entDtos;
//            if(personDtos!=null&personDtos.size()>0){
//                Iterator<PersonEntDto> iterator = personDtos.iterator();
//                while(iterator.hasNext()){
//                    PersonEntDto personDto = iterator.next();
//                    for (PersonEntDto entDto : entDtos) {
//                        if(personDto.getEntname().equals(entDto.getEntname())&&personDto.getPername().equals(entDto.getRepresentative())){
//                            entDto.setPlid(personDto.getPlid());
//                            entDto.setIdcardno(personDto.getIdcardno());
//                            entDto.setPername(personDto.getPername());
//                            iterator.remove();
//                            //并发修改异常空指针
//                            break;
//                        }
//                    }
//                }
//
//                if(personDtos!=null){
        //page.getRecords().addAll(personDtos);
        //page.setTotal(page.getTotal()+personDtos.size());
//                    list.addAll(personDtos);
        //page.setSize(size);
        //页数
        //result.setPages(result.getTotal()/ result.getSize()==0?result.getTotal()/ result.getSize():result.getTotal()/ result.getSize()+1);
//                }
//            }
//        }else{
//            IPage<PersonEntDto> personDtos1 = personEntMapper.queryPerson(page,regorg, entname, searchCode);
//            if(personDtos1!=null&personDtos1.getSize()>0){
//                return personDtos1;
//
//            }
//
//        }

        if (entDtos != null && entDtos.getRecords().size() > 0) {
            page = entDtos;
            if (personDtos != null && personDtos.size() > 0) {
                for (int i = 0; i < personDtos.size(); i++) {
                    PersonEntDto personDto = personDtos.get(i);
                     for (int j = 0; j < ents.size(); j++) {
                        PersonEntDto entDto = ents.get(j);
                        if (personDto.getEntname().equals(entDto.getEntname()) && personDto.getPername().equals(entDto.getRepresentative())) {
                            entDto.setPlid(personDto.getPlid());
                            entDto.setIdcardno(personDto.getIdcardno());
                            entDto.setPername(personDto.getPername());
                            personDtos.remove(i);
                            i--;//防止并发修改异常
                            break ;
                        }


                    }
                }
            }
//                Iterator<PersonEntDto> iterator = personDtos.iterator();
//                while(iterator.hasNext()){
//                    PersonEntDto personDto = iterator.next();
//                    for (PersonEntDto entDto : entDtos.getRecords()) {
//                        if(personDto.getEntname().equals(entDto.getEntname())&&personDto.getPername().equals(entDto.getRepresentative())){
//                            entDto.setPlid(personDto.getPlid());
//                            entDto.setIdcardno(personDto.getIdcardno());
//                            entDto.setPername(personDto.getPername());
//                            iterator.remove();
//                            //并发修改异常空指针
//                            break;
//                        }
//                    }
//                    Iterator<PersonEntDto> iterator1 = entDtos.getRecords().iterator();
//                    while(iterator1.hasNext()){
//                        PersonEntDto entDto=iterator1.next();
//                        if(personDto.getEntname().equals(entDto.getEntname())&&personDto.getPername().equals(entDto.getRepresentative())){
//                            entDto.setPlid(personDto.getPlid());
//                            entDto.setIdcardno(personDto.getIdcardno());
//                            entDto.setPername(personDto.getPername());
//                            iterator.remove();
//                            break;
//                        }
//                    }
//
//                }
//
            if (personDtos != null) {
                page.setRecords(ents);
                page.getRecords().addAll(personDtos);

                page.setTotal(page.getTotal() + personDtos.size());
                //page.setSize(size);
                //页数
                //result.setPages(result.getTotal()/ result.getSize()==0?result.getTotal()/ result.getSize():result.getTotal()/ result.getSize()+1);
            }

        if (current == 1) {
            //当前页为1但记录数超过每页记录数
            if (page.getRecords().size() > page.getSize()) {
                List<PersonEntDto> list = new ArrayList<>();
                for (int i = 0; i < page.getSize(); i++) {
                    list.add(page.getRecords().get(i));
                }
                page.setRecords(list);
            }
        }

        if (current > 1 && current < page.getPages()) {
            page.setRecords(page.getRecords().subList((int) ((current - 1) * page.getSize()), (int) ((current - 1) * page.getSize()) + 10));
        }
        if (current == page.getPages()) {

            page.setRecords(page.getRecords().subList((int) ((current - 1) * page.getSize()), (int) page.getTotal()));
        }

        }else{
            IPage<PersonEntDto> personDtos1 = personEntMapper.queryPerson(page,regorg, entname, searchCode);
            if(personDtos1!=null&personDtos1.getSize()>0) {
                page = personDtos1;
            }

        }
//                 for (PersonEntDto personDto : personDtos) {
//                    for (PersonEntDto entDto : entDtos.getRecords()) {
//                        if(personDto.getEntname().equals(entDto.getEntname())&&personDto.getPername().equals(entDto.getRepresentative())){
//                            entDto.setPlid(personDto.getPlid());
//                            entDto.setIdcardno(personDto.getIdcardno());
//                            entDto.setPername(personDto.getPername());
//                            personDtos.remove(personDto);
//                            //并发修改异常空指针
//                            break;
//                        }
//                    }
//                }


//        if(entDtos!=null&entDtos.size()>0){
//            for (PersonEntDto entDto : entDtos) {
//                result.getRecords().add(entDto);
//            }
//        }
//
//        if(personDtos!=null&personDtos.size()>0){
//            for (PersonEntDto personDto : personDtos) {
//                result.getRecords().add(personDto);
//            }
//        }

        return page;
    }

//    @Overridev
//    public IPage<PersonEntDto> queryEnt(IPage<PersonEntDto> page, String regorg, String entname, String locktype, String searchCode) {
//        return null;
//    }
//
//    @Override
//    public IPage<PersonEntDto> queryPerson(IPage<PersonEntDto> page, String regorg, String entname, String searchCode) {
//        return null;
//    }


}
