package com.zjrs.ggfw.rlzysc.bpo.impl;

import org.mohrss.leaf.core.framework.domain.bpo.impl.BPOImpl;
import org.mohrss.leaf.core.framework.persistens.PageResult;
import org.mohrss.leaf.core.framework.web.exception.AppException;
import com.zjrs.ggfw.portal.bpo.UserBPO;
import com.zjrs.ggfw.portal.dto.XxglDTO;
import com.zjrs.ggfw.rlzysc.blo.MsGlBLO;
import com.zjrs.ggfw.rlzysc.bpo.MsGlBPO;
import com.zjrs.ggfw.rlzysc.dto.grzxjlxx.ZjDTO;
import com.zjrs.ggfw.rlzysc.dto.msgl.*;
import com.zjrs.ggfw.rlzysc.po.RsRlzyZwxxPO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

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

@Service
public class MsGlBPOImpl extends BPOImpl implements MsGlBPO {

    @Autowired
    private MsGlBLO msGlBLO;

    @Resource
    private UserBPO userBPO;

    @Override
    public void saveMsglInfo(MsUDTO dto) {
        msGlBLO.saveMsglInfo(dto);
    }

    @Override
    public PageResult getMsgllist(MsQueryDTO dto) {
        return msGlBLO.getMsgllist(dto);
    }

    @Override
    public PageResult getMsgllistForGr(MsQueryDTO dto) {
        return msGlBLO.getMsgllistForGr(dto);
    }

//    @Override
//    public void updatemsjg(MsglZtUDTO dto) {
//        msGlBLO.updatemsjg(dto);
//    }

    @Override
    public Map getMsglInfo(ZjDTO dto) {
        return msGlBLO.getMsglInfo(dto);
    }

    @Override
    public Map getMsglInfoForYdd(ZjDTO dto) {
        return msGlBLO.getMsglInfoForYdd(dto);
    }

    @Override
    public void updatemsgl(MsglZtUDTO dto) {
        msGlBLO.updatemsgl(dto);
    }

    @Override
    public PageResult getMsglMsglist(MsglZtListDTO dto) {
        return msGlBLO.getMsglMsglist(dto);
    }

    @Override
    public Map queryQyxx(MsglZtUDTO dto) {
        return msGlBLO.queryQyxx(dto);
    }

    @Override
    public Map validMsjxx(MsyqglDTO dto) {
        return msGlBLO.validMsjxx(dto);
    }

    @Override
    public void sendLqtzs(LqtzsDTO dto) {
        //更新面试结果
        MsglZtUDTO ztudto = new MsglZtUDTO();
        ztudto.setMsjg(dto.getMsjg());
        ztudto.setRsrlzymsgllsh(dto.getRsrlzymsgllsh());
        ztudto.setMszt("4");
        msGlBLO.updatemsgl(ztudto);
        if("1".equals(dto.getMsjg())){
            //更新岗位状态为4
             msGlBLO.updategwzt(dto.getRsyhlsh(),dto.getRsrlzyzwxxlsh());
        }
        //发送站内消息
        if ("1".equals(dto.getMsjg())){
            //面试成功
            //通过个人流水号查询被邀请者的姓名和性别
            Map<Object,String> gr = msGlBLO.getMszInfo(dto.getRsyhlsh());
            if (gr==null){
                throw new AppException("获取不到被邀请面试者的个人信息");
            }
            String name = gr.get("aac003")==null?"": gr.get("aac003");
            String gender = gr.get("aac004")==null?"": gr.get("aac004");
            //通过企业流水号，获取企业名称
            Map<Object,String> qy = msGlBLO.getMsqyInfo(dto.getRsrlzyqyxxlsh());
            if (qy==null){
                throw new AppException("获取不到邀请面试者的企业信息");
            }
            String qyname = qy.get("aab004") == null?"":qy.get("aab004");
            //通过职位流水号获取职位名称
            RsRlzyZwxxPO zwpo = msGlBLO.selectById(dto.getRsrlzyzwxxlsh());
            if (zwpo==null){
                throw new AppException("获取不到职位信息");
            }
            String zwname = zwpo.getZwmc()==null?"":zwpo.getZwmc();
            //【姓名】先生/女士：【企业名称】_【职位名称】向您发送了一份录用通知，请您尽快查看处理。】
            StringBuffer xxnr = new StringBuffer();
            xxnr.append(name);
            if ("1".equals(gender)) {
                xxnr.append("先生:");
            } else if ("2".equals(gender)) {
                xxnr.append("女士:");
            } else { //未说明性别
                xxnr.append("先生/女士:");
            }
            xxnr.append(qyname).append("_").append(zwname).append("向您发送了一份录用通知，请您尽快查看处理。");
            XxglDTO xxgldto = new XxglDTO();
            xxgldto.setFlag("2");
            xxgldto.setSjrids(dto.getRsyhlsh());
            xxgldto.setXxnr(xxnr.toString());
            xxgldto.setXxbt("就业服务消息");
            userBPO.saveNews(xxgldto);
        }

    }

    @Override
    public Map getJwtToken(MsglZtUDTO dto) {
        return msGlBLO.getJwtToken(dto);
    }
}

