微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Clarity aka CA PPM:查询和 rowCount 冲突

如何解决Clarity aka CA PPM:查询和 rowCount 冲突

我在下面添加了我的脚本;当我独立于脚本运行查询时,它会正确呈现一行数据。但是当我运行我的整个脚本时,我的日志显示没有行可以插入/更新到不准确的对象中。我的脚本遗漏了什么吗?我两天前对其进行了测试,效果很好,但现在不行了。也许我的眼睛已经看了这么多,我只是忽略了一些简单但寻求社区帮助的东西。

<gel:script xmlns:core="jelly:core" xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary" xmlns:soap="jelly:com.niku.union.gel.soAPTagLibrary"
    xmlns:soapEnv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sql="jelly:sql" xmlns:xog="http://www.niku.com/xog"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    
    <!-- CONNECT TO CLARITY DATABASE -->
    <gel:setDataSource dbId="niku" var="clarityDB"/>
    
    <!-- QUERY INVESTMENT BUDGET PLAN/ORIGINAL BUDGET PLAN informatION TO UPDATE supplier CONTRACTS SUMMARY LEVEL INSTANCES -->
    <sql:query dataSource="${clarityDB}" escapeText="0" var="budgetPlanCostQuery"><![CDATA[
        SELECT  BGT.INV_DBID,BGT.INV_ID,BGT.INV_NAME,BGT.BUDGET_PLAN_DBID,BGT.BUDGET_PLAN_CODE,BGT.BUDGET_PLAN_NAME,BGT.BUDGET_PLAN_TOTAL,BGT.COST_TYPE_DBID,BGT.COST_TYPE_CODE,BGT.COST_TYPE,BGT.TRANSCLASS_DBID,BGT.TRANSCLASS,BGT.DETAIL_COST,BGT.OG_BUDGET_PLAN_CODE,BGT.OG_BUDGET_DETAIL_COST,BGT.CONTRACT_DBID,BGT.CONTRACT_CURRENT_BUDGET,BGT.CONTRACT_OG_BUDGET
        FROM (  SELECT  INV.ID INV_DBID,INV.CODE INV_ID,INV.NAME INV_NAME,FP.ID BUDGET_PLAN_DBID,FP.CODE BUDGET_PLAN_CODE,FP.NAME BUDGET_PLAN_NAME,FP.TOTAL_COST BUDGET_PLAN_TOTAL,FP_DET.COST_TYPE_ID COST_TYPE_DBID,CST_TYPE.LOOKUP_CODE COST_TYPE_CODE,CST_TYPE.NAME COST_TYPE,TC.ID TRANSCLASS_DBID,TC.DESCRIPTION TRANSCLASS,COALESCE(ROUND(SUM(FP_DET.TOTAL_COST),2),0) DETAIL_COST,OG_BUDGET.BUDGET_PLAN_CODE OG_BUDGET_PLAN_CODE,COALESCE(ROUND(OG_BUDGET.DETAIL_COST,0) OG_BUDGET_DETAIL_COST,COALESCE(CONTRACTS.ID,0) CONTRACT_DBID,CONTRACTS.U_CURRENTBUDGETACR CONTRACT_CURRENT_BUDGET,CONTRACTS.U_ACR_OBFA CONTRACT_OG_BUDGET
                FROM INV_INVESTMENTS INV 
                    LEFT JOIN FIN_PLANS FP ON INV.ID = FP.OBJECT_ID
                                          AND FP.PLAN_TYPE_CODE = 'BUDGET'
                                          AND FP.IS_PLAN_OF_RECORD = 1
                        JOIN FIN_COST_PLAN_DETAILS FP_DET ON FP.ID = FP_DET.PLAN_ID
                            JOIN CMN_LOOKUPS_V CST_TYPE ON CST_TYPE.ID = FP_DET.COST_TYPE_ID 
                                                       AND CST_TYPE.LOOKUP_TYPE = 'LOOKUP_FIN_COSTTYPECODE' 
                                                       AND CST_TYPE.LANGUAGE_CODE = 'en'
                            JOIN TRANSCLASS TC ON TC.ID = FP_DET.TRANSACTION_CLASS_ID
                    LEFT JOIN ( SELECT  FP.OBJECT_ID,ROUND(SUM(FP_DET.TOTAL_COST),2) DETAIL_COST
                                FROM FIN_PLANS FP
                                    JOIN FIN_COST_PLAN_DETAILS FP_DET ON FP.ID = FP_DET.PLAN_ID
                                        JOIN CMN_LOOKUPS_V CST_TYPE ON CST_TYPE.ID = FP_DET.COST_TYPE_ID 
                                                                               AND CST_TYPE.LOOKUP_TYPE = 'LOOKUP_FIN_COSTTYPECODE' 
                                                                               AND CST_TYPE.LANGUAGE_CODE = 'en'
                                            JOIN TRANSCLASS TC ON TC.ID = FP_DET.TRANSACTION_CLASS_ID
                                    JOIN (  SELECT OBJECT_ID,MIN(REVISION) MIN_REVISION
                                            FROM FIN_PLANS
                                            WHERE PLAN_TYPE_CODE = 'BUDGET'
                                              AND COALESCE(TOTAL_COST,0) != 0
                                            GROUP BY OBJECT_ID) mfp ON FP.OBJECT_ID = mfp.OBJECT_ID 
                                                                   AND FP.REVISION = mfp.MIN_REVISION
                                WHERE FP.PLAN_TYPE_CODE = 'BUDGET'
                                GROUP BY FP.OBJECT_ID,FP.CODE,FP.NAME,FP.TOTAL_COST,FP_DET.COST_TYPE_ID,CST_TYPE.LOOKUP_CODE,CST_TYPE.NAME,TC.ID,TC.DESCRIPTION) OG_BUDGET ON INV.ID = OG_BUDGET.OBJECT_ID
                                                                                                              AND FP_DET.COST_TYPE_ID = OG_BUDGET.COST_TYPE_DBID
                                                                                                              AND TC.ID = OG_BUDGET.TRANSCLASS_DBID
                    LEFT JOIN ODF_CA_U_supplier_CONTRACTS CONTRACTS ON INV.ID = CONTRACTS.ODF_PARENT_ID
                                                                   AND CST_TYPE.LOOKUP_CODE = CONTRACTS.U_COST_TYPE
                                                                   AND FP_DET.TRANSACTION_CLASS_ID = CONTRACTS.U_EXPEND_TYPE
                                                                   AND CONTRACTS.U_BUDGET_SUMMARY = 1
                --WHERE INV.ID = 5229096
                WHERE INV.ID =?
                GROUP BY INV.ID,INV.CODE,INV.NAME,FP.ID,TC.DESCRIPTION,CONTRACTS.ID,OG_BUDGET.BUDGET_PLAN_CODE,ROUND(OG_BUDGET.DETAIL_COST,CONTRACTS.U_CURRENTBUDGETACR,CONTRACTS.U_ACR_OBFA) BGT
                         
        WHERE COALESCE(BGT.DETAIL_COST,0) != COALESCE(BGT.CONTRACT_CURRENT_BUDGET,0) OR
              COALESCE(BGT.OG_BUDGET_DETAIL_COST,0) != COALESCE(BGT.CONTRACT_OG_BUDGET,0)]]>
              <sql:param value="${gel_objectInstanceId}"/> 
    </sql:query>
    
    <!-- ROW COUNT OF RECORDS RETURNED -->
    <gel:log level='INFO'>RowCount: ${budgetPlanCostQuery.rowCount}</gel:log>
    
    <!-- PROCESS IF RETURNED ROWS > 0 -->
    <core:if test="${budgetPlanCostQuery.rowCount gt 0}">
    
        <!-- LOOP EACH RETURNED ROW -->
        <core:forEach items="${budgetPlanCostQuery.rows}" var="budgetPlanCost">
           
            <core:choose>
                <!-- CREATE NEW supplier CONTRACT BUDGET SUMMARY LEVEL (DOES NOT EXIST) -->
                <core:when test="${budgetPlanCost.CONTRACT_DBID eq 0}">
                    
                    <!-- GET supplier CONTRACTS NEXT AUTONUMBER FOR CODE -->
                    <core:invoke method="getConnection" on="${clarityDB}" var="dbConn"/>
                    <core:catch var="autoNumberCatch">
                        <core:set value="CALL CMN_AUTONUM_GET_NEXT_SP('u_supplier_contracts','code','NIKU.ROOT',NULL,? )" var="autoNumsql"/>
                        <core:invoke method="prepareCall" on="${dbConn}" var="pAutoNumsql">
                          <core:arg type="java.lang.String" value="${autoNumsql}"/>
                        </core:invoke>
                        <core:invoke method="registerOutParameter" on="${pAutoNumsql}">
                          <core:arg type="java.lang.Integer" value="1"/>
                          <core:arg type="java.lang.Integer" value="12"/>
                        </core:invoke>
                        <core:invoke method="executeUpdate" on="${pAutoNumsql}"/>
                        <core:invoke method="getString" on="${pAutoNumsql}" var="nextCode">
                          <core:arg type="java.lang.Integer" value="1"/>
                        </core:invoke>
                        <core:invoke method="close" on="${pAutoNumsql}"/>
                    </core:catch>
                    <core:if test="${autoNumberCatch != null}">
                        <gel:log level="INFO"><![CDATA[Auto-Number Error: ${autoNumberCatch}]]></gel:log>               
                    </core:if>
                    <!--gel:log level='INFO'>nextCode: ${nextCode}</gel:log-->
                    
                    <!-- LOG RECORD informatION --> 
                    <gel:log level='INFO'>INV_DBID: ${budgetPlanCost.INV_DBID}. COST_TYPE_CODE: ${budgetPlanCost.COST_TYPE_CODE}. TRANSCLASS_DBID: ${budgetPlanCost.TRANSCLASS_DBID}. DETAIL_COST: ${budgetPlanCost.DETAIL_COST}. OG_BUDGET_DETAIL_COST: ${budgetPlanCost.OG_BUDGET_DETAIL_COST}</gel:log>
                    
                    <!-- GET supplier CONTRACTS NEXT DBID -->
                    <core:invokeStatic var="nextDbid" className="com.niku.union.persistence.utils.IdGenerator" method="getCommonIdNextValue" >
                        <core:arg type="java.lang.String" value="ODF_CA_U_supplier_CONTRACTS" />
                        <core:arg type="java.lang.String" value="ODF_CA_U_supplier_CONTRACTS_S1" />
                        <core:arg type="com.niku.union.security.SecurityIdentifier" value="${context.getSecurityIdentifier()}" />
                    </core:invokeStatic>
                    <!--gel:log level='INFO'>nextDbid: ${nextDbid}</gel:log-->
                    
                    <!-- INSERT NEW RECORD -->
                    <core:catch var="insertNewCatch">
                        <sql:update dataSource="${clarityDB}" escapeText="0" var="update"><![CDATA[
                            INSERT INTO ODF_CA_U_supplier_CONTRACTS
                                (ID,CREATED_DATE,CREATED_BY,LAST_UPDATED_DATE,LAST_UPDATED_BY,PARTITION_CODE,NAME,CODE,ODF_PARENT_ID,ODF_CNCRT_PARENT_ID,U_COST_TYPE,U_EXPEND_TYPE,U_CURRENTBUDGETACR,U_ACR_OBFA,U_BUDGET_SUMMARY)
                            VALUES
                                (?,SYSDATE,1,?,1)]]>
                            
                            <sql:param value="${nextDbid}"/>
                            <sql:param value="${nextCode}"/>
                            <sql:param value="${nextCode}"/>
                            <sql:param value="${budgetPlanCost.INV_DBID}"/>
                            <sql:param value="${budgetPlanCost.INV_DBID}"/>
                            <sql:param value="${budgetPlanCost.COST_TYPE_CODE}"/>
                            <sql:param value="${budgetPlanCost.TRANSCLASS_DBID}"/>
                            <sql:param value="${budgetPlanCost.DETAIL_COST}"/>
                            <sql:param value="${budgetPlanCost.OG_BUDGET_DETAIL_COST}"/>
                        </sql:update>
                    </core:catch>
                    <core:if test="${insertNewCatch != null}">
                        <gel:log level="INFO"><![CDATA[Insert New Error: ${insertNewCatch}]]></gel:log>             
                    </core:if>
                </core:when>
                <core:otherwise>
                    <!-- UPDATE EXISTING RECORD -->
                    <core:catch var="updateCatch">
                        <sql:update dataSource="${clarityDB}" escapeText="0" var="update"><![CDATA[
                            UPDATE ODF_CA_U_supplier_CONTRACTS CONTRACTS
                                SET U_CURRENTBUDGETACR = ?,U_ACR_OBFA = ?
                            WHERE CONTRACTS.ODF_PARENT_ID = ?
                              AND CONTRACTS.U_COST_TYPE = ?
                              AND CONTRACTS.U_EXPEND_TYPE = ?
                              AND CONTRACTS.ID = ?
                              ]]>
                              
                            <sql:param value="${budgetPlanCost.DETAIL_COST}"/>
                            <sql:param value="${budgetPlanCost.OG_BUDGET_DETAIL_COST}"/>
                            <sql:param value="${budgetPlanCost.INV_DBID}"/>
                            <sql:param value="${budgetPlanCost.COST_TYPE_CODE}"/>
                            <sql:param value="${budgetPlanCost.TRANSCLASS_DBID}"/>
                            <sql:param value="${budgetPlanCost.CONTRACT_DBID}"/>
                        </sql:update>
                    </core:catch>
                    <core:if test="${updateCatch != null}">
                        <gel:log level="INFO"><![CDATA[Update Error: ${updateCatch}]]></gel:log>                
                    </core:if>
                </core:otherwise>
            </core:choose>
            
            <!-- CLOSE DATABASE CONNECTION -->
            <core:if test="${dbConn != null}">
                <core:invoke method="close" on="${dbConn}"/>
            </core:if>
        </core:forEach>
    </core:if>
</gel:script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。