package fi.ar.formplugin;

import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.earlywarn.EarlyWarnContext;
import kd.bos.entity.earlywarn.warn.EarlyWarnMessageInfo;
import kd.bos.entity.earlywarn.warn.YzjPublicNumberInfo;
import kd.bos.entity.earlywarn.warn.plugin.IEarlyWarnMessageHandler;
import kd.bos.service.earlywarn.impl.DefaultWarnMessageHandler;
import kd.bos.url.UrlService;

import java.util.List;

/**
 * @author cjz
 * @date 2024/10/10 17:42
 * @description:预警自定义消息插件,设置跳转的报表url,往来类型为供应商
 */
public class EarlyWarnHandlerPlugin implements IEarlyWarnMessageHandler {
    private final Log logger= LogFactory.getLog(DefaultWarnMessageHandler.class);
    private String clientPath="";//客户端地址
    private String formId = "";//pc端表单标识


    //单条消息跳转链接
    @Override
    public EarlyWarnMessageInfo singleMessageBuilder(DynamicObject dynamicObject, EarlyWarnContext earlyWarnContext) {
        RequestContext ctx = RequestContext.get();
        this.clientPath = UrlService.getDomainContextUrlByTenantCode(ctx.getTenantCode());//拿到完整的客户端网址
        this.formId = earlyWarnContext.getEarlyWarn().getDataSourceId();//表单标识
        EarlyWarnMessageInfo info = new EarlyWarnMessageInfo();
        String pkId = dynamicObject.get("id").toString();//对应单据的内码
        String contentUrl = clientPath+"?formId="+formId+"&pkId="+pkId+"&flag=1";//pc端跳转单据路径
        info.setContentUrl(contentUrl);
        return info;
    }


    //合并消息跳转链接
    @Override
    public EarlyWarnMessageInfo mergeMessageBuilder(EarlyWarnContext earlyWarnContext) {
        RequestContext ctx = RequestContext.get();
        this.clientPath = UrlService.getDomainContextUrlByTenantCode(ctx.getTenantCode());//拿到完整的客户端网址
        this.formId = earlyWarnContext.getEarlyWarn().getDataSourceId();//表单标识
        EarlyWarnMessageInfo info = new EarlyWarnMessageInfo();
        String contentUrl = clientPath+"?formId="+formId+"&flag=1"+"&asstacttype=bd_supplier";//pc端跳转单据路径
        info.setContentUrl(contentUrl);
        return info;
    }

    @Override
    public YzjPublicNumberInfo getYZJMessagePublicNumber(List<YzjPublicNumberInfo> publicNumberInfos) {
        return IEarlyWarnMessageHandler.super.getYZJMessagePublicNumber(publicNumberInfos);
    }
}