package com.zjrs.ggfw.rlzysc.bpo.schedule.execute;

import com.zjrs.ggfw.portal.bpo.UserBPO;
import com.zjrs.ggfw.portal.dto.XxglDTO;
import com.zjrs.ggfw.rlzysc.blo.RcssqScheduleTaskBLO;
import com.zjrs.ggfw.rlzysc.bpo.schedule.Task;
import com.zjrs.ggfw.rlzysc.po.RsRlzyRcssqPO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import jakarta.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service
public class RcssqTask implements Task {

    private static final Logger LOG = LoggerFactory.getLogger(RcssqTask.class);

    @Resource
    private RcssqScheduleTaskBLO rcssqScheduleTaskBLO;

    @Resource
    private UserBPO userBPO;


    @Override
    public void excute(String cronid) {
        //从人才搜索器表里查询当天需要发送站内信息的人才搜索器
        //人才搜索器被拉入黑名单的不给使用
        LOG.info("查询要执行的人才搜索器================================");
        List<RsRlzyRcssqPO> rcssqpolist = rcssqScheduleTaskBLO.queryRcssq();
        for (RsRlzyRcssqPO po : rcssqpolist) {
            if ("0".equals(po.getIshmd()) && "1".equals(po.getQyxxshzt())) {
                //根据每个人才搜索器内信息匹配到简历（工作地区，工种类别，户口类别，学历、文化程度，工作年限，期望薪资）
                //对方的简历需要是有效的，已发布的
                //简历的所有者没有被内网拉入黑名单才算作
                //工作地区--gzdd，qwzw,qwxz,qwzw,gznx
                //查询公开程度为对全部单位公开的简历
                //对于个人的屏蔽的公司，不推送此人信息
                String gsmc = po.getGsmc();
                String zwmc = po.getGzlbname();
                String rsyhlsh = po.getRsyhlsh();
                //查询有重复
                LOG.info("当前搜索器：" + po.getSsqmc() + "========================");
                List<Map> wqgkjlxxmaplist = rcssqScheduleTaskBLO.getWqgkJlxx(po);
                if (wqgkjlxxmaplist != null && wqgkjlxxmaplist.size() > 0) {
                    LOG.info("当前搜索器：" + po.getSsqmc() + "人才搜索器搜索到简历================================");
                    //一个人才搜索器对应一个企业招聘的一个职业，可以将搜索到的所有简历推荐，拼接到一条消息里
                    String xxnr = "尊敬的" + gsmc + "负责人，您好：";
                    for (int i = 0; i < wqgkjlxxmaplist.size(); i++) {
                        Map jlxxmap = wqgkjlxxmaplist.get(i);
                        //根据每个人才搜索器匹配到的简历推送给该企业的职位
                        //给简历所有者用户发送站内消息,生成信息内容,插入站内消息表
                        String xm = jlxxmap.get("aac003") == null ? "" : (String) jlxxmap.get("aac003");
                        String jlmc = jlxxmap.get("jlmc") == null ? "" : (String) jlxxmap.get("jlmc");
                        if (i == wqgkjlxxmaplist.size() - 1) {
                            xxnr = xxnr + xm + "_" + jlmc + "的简历";
                        } else {
                            xxnr = xxnr + xm + "_" + jlmc + "的简历、";
                        }
                    }
                    xxnr = xxnr + "和贵公司发布的" + zwmc + "岗位较匹配，希望您能查阅简历并进一步沟通。";
                    XxglDTO dto = new XxglDTO();
                    dto.setFlag("2");
                    dto.setSjrids(rsyhlsh);
                    dto.setXxnr(xxnr);
                    dto.setXxbt("就业服务消息");
                    LOG.info("当前搜索器：" + po.getSsqmc() + "人才搜索器发送消息开始================================");
                    LOG.info(po.getSsqmc() + "发送消息内容================================" + xxnr);
                    userBPO.saveNews(dto);
                    LOG.info("当前搜索器：" + po.getSsqmc() + "人才搜索器发送消息开始================================");
                }
            }
            //更新人才搜索器里定时器执行时间,拉入黑名单，企业信息重新提交审核也应该更新时间，如果移出黑名单，重新审核之后
            //确保定时器仍会执行
            LOG.info("当前搜索器：" + po.getSsqmc() + "更新人才搜索器里定时器执行时间===============================");
            rcssqScheduleTaskBLO.updatedsqzxsj(po.getRsrlzyrcssqlsh());
        }
    }
}

