BIP发送通知

发布时间 2023-03-28 11:10:38作者: 龙旋风
package com.yonyou.mls.srm.mlssrmkkgys.deliveryplan.service.impl;

import com.yonyou.cloud.apm.internal.com.alibaba.fastjson.JSONObject;
import com.yonyou.iuap.message.platform.rpc.IMsgSendService;
import com.yonyou.mls.srm.mlssrmkkgys.deliveryplan.mapper.SendMsgPlanDeliveryMapper;
import com.yonyou.mls.srm.mlssrmkkgys.deliveryplan.service.SendMsgPlanDeliveryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
public class SendMsgPlanDeliveryServiceImpl implements SendMsgPlanDeliveryService {

    @Autowired
    SendMsgPlanDeliveryMapper sendMsgPlanDeliveryMapper;
    @Autowired
    IMsgSendService iMsgSendService;
    @Value("${mls.buyer_tenant_id}")
    private String tenantId;

    @Override
    public Map<String, Object> sendMsgPlanVendor(JSONObject body) throws Exception {
        //  交期计划
        String purOrderDetailId = body.getString("purOrderDetailId");
        //表Id   交期计划表  采购订单明细ID
        String  title =   body.getString("title");
        // "您有一份交期计划通知,请查收";
        String content =  body.getString("content");
        // "请及时查看交期计划";
        try {
           Map<String, Object> PlanBuyerObject = sendMsgPlanDeliveryMapper.getPlanBuyerIdObject(purOrderDetailId);
           // 根据交期计划delivery_plan_buyer主表的 采购订单明细ID 获取表行数据
            String id = (String) PlanBuyerObject.get("id");
            // --主键  采购商交期计划的主表Id
            // 发送工作通知
            Map<String, Object> result = new HashMap<>();
            ArrayList<String> receivers = new ArrayList<>();
            String purchaseId = (String) PlanBuyerObject.get("ucUserid");
            // --友互通id
            receivers.add(purchaseId);
            ArrayList<String> channels = new ArrayList<>();
            channels.add("uspace");
            String messageType = "notice";
            String  supQualmsgId = id;
            //单据主表Id  supQualmsgId 单据主表ID
            //拼接跳转链接
            String webUrl = "/mdf-node/meta/Voucher/c69eda35/" + supQualmsgId + "?domainKey=procurement&code=inapi_error&OpenWin=1&tenantPk=" + tenantId;
            Map<String, Object> uspaceExt = new HashMap<>();
            uspaceExt.put("webUrl", webUrl);
            //扩展参数,发送消息时传入各个通道的扩展参数
            Map<String, Object> extParams = new HashMap<>();
            extParams.put("uspaceExt", uspaceExt);

            //(1)sysId为系统id,公有云为“diwork”,必传
            //(2)tenantId为发送目标租户的租户id,必传
            //(3)receivers为消息接收人,必传
            //(4)channels为发送通道,必传,例如:
            //            ArrayList<String> channels = new ArrayList<>();
            //            channels.add("uspace");
            //(5)MessageType为发送消息的类型,有notice(通知),creatToDo(待办),prewarn(预警)三种方式,不填时默认为”notice”,该字段非必传
            //(6)title为标题,必传
            //(7)content为消息内容,必传

            Map<String,Object > sendMsg = iMsgSendService.sendPlainMessageToUsers("diwork", tenantId, receivers, channels, messageType, title, content, extParams);
            result.put("flag", sendMsg.get("flag"));
            result.put("msg", sendMsg.get("msg"));
            return result;
            // 采购商发送到供应商
        } catch (Exception e) {
            throw new Exception(e.getMessage());
        }
    }
}