技术答疑.工作流.信息中心.左边分组树的个人信息汇总条数与右边列表数据行数不一致问题

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

技术答疑.工作流.信息中心.左边分组树的个人信息汇总条数与右边列表数据行数不一致问题

【问题描述】

信息中心,偶尔会看到,左边分组树的某个类目下的个人信息汇总条数与右边列表数据行数不一致问题。

上传图片



【原因分析】

从系统实现上来说,左边的每个类目下的个人信息汇总数量查询,和右边的列表数据查询,不是使用的完全一致的过滤条件。以“普通消息”举例来说,左边查询的是当前登录用户的未读消息总数量,而右边列表查询,如果是使用默认方案,则会查询所有已读未读的消息,如果是使用的其他过滤方案,数量差异就更加大了。



【结论】

信息中心,左边分组树的个人信息汇总条数与右侧列表数据行数从实现层面就不满足一致性,也无法实现一致性。因此,用户无需纠结于此。

左边分组树的类目的汇总数量取数规则固定,更具体参考价值。如果您一定要明确数量差异的具体原因,可以通过下面提供的SQL进一步深入分析。



【左边分组树的类目的汇总数量的取数规则

以某个用户ID等于100008的用户为例,相关取数的SQL脚本如下:

--待处理任务
SELECT  COUNT(1)
FROM    ( SELECT TOP 1000
                    1 X
          FROM      T_WF_ASSIGN T0
                    INNER JOIN T_WF_RECEIVER T1 ON T0.FASSIGNID = T1.FASSIGNID
                    INNER JOIN T_WF_PROCINST T2 ON T0.FPROCINSTID = T2.FPROCINSTID
                    INNER JOIN T_WF_ACTINST T3 ON T0.FACTINSTID = T3.FACTINSTID
                    INNER JOIN T_WF_APPROVALASSIGN T4 ON T0.FASSIGNID = T4.FASSIGNID
                    LEFT OUTER JOIN T_WF_APPROVALITEM T5 ON T4.FAPPROVALASSIGNID = T5.FAPPROVALASSIGNID
                                                            AND T1.FRECEIVERID = T5.FRECEIVERID
          WHERE     T0.FSTATUS = '0'
                    AND T2.FSTATUS = '2'
                    AND T3.FSTATUS = '2'
                    AND T1.FRECEIVERID = 100008
                    AND ( T5.FAPPROVALITEMID IS NULL
                          OR T5.FSTATUS = '0'
                        )
        ) TX
--已处理任务
SELECT  COUNT(1)
FROM    T_WF_APPROVALITEM t0
        INNER JOIN T_WF_APPROVALASSIGN t1 ON t0.FAPPROVALASSIGNID = t1.FAPPROVALASSIGNID
WHERE   ( t0.FSTATUS = '1'
          AND ( t0.FACTIONRESULT <> 'Cancel' )
        )
        AND t0.FRECEIVERID = 100008 
--我的转发
SELECT  COUNT(1)
FROM    T_WF_ASSIGN
        INNER JOIN T_WF_RECEIVER ON T_WF_ASSIGN.FASSIGNID = T_WF_RECEIVER.FASSIGNID
        INNER JOIN T_WF_APPROVALASSIGN ON T_WF_ASSIGN.FASSIGNID = T_WF_APPROVALASSIGN.FASSIGNID
        INNER JOIN T_WF_APPROVALITEM ON ( T_WF_APPROVALASSIGN.FAPPROVALASSIGNID = T_WF_APPROVALITEM.FAPPROVALASSIGNID
                                          AND T_WF_APPROVALITEM.FRECEIVERID = T_WF_RECEIVER.FRECEIVERID
                                        )
        LEFT OUTER JOIN T_WF_APPROVALASSIGN PREASSIGNRESULT ON T_WF_ASSIGN.FPREAPPROVALASSIGNID = PREASSIGNRESULT.FAPPROVALASSIGNID
        LEFT OUTER JOIN T_WF_APPROVALASSIGN forwardRecieverApprovalAssign ON forwardRecieverApprovalAssign.FASSIGNID = T_WF_ASSIGN.FASSIGNID
        LEFT OUTER JOIN T_WF_APPROVALITEM forwardRecieverApprovalItem ON ( forwardRecieverApprovalItem.FAPPROVALASSIGNID = forwardRecieverApprovalAssign.FAPPROVALASSIGNID
                                                              AND forwardRecieverApprovalItem.FRECEIVERID = T_WF_APPROVALITEM.FFORWARDRECEIVERID
                                                              )
WHERE   ( ( ( T_WF_APPROVALITEM.FSTATUS = '3'
              AND ( ( T_WF_APPROVALASSIGN.FRESULT IS NULL )
                    OR ( T_WF_APPROVALASSIGN.FRESULT <> 'Cancel' )
                  )
            )
            AND ( T_WF_APPROVALITEM.FRECEIVERID <> T_WF_APPROVALITEM.FFORWARDRECEIVERID )
          )
          AND ( T_WF_APPROVALITEM.FISCANCELFORWARD <> 1 )
        )
        AND T_WF_RECEIVER.FRECEIVERID = 100008
        AND T_WF_APPROVALITEM.FFORWARDRECEIVERID > 0
--我的加签
SELECT  COUNT(1)
FROM    T_WF_ASSIGN
        INNER JOIN T_WF_RECEIVER ON T_WF_ASSIGN.FASSIGNID = T_WF_RECEIVER.FASSIGNID
        INNER JOIN T_WF_APPROVALASSIGN ON T_WF_ASSIGN.FASSIGNID = T_WF_APPROVALASSIGN.FASSIGNID
        INNER JOIN T_WF_APPROVALITEM ON ( T_WF_APPROVALASSIGN.FAPPROVALASSIGNID = T_WF_APPROVALITEM.FAPPROVALASSIGNID
                                          AND T_WF_APPROVALITEM.FRECEIVERID = T_WF_RECEIVER.FRECEIVERID
                                        )
        LEFT OUTER JOIN T_WF_APPROVALASSIGN PREASSIGNRESULT ON T_WF_ASSIGN.FPREAPPROVALASSIGNID = PREASSIGNRESULT.FAPPROVALASSIGNID
WHERE   EXISTS ( SELECT 1
                 FROM   T_WF_ADDSIGNASSIGN t_wf_addsignassign
                 WHERE  ( ( t_wf_addsignassign.FASSIGNID = T_WF_ASSIGN.FASSIGNID
                            AND t_wf_addsignassign.FCREATORID = T_WF_RECEIVER.FRECEIVERID
                          )
                          AND t_wf_addsignassign.FISORIGIN = 1
                        ) )
        AND T_WF_RECEIVER.FRECEIVERID = 100008
--我的委托
SELECT  COUNT(1)
FROM    T_WF_ASSIGN
        INNER JOIN T_WF_RECEIVER ON T_WF_ASSIGN.FASSIGNID = T_WF_RECEIVER.FASSIGNID
        INNER JOIN T_WF_APPROVALASSIGN ON T_WF_ASSIGN.FASSIGNID = T_WF_APPROVALASSIGN.FASSIGNID
        LEFT OUTER JOIN T_WF_APPROVALITEM ON ( T_WF_APPROVALASSIGN.FAPPROVALASSIGNID = T_WF_APPROVALITEM.FAPPROVALASSIGNID
                                               AND T_WF_APPROVALITEM.FRECEIVERID = T_WF_RECEIVER.FRECEIVERID
                                             )
        INNER JOIN T_WF_ENTRUSTRECEIVER ON T_WF_RECEIVER.FID = T_WF_ENTRUSTRECEIVER.FID
                                           AND T_WF_ENTRUSTRECEIVER.FCONSIGNOR = 100008
                                           AND T_WF_ENTRUSTRECEIVER.FCONSIGNSTATUS = 1
                                           AND ( T_WF_APPROVALITEM.FSTATUS IS NULL
                                                 OR T_WF_APPROVALITEM.FSTATUS <> '3'
                                               )
--监控消息
SELECT  COUNT(1)
FROM    T_BAS_WARNMERGEMESSAGE
WHERE   FRECEIVERID = 100008
        AND FSTATUS = '0'
--执行计划消息
SELECT  COUNT(1)
FROM    T_BAS_SCHEDULEMSG msg
        INNER JOIN T_BAS_SCHEDULEMSGCONFIG config ON msg.FSCHEDULETYPEID = config.FSCHEDULETYPEID
WHERE   config.FMSGRECEIVER = 100008
--普通消息
SELECT  COUNT(1)
FROM    T_WF_MESSAGE
WHERE   FRECEIVERID = 100008
        AND FTYPE = '1'
        AND FSTATUS = '0' 
--流程消息
SELECT  COUNT(1)
FROM    T_WF_MESSAGE
WHERE   FRECEIVERID = 100008
        AND FSTATUS = '0'
        AND ( FTYPE = '0'
              OR FTYPE = '2'
            )
--发件箱
SELECT  COUNT(1)
FROM    T_WF_MESSAGESEND
WHERE   FSENDERID = 100008
        AND FSTATUS = '0'
--废件箱
SELECT  COUNT(1)
FROM    T_WF_MESSAGEDEL
WHERE   ( FRECEIVERID = 100008
          OR ( FMOVEFROM = '1'
               AND FSENDERID = 100008
             )
        )
        AND FSTATUS = '0'
--我的流程
SELECT  COUNT(1)
FROM    T_WF_PROCINST
WHERE   FORIGINATORID = 100008
        AND FSTATUS <> '1'
        AND FSTATUS <> '4'


【右边列表的取数规则】

信息中心右边列表的取数,既可仔细查看其使用的过滤方案来简单辨别,也可通过APM来抓取列表的取数SQL来精确定位问题。

---------------------------------------------------------------------------------------------------------













金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

技术答疑.工作流.信息中心.左边分组树的个人信息汇总条数与右边列表数据行数不一致问题

【问题描述】信息中心,偶尔会看到,左边分组树的某个类目下的个人信息汇总条数与右边列表数据行数不一致问题。【原因分析】从系统实现上来...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息