package com.zcloud.service.bus.impl;

import com.zcloud.entity.PageData;
import com.zcloud.service.bus.*;
import com.zcloud.service.hidden.HiddenService;
import com.zcloud.service.notice.NoticeCorpService;
import com.zcloud.service.notice.NoticeCorpUserService;
import com.zcloud.service.notice.NoticeTemplateService;
import com.zcloud.util.DateUtil;
import com.zcloud.util.Jurisdiction;
import com.zcloud.util.UuidUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;

@Service
@Transactional //开启事物
public class HiddenMailServiceImpl implements HiddenMailService {

    @Autowired
    private NoticeTemplateService noticeTemplateService;
    @Autowired
    private NoticeCorpService noticeCorpService;
    @Autowired
    private NoticeCorpUserService noticeCorpUserService;
    @Autowired
    private HiddenService hiddenService;

    //隐患提交时给确认人发送站内信
    @Override
    public void hiddneConfirm(PageData pd) throws Exception {
        PageData notice =  noticeTemplateService.findByBianMa(pd);
        String  content = "";
        if(notice!=null){
            content =  notice.getString("TEMPLATE_STR");
            PageData contentPd = (PageData) pd.get("CONTENT");
            for(Object key : contentPd.keySet()){	//替换占位符
                content = content.replace("${" + key.toString() + "}", contentPd.get(key).toString());
            }
        }else {
            content = "未维护模板,需要管理端-公告模板进行维护";
        }

        PageData pd1 = new PageData();
        pd1.put("NOTICECORP_ID", UuidUtil.get32UUID());
        pd1.put("USERNAME",pd.getString("SENDER_NAME"));
        pd1.put("CREATOR", pd.getString("SENDER_ID"));	//添加人
        pd1.put("CREATTIME", DateUtil.date2Str(new Date()));	//添加时间
        pd1.put("SYNOPSIS",pd.getString("SYNOPSIS"));
        pd1.put("CONTENT","<p>"+content+"</p>");
        pd1.put("ISALL","yes");
        pd1.put("ISREPLY",0);
        pd1.put("ISDELETE",0);
        pd1.put("ISTOP",0);
        pd1.put("STATUS",1);
        pd1.put("CORP_INFO_ID",pd.getString("CORPINFO_ID"));
        noticeCorpService.save(pd1);
        pd1.put("NOTICECORPUSERID_ID",UuidUtil.get32UUID());
        pd1.put("USER_ID",pd.getString("RECEIVER_ID"));
        pd1.put("TYPE",0);
        noticeCorpUserService.save(pd1);
    }

    @Override
    public void hiddneCheckAdopt(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_002");
        mes.put("SENDER_ID", Jurisdiction.getUSER_ID());	// 发送人员ID
        mes.put("SENDER_NAME", Jurisdiction.getName());	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        if(pd.get("ISQUALIFIED").equals("1")){
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收合格通过");	// 站内信标题
        }else {
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收不合格");	// 站内信标题
        }
        mes.put("RECEIVER_ID", hiddenPd.getString("CREATOR"));	// 申请人
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        if(pd.get("ISQUALIFIED").equals("1")){
            content.put("params2", "验收合格");// 作业流程
        }else {
            content.put("params2", "验收不合格");// 作业流程
        }
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("CONFIRM_USER"));	// 确认人
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("RECTIFICATIONOR"));	// 整改人
         hiddneConfirm(mes);

    }

    @Override
    public void apphiddneCheckAdopt(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("TEMPLATE_CODE","SMS_225910627");
        mes.put("SENDER_ID", pd.get("CHECKOR"));	// 发送人员ID
        mes.put("SENDER_NAME", pd.get("USERNAME"));	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        if(pd.get("ISQUALIFIED").equals("1")){
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收合格通过");	// 站内信标题
        }else {
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收不合格");	// 站内信标题
        }
        mes.put("RECEIVER_ID", hiddenPd.getString("CREATOR"));	// 申请人
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        if(pd.get("ISQUALIFIED").equals("1")){
            content.put("params2", "合格");// 作业流程
        }else {
            content.put("params2", "不合格");// 作业流程
        }
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("CONFIRM_USER"));	// 确认人
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("RECTIFICATIONOR"));	// 整改人
         hiddneConfirm(mes);

    }

    @Override
    public void hiddneSpecial(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_002");
        mes.put("SENDER_ID", Jurisdiction.getUSER_ID());	// 发送人员ID
        mes.put("SENDER_NAME", Jurisdiction.getName());	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        if(pd.get("TYPE").equals("1")){
            mes.put("SYNOPSIS", "友情提示：有一条特殊处置隐患审核通过");	// 站内信标题
        }else {
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收不合格");	// 站内信标题
        }
        mes.put("RECEIVER_ID", hiddenPd.getString("CREATOR"));	// 申请人
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        if(pd.get("TYPE").equals("1")){
            content.put("params2", "审核通过");// 作业流程
        }else {
            content.put("params2", "验收不合格");// 作业流程
        }
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("CONFIRM_USER"));	// 确认人
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("RECTIFICATIONOR"));	// 整改人
         hiddneConfirm(mes);

    }

    @Override
    public void apphiddneSpecial(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_002");
        mes.put("SENDER_ID", pd.get("loginUserId"));	// 发送人员ID
        mes.put("SENDER_NAME", pd.get("USERNAME"));	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        if(pd.get("TYPE").equals("1")){
            mes.put("SYNOPSIS", "友情提示：有一条特殊处置隐患审核通过");	// 站内信标题
        }else {
            mes.put("SYNOPSIS", "友情提示：有一条隐患验收不合格");	// 站内信标题
        }
        mes.put("RECEIVER_ID", hiddenPd.getString("CREATOR"));	// 申请人
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        if(pd.get("TYPE").equals("1")){
            content.put("params2", "审核通过");// 作业流程
        }else {
            content.put("params2", "验收不合格");// 作业流程
        }
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("CONFIRM_USER"));	// 确认人
         hiddneConfirm(mes);
        mes.put("RECEIVER_ID", hiddenPd.getString("RECTIFICATIONOR"));	// 整改人
         hiddneConfirm(mes);

    }

    @Override
    public void hiddneFail(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_002");
        mes.put("SENDER_ID", Jurisdiction.getUSER_ID());	// 发送人员ID
        mes.put("SENDER_NAME", Jurisdiction.getName());	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        mes.put("SYNOPSIS", "友情提示：有一条特殊处置隐患审核不通过");	// 站内信标题
        if("0".equals(pd.getString("isChange"))){
            mes.put("RECEIVER_ID", pd.getString("OLD_RECTIFICATIONOR"));	// 申请人
        } else {
            mes.put("RECEIVER_ID", pd.getString("changeUser"));	// 申请人
        }
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        content.put("params2", "审核不通过，请及时整改隐患");// 作业流程
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);


    }

    @Override
    public void apphiddneFail(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_002");
        mes.put("SENDER_ID", pd.get("loginUserId"));	// 发送人员ID
        mes.put("SENDER_NAME",pd.get("USERNAME"));	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        mes.put("SYNOPSIS", "友情提示：有一条特殊处置隐患审核不通过");	// 站内信标题
        if("1".equals(pd.getString("isChange"))){
            mes.put("RECEIVER_ID", pd.getString("spare2"));	// 申请人
        } else {
            mes.put("RECEIVER_ID", pd.getString("OLDRECTIFICATIONOR"));	// 申请人
        }
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        content.put("params2", "审核不通过");// 作业流程
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);


    }

    @Override
    public void  reject(PageData pd) throws Exception {
        PageData mes = new PageData();
        PageData hiddenPd = hiddenService.findById(pd);
        mes.put("BIANMA","HIDDEN_MAIL_001");
        mes.put("SENDER_ID", pd.get("loginUserId"));	// 发送人员ID
        mes.put("SENDER_NAME",pd.get("USERNAME"));	// 发送人员姓名
        mes.put("CORPINFO_ID", hiddenPd.get("CORPINFO_ID"));// 企业id
        mes.put("SYNOPSIS", "友情提示：有一条隐患确认打回");	// 站内信标题
        mes.put("RECEIVER_ID", hiddenPd.getString("CREATOR"));	// 申请人
        PageData content = new PageData();
        content.put("hiddendescr", hiddenPd.getString("HIDDENDESCR"));// 作业编号
        content.put("params2", "PC的一般隐患台账/APP的隐患记录");// 作业流程
        content.put("params3", "编辑");// 作业流程
        mes.put("CONTENT", content);// 站内信内容
         hiddneConfirm(mes);

    }

}
