报表后台数据处理

//1.informix  数据库 更新表索引,提高查询效率。
//update statistics for table year_decrsubjtotal

1.生成raq中使用的datestart ,代码在form 表达中。
	var d_s = form.datekey.value;
        	var d_start = d_s.substr(0,4);
        	var m = d_s.substr(5,2);
        	
			if(m=='04' || m=='05' || m=='06'){
				d_start = d_start+"-04-01";
			}else if(m=='07' || m=='08' || m=='09'){
				d_start = d_start+"-07-01";
			}else if(m=='10' || m=='11' || m=='12'){
				d_start = d_start+"-10-01";
			}else{
				d_start = d_start+"-01-01";
			}
			
			form.datestart.value = d_start;
			
2.抽数据两种方式。
	(1).cbsCard_No_tran_q.java( Object[] objs = (Object[]) maprst.get(ikey) 法) //16
	String isql = "insert into card_no_tran_q(datekey,quarter," +
						"deptid,dqfkd,qmkld,qmkslp," +
						"ctrancx,ctrancxamt,ctranqx,ctranqxamt,ctranxf,ctranxfamt," +
						"ctranzz,ctranqzzamt,atmsbcnt,ctranatm,ctranatmamt)" +
						" VALUES('" + oDateKeyStr+ "','"+quarter+"',?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
	
	(2).cbsPaymentStruc_q.java(insert into * select * from 法)
	sql = "delete from paymentStruc_q where year =" + i_year + " and quarter=" + i_quarter;
			logger.info("sql=" + sql);
			stm.executeUpdate(sql);
			/* 根据paymentStruc表生成paymentStruc_q表 */
			sql = "insert into paymentStruc_q (year,quarter,deptid,Itemid,qcnt,qamt) select " + i_year + "," + i_quarter + ",deptid,Itemid,sum(cnt),sum(amt) from paymentStruc where datekey>='"
					+ Qbegin + "' and datekey<='" + date + "' group by deptid,Itemid";
			logger.info("sql=" + sql);
	(3).cbsBillBusiness_q6016(非数组法)
	String sql= "select deptid,sum(case when subjid in ('80602','80604') then crcnt else 0 end) as zl1cnt,sum(case when subjid in ('80602','80604') then cramt else 0 end) as zl1amt, sum(case when"+
				 " subjid in ('13010102','13010104') then decnt else 0 end) as zl2cnt,sum(case when subjid in ('13010102','13010104') then deamt else 0 end) as zl2amt,sum(case when subjid in"+
				 " ('13010102','13010104') and datekey='"+date+"' then debal else 0 end) as zl2bal, sum(case when subjid in ('60201','60202') then crcnt else 0 end) as zl3cnt,sum(case when subjid in ('60201','60202') then"+
				 " cramt else 0 end) as zl3amt,sum(case when subjid in ('60201','60202') and datekey='"+date+"' then crbal else 0 end) as zl3bal, sum(case when subjid in ('13010101','13010103') then decnt else 0 end) as"+
				 " zl4cnt,sum(case when subjid in ('13010101','13010103') then deamt else 0 end) as zl4amt,sum(case when subjid in ('13010101','13010103') and datekey='"+date+"' then debal else 0 end) as zl4bal, sum(case"+
				 " when subjid in ('20210111','20210112','20210113','20210114','20210311','20210312','20210313','20210314') then crcnt else 0 end) as zl5cnt,sum(case when subjid in"+
				 " ('20210111','20210112','20210113','20210114','20210311','20210312','20210313','20210314') then cramt else 0 end) as zl5amt,sum(case when subjid in"+
				 " ('20210111','20210112','20210113','20210114','20210311','20210312','20210313','20210314') and datekey='"+date+"' then crbal else 0 end) as zl5bal, sum(case when subjid in"+
				 " ('20040201','20040202','20040203','20040204','20040211','20040212','20040213','20040214') then crcnt else 0 end) as zl6cnt,sum(case when subjid in"+
				 " ('20040201','20040202','20040203','20040204','20040211','20040212','20040213','20040214') then cramt else 0 end) as zl6amt,sum(case when subjid in"+
				 " ('20040201','20040202','20040203','20040204','20040211','20040212','20040213','20040214') and datekey='"+date+"' then crbal else 0 end) as zl6bal, sum(case when subjid in ('13037101','13037103') and datekey='"+date+"' then"+
				 " debal else 0 end) as zl7bal from s_subjtotal_org where datekey>='"+Qbegin+"' and datekey<='"+date+"' group by deptid";
				Statement stm = conn.createStatement();
				String dsql = " DELETE FROM billbusiness_q WHERE year=" + y + " and quarter=" + quarter; // 清空数据
				stm.executeUpdate(dsql);
				int flag = 0;
				String isql = "insert into billbusiness_q(year,quarter,deptid,zl,cnt1,amt1,cbal) VALUES(?,?,?,?,?,?,?)";
				logger.debug("插入sql=" + isql);
				System.out.println(isql);				
				pst = conn.prepareStatement(isql);
				ResultSet rs = stm.executeQuery(sql);
				while (rs.next()) {
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "1");
					pst.setInt(5, rs.getInt("zl1cnt"));
					pst.setDouble(6, rs.getDouble("zl1amt"));
					pst.setDouble(7,0);
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "2");
					pst.setInt(5, rs.getInt("zl2cnt"));
					pst.setDouble(6, rs.getDouble("zl2amt"));
					pst.setDouble(7, rs.getDouble("zl2bal"));
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "3");
					pst.setInt(5, rs.getInt("zl3cnt"));
					pst.setDouble(6, rs.getDouble("zl3amt"));
					pst.setDouble(7, rs.getDouble("zl3bal"));
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "4");
					pst.setInt(5, rs.getInt("zl4cnt"));
					pst.setDouble(6, rs.getDouble("zl4amt"));
					pst.setDouble(7, rs.getDouble("zl4bal"));
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "5");
					pst.setInt(5, rs.getInt("zl5cnt"));
					pst.setDouble(6, rs.getDouble("zl5amt"));
					pst.setDouble(7, rs.getDouble("zl5bal"));
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "6");
					pst.setInt(5, rs.getInt("zl6cnt"));
					pst.setDouble(6, rs.getDouble("zl6amt"));
					pst.setDouble(7, rs.getDouble("zl6bal"));
					pst.addBatch();
					
					pst.setInt(1, y);
					pst.setInt(2, quarter);
					pst.setString(3, rs.getString("deptid"));
					pst.setString(4, "7");
					pst.setInt(5, 0);
					pst.setDouble(6, 0);
					pst.setDouble(7, rs.getDouble("zl7bal"));
					pst.addBatch();
					
					flag = flag+7;
					
					if (flag == 30) {
						flag = 0;
						pst.executeBatch();
					}
				}
				if (flag > 0)
					pst.executeBatch();
				rs.close();

  

原文地址:https://www.cnblogs.com/xrhou12326/p/3511617.html