package com.nantian.cloud.dbcapp.service.impl;

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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nantian.cloud.dbcapp.entity.ReportAbarbeitung;
import com.nantian.cloud.dbcapp.mapper.record.ReportAbarbeitungMapper;
import com.nantian.cloud.dbcapp.service.IReportAbarbeitungService;
import com.nantian.cloud.dbcapp.tool.AreaCode;
import com.nantian.sc.cloud.common.security.util.SecurityUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 不合格报告整改记录表 服务实现类
 * </p>
 *
 * @author qqm
 * @since 2024-03-08
 */
@Service
public class ReportAbarbeitungServiceImpl extends ServiceImpl<ReportAbarbeitungMapper, ReportAbarbeitung> implements IReportAbarbeitungService {

    @Override
    public IPage<ReportAbarbeitung> getReportAbarbeitungInfo(Page page, String enterpriseCode,String enterpriseName,String abarbeitungSchedule) {
        //获取用户所属地市
        String deptId = SecurityUtils.getUser().getDeptId().toString().substring(0,4);
        AreaCode areaCode = new AreaCode();
        String area = areaCode.getAreaMapB().get(deptId);
        QueryWrapper<ReportAbarbeitung> queryWrapper = new QueryWrapper<>();
        if (!"5300".equals(deptId)){
            queryWrapper.eq("province",area);
        }
        if(StringUtils.isNotBlank(enterpriseCode)){
            queryWrapper.eq("enterprise_code",enterpriseCode);
        }
        if(StringUtils.isNotBlank(abarbeitungSchedule)){
            queryWrapper.eq("abarbeitung_schedule",abarbeitungSchedule);
        }
        if(StringUtils.isNotBlank(enterpriseName)){
            queryWrapper.like("enterprise_name",enterpriseName);
        }
        queryWrapper.orderByDesc("re_year");
        return baseMapper.selectPage(page, queryWrapper);
    }

    @Override
    public ReportAbarbeitung selectOneByEntName(String entName,String startTime,String endTime) {
        return baseMapper.selectOne(new QueryWrapper<ReportAbarbeitung>()
                .eq("enterprise_name", entName)
                .between("re_year", startTime, endTime)
                .orderByDesc("abarbeitung_time").last("limit 1"));
    }
}
