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.ZwssqScheduleTaskBLO;
import com.zjrs.ggfw.rlzysc.bpo.schedule.Task;
import com.zjrs.ggfw.rlzysc.po.ZyssqPO;
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 ZwssqTask implements Task {

    @Resource
    private UserBPO userBPO;

    @Resource
    ZwssqScheduleTaskBLO zwssqScheduleTaskBLO;

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

    @Override
    public void excute(String cronid) {
        //从职位搜索器表里查询当天需要发送站内信息的职位搜索器
        //职位搜索器所有者被拉入黑名单的不给使用
        LOG.info("查询要执行的职位搜索器================================");
        List<ZyssqPO> zwssqpolist = zwssqScheduleTaskBLO.queryZwssq();
        for (ZyssqPO po : zwssqpolist) {
            if ("0".equals(po.getIshmd())) {
                //根据每个职位搜索器内信息匹配到职位（工作地区，工种类别，户口类别，学历、文化程度，工作年限，期望薪资）
                //对方的职位需要是有效的，已发布的
                //公司的所有者没有被内网拉入黑名单才算作
                //工作地区--gzdd，qwzw,qwxz,qwzw,gznx
                //对于个人的屏蔽的公司，不推送此公司信息
                String xm = po.getXm(); //姓名
                String sex = po.getSex();//年龄
                String rsyhlsh = po.getRsyhlsh();//用户流水号
                LOG.info("当前搜索器：" + po.getSsqmc() + "========================");
                List<Map> zwxxmaplist = zwssqScheduleTaskBLO.getZwxx(po);
                if (zwxxmaplist != null && zwxxmaplist.size() > 0) {
                    LOG.info("当前搜索器：" + po.getSsqmc() + "职位搜索器搜索到简历================================");
                    String xxnr;
//                姓名】先生/女士：【企业名称】_【职位名称】与您发布的求职信息比较匹配，希望你能够投递简历并进一步沟通。】
                    if ("1".equals(sex)) {
                        xxnr = xm + "先生:";//男
                    } else if ("2".equals(sex)) {
                        xxnr = xm + "女士:";//女
                    } else {//未说明性别
                        xxnr = xm + "先生/女士:";
                    }
                    for (int i = 0; i < zwxxmaplist.size(); i++) {
                        Map zwxxmap = zwxxmaplist.get(i);
                        //根据每个职业搜索器匹配到的简历推送给该企业的职位
                        String zwmc = zwxxmap.get("ZWMC") == null ? "" : (String) zwxxmap.get("ZWMC");
                        LOG.info("ZWMC======================" + zwmc);
                        String gsmc = zwxxmap.get("GSMC") == null ? "" : (String) zwxxmap.get("GSMC");
                        LOG.info("GSMC======================" + gsmc);
                        if (i == zwxxmaplist.size() - 1) {
                            xxnr = xxnr + gsmc + "_" + zwmc;
                        } else {
                            xxnr = xxnr + gsmc + "_" + zwmc + "、";
                        }
                    }
                    xxnr = xxnr + "与您发布的求职信息比较匹配，希望你能够投递简历并进一步沟通。";
                    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() + "更新职位搜索器里定时器执行时间===============================");
            //更新人才搜索器里定时器执行时间
            zwssqScheduleTaskBLO.updatedsqzxsj(po.getRsrlzyzyssqlsh());
        }
    }
}

