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

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.chinaweal.aiccs.aiccs.susnate.dto.ENateOperRegDecAddDTO;
import com.chinaweal.aiccs.aiccs.susnate.dto.ENateOperRegDecQueryDTO;
import com.chinaweal.aiccs.aiccs.susnate.dto.ENateOperRegDecUpdateDTO;
import com.chinaweal.aiccs.aiccs.susnate.dto.EntBaseWithNateOperRegDecQueryDTO;
import com.chinaweal.aiccs.aiccs.susnate.entity.ENateOperRegDec;
import com.chinaweal.aiccs.aiccs.susnate.mapper.ENateOperRegDecMapper;
import com.chinaweal.aiccs.aiccs.susnate.service.IENateOperRegDecService;
import com.chinaweal.aiccs.aiccs.susnate.vo.EntBaseWithNateOperRegDecVO;
import com.chinaweal.aiccs.common.constant.CommonConstants;
import com.chinaweal.aiccs.common.util.StringUtils;
import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery;
import org.springframework.stereotype.Service;

/**
 *
 * @author zhouxy
 * @since 2025-12-29
 */
@Service
public class ENateOperRegDecServiceImpl extends ServiceImpl<ENateOperRegDecMapper, ENateOperRegDec> implements IENateOperRegDecService {

    @Override
    public ENateOperRegDec addNateOperRegDec(ENateOperRegDecAddDTO dto) {
        ENateOperRegDec entity = new ENateOperRegDec();
        entity.setPripid(dto.getPripid());
        entity.setEntname(dto.getEntname());
        entity.setUniscid(dto.getUniscid());
        entity.setRegno(dto.getRegno());
        entity.setRegOrg(dto.getRegOrg());
        entity.setRegOrgCn(dto.getRegOrgCn());
        entity.setNoticeContent(dto.getNoticeContent());
        entity.setJudAuth(dto.getJudAuth());
        entity.setJudAuthCn(dto.getJudAuthCn());
        entity.setJudDate(dto.getJudDate());
        entity.setNoticedate(dto.getNoticeDate());
        entity.setDstate(CommonConstants.FALSE_0);
        save(entity);
        return entity;
    }

    @Override
    public ENateOperRegDec updateNateOperRegDec(ENateOperRegDecUpdateDTO dto) {
        ENateOperRegDec entity = new ENateOperRegDec();
        entity.setPersonatresId(dto.getPersonatresId());
        entity.setPripid(dto.getPripid());
        entity.setEntname(dto.getEntname());
        entity.setUniscid(dto.getUniscid());
        entity.setRegno(dto.getRegno());
        entity.setRegOrg(dto.getRegOrg());
        entity.setRegOrgCn(dto.getRegOrgCn());
        entity.setNoticeContent(dto.getNoticeContent());
        entity.setJudAuth(dto.getJudAuth());
        entity.setJudAuthCn(dto.getJudAuthCn());
        entity.setJudDate(dto.getJudDate());
        entity.setNoticedate(dto.getNoticeDate());
        updateById(entity);
        return entity;
    }

    @Override
    public boolean deleteNateOperRegDec(String personatresId) {
        ENateOperRegDec entity = new ENateOperRegDec();
        entity.setPersonatresId(personatresId);
        entity.setDstate("2");
        return updateById(entity);
    }

    @Override
    public ENateOperRegDec saveENateOperRegDec(ENateOperRegDec eNateOperRegDec) {
        save(eNateOperRegDec);
        return eNateOperRegDec;
    }

    @Override
    public IPage<ENateOperRegDec> listENateOperRegDec(BaseQuery<ENateOperRegDec> query) {
        ENateOperRegDec entity = query.getEntity(ENateOperRegDec.class);
        Page<ENateOperRegDec> page = query.getPage();

        LambdaQueryWrapper<ENateOperRegDec> lambdaQueryWrapper = Wrappers.lambdaQuery();
        return page(page, lambdaQueryWrapper);
    }

    @Override
    public IPage<EntBaseWithNateOperRegDecVO> listEntBaseWithNateOperRegDec(Page<EntBaseWithNateOperRegDecVO> page, EntBaseWithNateOperRegDecQueryDTO query) {
        return baseMapper.listEntBaseWithNateOperRegDec(page, query);
    }

    @Override
    public IPage<ENateOperRegDec> listNateOperRegDec(Page<ENateOperRegDec> page, ENateOperRegDecQueryDTO query) {
        LambdaQueryWrapper<ENateOperRegDec> lambdaQueryWrapper = Wrappers.lambdaQuery();

        if (StringUtils.isNotBlank(query.getUniscid())) {
            lambdaQueryWrapper.eq(ENateOperRegDec::getUniscid, query.getUniscid());
        }
        if (StringUtils.isNotBlank(query.getEntname())) {
            lambdaQueryWrapper.like(ENateOperRegDec::getEntname, query.getEntname());
        }
        if (StringUtils.isNotBlank(query.getRegno())) {
            lambdaQueryWrapper.eq(ENateOperRegDec::getRegno, query.getRegno());
        }
        lambdaQueryWrapper.ne(ENateOperRegDec::getDstate, "2");

        return page(page, lambdaQueryWrapper);
    }
}
