fs-danaus
2023-04-07 407785f6e9cd1e4332cc4b1b7dcefbb855174b5e
修正在相同数据库时会生成重复通知问题
2个文件已修改
18 ■■■■■ 已修改文件
src/com/yc/action/sysmessage/MessageTipAction.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/open/init/shcedule/MessagePopTipsSchedule.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/com/yc/action/sysmessage/MessageTipAction.java
@@ -261,18 +261,17 @@
        
        int count = (dataSourceMaps != null?dataSourceMaps.size():0) ;
        int sendCount = 0 ;
        Map<String,Integer> resultMap=new HashMap<>();
        if (messid != null && dataSourceMaps != null) {
            //cpuCoreNumber = Runtime.getRuntime().availableProcessors();
            //Executor executor = Executors.newFixedThreadPool(cpuCoreNumber);
            for (Map.Entry<String, DataSourceEntity> entry : dataSourceMaps.entrySet()) {
                DataSourceEntity dataSourceEntity = entry.getValue() ;
                //testing...
                //if (dataSourceEntity.getDbId()!=82) continue ;  //testing...
                //过滤相同数据库,避免重复生成通知
                if(resultMap.containsKey(dataSourceEntity.getHost()+"_"+dataSourceEntity.getDb())){
                    continue;
                }else {
                    resultMap.put(dataSourceEntity.getHost()+"_"+dataSourceEntity.getDb(),1);
                }
                try {
                    //SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
                    //循环插入 实例 数据库 
                    PopMessageEntity popMessageEntity = new PopMessageEntity();
                    popMessageEntity.setTopic(topic);
@@ -302,8 +301,6 @@
                    JsonObject item = new JsonObject();
                    item.addProperty("messagetxt",dataSourceEntity.getDb() +"数据库错误:"+(e.getCause()!=null ?e.getCause().getMessage():e.getMessage()));
                    array.add(item);
                }finally {
                    //SpObserver.setDBtoInstance();
                }
            }
        }
src/com/yc/open/init/shcedule/MessagePopTipsSchedule.java
@@ -49,6 +49,7 @@
                for(WsMessageUserEntity entity:onlineUser){
                    joiner.add(entity.getUserCode());
                }
                //因为用户已下线,为了避免发送失败导致用户下次登录收不到通知的情况,取数及更新次数分开处理
                final List<MessageTipsEntity> list = baseService.getJdbcTemplate().query("set nocount on ; declare @UserCodes varchar(max) =" +GridUtils.prossSqlParm(joiner.toString())+
                        "\n select a.messid,a.messagetxt,a.unvaliddate,a.createuser,a.createtime,\n" +
                        " a.rejustsrvflag,a.Readers,a.UsrReaded,a.tipcount,a.formid,\n" +