起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4246|回复: 1

[结贴] 无效的列索引

[复制链接]

197

主题

834

帖子

1511

积分

金牌会员

Rank: 6Rank: 6

积分
1511
QQ
发表于 2018-2-5 15:00:13 | 显示全部楼层 |阅读模式
        public static boolean isAllowChangeState(String projectID) {
                System.out.println("projectID=====" + projectID);
                int mb_count = 0;
                int f_count = 0;
                int mb_f_count = 0;
                int d_count = 0;
                //获取分期商务和分期财务的最大日期
                Date date = new Date();
                Date dateEnd = new Date();
                String endDate = "2017-12-31";
                String filter = "";
                if (projectID != null && projectID.length() > 0) {
                        filter = "WHERE T1.FPROJECTID='" + projectID + "' AND T2.FPROJECTID='" + projectID + "'";
                }
                String dateSql = "SELECT MAX(t1.fEndDate) AS FENDDATE FROM V_MULTIBUSINESS_SINGLE T1, V_FINANCE_SINGLE T2  " + filter + "";
                System.out.println("查询最大日期=====" + dateSql);
                HashMap<String, String> map = new HashMap<String, String>();
                map.put("ORACLE", dateSql);
                Table dateTab = SQL.select(map, null, "/BCEG/ECON/data");
                Iterator<Row> it = dateTab.iterator();
                Row row = null;
                if (it.hasNext()) {
                        row = it.next();
                        date = row.getDate("FENDDATE");
                }
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

                try {
                        dateEnd = sdf.parse(endDate);
                } catch (ParseException e) {
                        e.printStackTrace();
                }

                if (date.getTime() < dateEnd.getTime()) {
                        //查询指定项目的分期商务数据条目
                        {
                                String sql = "SELECT t1.fid FROM V_MULTIBUSINESS_SINGLE T1 WHERE T1.FPROJECTID=?";
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                mb_count = table.size();
                        }
                        //查询指定项目的分期财务数据条目
                        {
                                String sql = "SELECT t2.fid FROM V_FINANCE_SINGLE T2 WHERE T2.FPROJECTID=?";
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                f_count = table.size();
                        }

                        if ((mb_count == 0 && f_count == 0)) {
                                return true;
                        }
                        //查询指定项目的分期商务财务数据匹配条目
                        {
                                String sql = "SELECT t1.fid FROM V_MULTIBUSINESS_SINGLE T1,V_FINANCE_SINGLE T2 WHERE T1.FYEAR=T2.FYEAR AND T1.FPERIOD=T2.FPERIOD AND T1.FPROJECTID=? AND T2.FPROJECTID=?";
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                mb_f_count = table.size();
                        }

                        if ((mb_count == f_count && f_count == mb_f_count)) {
                                return true;
                        } else {
                                return false;
                        }
                } else {
                        //查询指定项目的分期商务数据条目
                        {
                                String sql = "SELECT t1.fid FROM V_MULTIBUSINESS_SINGLE T1 WHERE T1.FPROJECTID=? AND to_char(T1.FENDDATE,'yyyy-mm-dd')>='2017-12-31'";
                                System.out.println("查询指定项目的分期商务数据条目====" + sql);
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                mb_count = table.size();
                        }
                        //查询指定项目的分期财务数据条目
                        {
                                String sql = "SELECT t2.fid FROM V_FINANCE_SINGLE T2 WHERE T2.FPROJECTID=? AND to_char(T2.FENDDATE,'yyyy-mm-dd')>='2017-12-31'";
                                System.out.println("查询指定项目的分期财务数据条目====" + sql);
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                f_count = table.size();
                        }
                        //查询指定项目的责任状及保证金数据条目
                        {
                                String sql = "SELECT t3.fid FROM BC_INV_DutyPledge T3 LEFT JOIN ECON_Proj_MultiBusiness T4 ON T3.fProjectID = T4.FprojectID WHERE T3.FPROJECTID =? AND TO_CHAR(T4.FENDDATE, 'yyyy-mm-dd') >= '2017-12-31'";
                                System.out.println("查询指定项目的责任状及保证金数据条目====" + sql);
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                d_count = table.size();
                        }

                        if ((mb_count == 0 && f_count == 0 && d_count == 0)) {
                                return true;
                        }
                        //查询指定项目的分期商务财务责任状及保证金数据匹配条目  ---   这里往上可以执行,下面的sql没有执行
                        {
                                String fYear = "";
                                String fPeriod = "";
                                String fYearSql = "SELECT MAX(t1.fyear) AS FYEAR, MAX(t1.fperiod) AS FPERIOD FROM V_MULTIBUSINESS_SINGLE T1 WHERE T1.FPROJECTID = ? AND TO_CHAR(T1.FENDDATE, 'yyyy-mm-dd') >= '2017-12-31' ";
                                HashMap<String, String> mapSql = new HashMap<String, String>();
                                mapSql.put("ORACLE", fYearSql);
                                List<Object> list = new ArrayList<Object>();
                                list.add(projectID);
                                Table fYearTab = SQL.select(map, list, "/BCEG/ECON/data");
                                Iterator<Row> itRow = fYearTab.iterator();
                                Row rows = null;
                                if (itRow.hasNext()) {
                                        rows = itRow.next();
                                        fYear = rows.getString("FYEAR");
                                        fPeriod = rows.getString("FPERIOD");
                                }
                                String sql = "SELECT t1.fid FROM V_MULTIBUSINESS_SINGLE T1, V_FINANCE_SINGLE T2, BC_INV_DutyPledge t3 WHERE T1.FYEAR = '" + fYear
                                                + "' " + "AND T1.FPERIOD = '" + fPeriod + "' AND T1.FPROJECTID = ? AND T2.FYEAR = '" + fYear + "' AND T2.FPERIOD = '"
                                                + fPeriod + "' AND T2.FPROJECTID = ? " + "AND T3.FYEAR = '" + fYear + "' AND T3.FPERIOD = '" + fPeriod
                                                + "' AND T3.FPROJECTID = ?";
                                System.out.println("查询指定项目的分期商务财务责任状及保证金数据匹配条目====" + sql);
                                Map<String, String> sqlMap = new HashMap<String, String>();
                                sqlMap.put(DatabaseProduct.DEFAULT.name(), sql);
                                sqlMap.put(DatabaseProduct.ORACLE.name(), sql);
                                List<Object> varList = new ArrayList<Object>();
                                varList.add(projectID);
                                varList.add(projectID);
                                varList.add(projectID);
                                Table table = SQL.select(sqlMap, varList, "/BCEG/ECON/data");
                                mb_f_count = table.size();
                        }
                        if ((mb_count == f_count && f_count == mb_f_count && d_count == mb_f_count)) {
                                return true;
                        } else {
                                return false;
                        }
                }

        }






Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150039; 提示: 执行sql: SELECT MAX(t1.fEndDate) AS FENDDATE FROM V_MULTIBUSINESS_SINGLE T1, V_FINANCE_SINGLE T2  WHERE T1.FPROJECTID='C7AF39022FAE49BDB2AF1777BDD722BB' AND T2.FPROJECTID='C7AF39022FAE49BDB2AF1777BDD722BB', binds: [C7AF39022FAE49BDB2AF1777BDD722BB]出错
        at com.justep.exception.BusinessException.create(Unknown Source)
        at com.justep.system.data.SQL.select(Unknown Source)
        at com.justep.system.data.SQL.select(Unknown Source)
        at com.viosun.common.Common.isAllowChangeState(Common.java:215)
        ... 26 more
Caused by: java.sql.SQLException: 无效的列索引
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
        at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5265)
        at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8808)
        at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8749)
        at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:9471)
        at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:9454)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:169)
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.setObject(DelegatingPreparedStatement.java:169)
        at com.justep.system.data.SQL.setParameters(Unknown Source)
        ... 29 more


------回复内容仅供参考

197

主题

834

帖子

1511

积分

金牌会员

Rank: 6Rank: 6

积分
1511
QQ
 楼主| 发表于 2018-2-5 15:08:07 | 显示全部楼层
解决结帖
------回复内容仅供参考
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-5 06:00 , Processed in 0.092398 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表