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); } }