package com.lantone.daqe.facade;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lantone.common.enums.IsDeleteEnum;
import com.lantone.common.util.BeanUtil;
import com.lantone.common.util.StringUtil;
import com.lantone.common.util.SysUserUtils;
import com.lantone.daqe.dto.GetRecordTemplateManageDTO;
import com.lantone.daqe.dto.GetRecordTemplatePageDTO;
import com.lantone.daqe.entity.RecordTemplate;
import com.lantone.daqe.facade.base.RecordTemplateFacade;
import com.lantone.daqe.vo.GetRecordTemplateByIdVO;
import com.lantone.daqe.vo.GetRecordTemplatePageVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @Description: 文书模板维护-业务处理类
 * @author： zhanghang
 * @time：2022/2/28 17:47
 */
@Component
public class RecordTemplateManagementFacade {

    @Autowired
    private RecordTemplateFacade recordTemplateFacade;

    /**
     * 获取文书模板信息分页列表数据
     *
     * @param getRecordTemplatePageVO
     * @return: 文书模板信息分页数据
     */
    public IPage<GetRecordTemplatePageDTO> getRecordTemplatePage(GetRecordTemplatePageVO getRecordTemplatePageVO) {
        Long currentHospitalId = SysUserUtils.getCurrentHospitalId();
        getRecordTemplatePageVO.setHospitalId(currentHospitalId);
        Page<GetRecordTemplatePageDTO> getRecordTemplatePageDTOPage = new Page<>();

        QueryWrapper<RecordTemplate> recordTemplateQueryWrapper = new QueryWrapper<>();
        recordTemplateQueryWrapper.eq(getRecordTemplatePageVO.getHospitalId() != null, "hospital_id", getRecordTemplatePageVO.getHospitalId());
        recordTemplateQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
        recordTemplateQueryWrapper.like(StringUtil.isNotBlank(getRecordTemplatePageVO.getCode()), "code", getRecordTemplatePageVO.getCode());
        recordTemplateQueryWrapper.like(StringUtil.isNotBlank(getRecordTemplatePageVO.getName()), "name", getRecordTemplatePageVO.getName());
        recordTemplateQueryWrapper.like(StringUtil.isNotBlank(getRecordTemplatePageVO.getParentCode()), "parent_code", getRecordTemplatePageVO.getParentCode());
        recordTemplateQueryWrapper.like(StringUtil.isNotBlank(getRecordTemplatePageVO.getParentName()), "parent_name", getRecordTemplatePageVO.getParentName());
        Page<RecordTemplate> recordTemplatePage = new Page<>(getRecordTemplatePageVO.getCurrent(), getRecordTemplatePageVO.getSize());
        recordTemplateFacade.page(recordTemplatePage, recordTemplateQueryWrapper);
        BeanUtil.copyProperties(recordTemplatePage, getRecordTemplatePageDTOPage);
        List<GetRecordTemplatePageDTO> getRecordTemplatePageDTOList = BeanUtil.listCopyTo(recordTemplatePage.getRecords(), GetRecordTemplatePageDTO.class);

        getRecordTemplatePageDTOPage.setRecords(getRecordTemplatePageDTOList);
        return getRecordTemplatePageDTOPage;
    }

    /**
     * 根据ID获取具体的模板内容
     *
     * @param getRecordTemplateByIdVO
     * @return: 模板具体的内容
     */
    public GetRecordTemplateManageDTO getRecordTemplateById(GetRecordTemplateByIdVO getRecordTemplateByIdVO) {
        GetRecordTemplateManageDTO getRecordTemplateManageDTO = new GetRecordTemplateManageDTO();
        RecordTemplate recordTemplate = recordTemplateFacade.getOne(new QueryWrapper<RecordTemplate>()
                .eq("is_deleted", IsDeleteEnum.N.getKey())
                .eq("id", getRecordTemplateByIdVO.getId())
        );
        BeanUtil.copyProperties(recordTemplate, getRecordTemplateManageDTO);
        return getRecordTemplateManageDTO;
    }
}