package com.yc.open.mutual.schedule; import com.alibaba.fastjson.JSON; import com.yc.action.grid.GridUtils; import com.yc.entity.AttachmentConfig; import com.yc.entity.DataSourceEntity; import com.yc.exception.ApplicationException; import com.yc.exception.CallBackMessage; import com.yc.factory.FactoryBean; import com.yc.multiData.MultiDataSource; import com.yc.multiData.SpObserver; import com.yc.open.controller.BaseController; import com.yc.open.init.BaseGate; import com.yc.open.init.InitSystemTaks; import com.yc.open.init.Task; import com.yc.open.mutual.controller.MutualController; import com.yc.open.mutual.entity.AttachmentEntity; import com.yc.open.mutual.entity.FormEntity; import com.yc.open.mutual.entity.OnlineMessageEntity; import com.yc.open.mutual.entity.T210604Entity; import com.yc.open.mutual.service.MutualServiceIfc; import com.yc.service.BaseService; import com.yc.service.impl.BaseDoIfc; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.List; /** * 推送在线交流,不需要指定taskid,因为是固定取指定表的数据 */ public class OnLineMessagesThread extends BaseGate implements Runnable { protected final Logger log = LoggerFactory.getLogger(this.getClass()); //private static String TASKID = "OP0060";//指定任务ID,其他功能号也有对应的taskid private OnlineMessageEntity entity; public OnLineMessagesThread(OnlineMessageEntity entity) { this.entity = entity; } @Override public void run() { MutualController mutualController=(MutualController)FactoryBean.getBean("mutualController"); try { SpObserver.setDBtoInstance("_" + entity.getDbid()); Task task = InitSystemTaks.getTaskByOnlineMessage(entity.getDbid()+"",entity.getFormid()); //满足条件才执行 if (task != null ) { MutualServiceIfc mutualServiceIfc=(MutualServiceIfc)FactoryBean.getBean("mutualServiceImpl"); if(StringUtils.isBlank(task.getApiUrl())){ //没填url表示是onbus调用,有值是客户系统调用 entity.setOnbus(1); } OnlineMessageEntity onlineMessageEntity=mutualServiceIfc.getOnlineMessage(entity, task); if (onlineMessageEntity != null) { entity.setRefCode(onlineMessageEntity.getRefCode());//对方系统的docCode entity.setDbid(onlineMessageEntity.getDbid()); String body=JSON.toJSONString(entity); String url=task.getApiUrl(); String query=mutualController.getSignV3(body, task); if(entity.getOnbus()!=null&&entity.getOnbus()==1){ //通过dbid取得对方相关的信息,拼接url和生成签名 query=mutualController.getSignV2(body, entity.getDbid()+""); final DataSourceEntity dataSourceMap = MultiDataSource.getDataSourceMap(entity.getDbid() + ""); url = mutualController.getSystemUrlByDataSource(dataSourceMap); } final String msg = mutualController.doPostByParameter(url +"/open/mutual/postOnlineMessage.do"+ query, body);//TODO task.getApiUrl() CallBackMessage callBackMessage=JSON.parseObject(msg,CallBackMessage.class); if(callBackMessage.getState()==-1){ throw new ApplicationException(callBackMessage.getMsg()); } } } } catch (Exception ex) { ex.printStackTrace(); mutualController.sendErrorLog(entity.getFormid(), entity.getDoccode(), ex); log.error(ex.getMessage()); } finally { SpObserver.setDBtoInstance(); } } }