贵州高速公路总公司——机电管理平台:项目总结

欢迎技术交流。 QQ:138986722

一:

        在该项目中、生成工单号、工单共有A、B、C、D这几种类型从"000000001"开始自动增长、增长量为1。

        专门有一张表来存储工单:

       

Tbnumber
创建时间 工单号 工单类型
201110011200 000000001 A
201110111111 000000001 B

         每次在页面加载的时候呢、就Ajax到后台获取工单:

        

public String queryPurchasingnum(String type) throws Exception {
		String sql = "select a.code,ROWNUM from (select * from tbnumber where type = ? order by code desc) a where rownum=1 ";
		List parList = new ArrayList();
		parList.add(type);
		List list = daoSql.find(sql, parList);
		String pur = "";
		if (list != null && list.size() > 0) {
			Object[] obj = (Object[]) list.get(0);
			String number = (Integer.parseInt(obj[0].toString()) + 1) + "";
			int num = 9 - number.length();
			for (int i = 0; i < num; i++) {
				number = "0" + number;
			}
			// 完整的采购单号
			pur = type + number;

		} else {
			pur = type + "000000001";
		}
		String sql1 = "insert into tbnumber values( ? , ? , ? )";
		List parList1 = new ArrayList();
		parList1.add(CurrentTime.getStringTime());
		parList1.add(pur.substring(1));
		parList1.add(type);
		daoSql.delOrUpdate(sql1, parList1);
		return pur;
	}

        这条Sql写得:o(︶︿︶)o 唉、刚刚开始的时候、我直接查询

        select code from tbnumber where type = '?' and rownum = 1

        毫无疑问、这样死得很难看、后来换成了上面的那一条。但是现在想来上面的那条还不如这条:

        select max(code) from tbnumber where type = ?

        这边在查询出来并生成过后必须在添加到表里面去、因为有可能当用户A在操作的过程中、别的用户B又开始进来添加一个新的工单、如果这样的话、工单号会有冲突!

二:

       在报表系统这边、主要是对sql的考验了~~~!!!这次我们并不采用什么插件、而是直接写sql然后接收返回数据、在前台Table显示!

       在数据分页的时候、用的是我以前组长(他离职了)写的一个分页控件、然后它是有缺陷的、在分页的时候没有form提交表单、这样死得非常的难看!

       这次sql拼装、我可是在次的认识到了自己到底菜到什么地步!

       不过还好有度娘、谷爸、跟CSDN社区的朋友帮忙!

       在没进公司之前呢、我就知道有个叫Oracle的数据库、然后公司用的就是它、要说我对Oracle不怎么了解还不如说我对数据库语言不怎么了解!

       以前在学校的时候、顶天写个存储过程~~~!!!

       然后就是增删改查、我甚至连group by 字句 跟having字句都没用过、!

       在运用Oralce开发的过程中、慢慢的发现它非常之强大、可以写job、写Function!就好像在写java程序似的!

       每每在我需要一个功能的时候、就需要去百度一下、比如将字符串转换成数字:cast(要转换的值 as 目标类型)!

       o(︶︿︶)o 唉、这就是我、只有在用到的时候才逼自己去学、平常下来就只知道看小说、玩游戏、看电影!

       我知道这样的话、自己在IT的这条路上是走不远的~~~!!!但每每下班回家之后就直接打开电脑看电影、玩游戏、看小说!

        sum(case when a.property_type='"+A+"' then 1 else 0 end)  

        这样一条Sql我足足搞了两天时间、它只是用来做一个统计而已~~~!!!

        然而因为group by分组不能实现、因为还有其它的字段需要分组、如果加上这个字段的话、分组就达不到效果了!

        在有就是对时间的一个处理

         for varStr in (select visitid
                       from tbvisitinfo tbv, tbsysuserinfo tbs
                      where tbv.plancreater = tbs.userid
                        and tbs.comid = varCode.Ecid
                        and to_date(tbv.plancreatertime,
                                    'yyyy-mm-dd hh24:mi:ss') <=
                            sysdate - v_time / 24 / 60)
       

        上面的v_time是一个分钟的变量、plancreatertime是创建时间!

        意思就是当前时间减去v_time分钟过后如果小于或者等于创建时间、就进入这个循环中!

        刚刚开始的时候用的是:

       sysdate - interval '30' minute

       但是后台发现'30' 这个参数不能用变量、就换成了上面的这种!

      INSTR (源字符串, 目标字符串, 起始位置, 匹配序号)  参考资料

      总之、如果我想继续在开发这条中走下去~~~那么我必须积极起来、主动起来~~~!!!

      最重要的是、行动起来!!!

 

posted @ 2011-10-12 10:41  java程序员填空  阅读(189)  评论(0编辑  收藏  举报