从南京回来也2周整了,最近几天一直在CSDN上闲逛,看着IT男女们自己发表的博文,有谈论技术总结的,有谈论工作总结的。自己心里不由得也想总结下自己在南京这段时间(5个月)所学所见所闻。
我们项目组有16个开发人员,其中一个为项目负责人,另有3个项目组长。我们是2012年03月26号去的南京,回来是2012年08月20号。去的时候还穿着长袖及外套,到那就感觉明显比北京温度高很多,呵呵。一句话先总结下这段时间的收获吧,就是感觉:苦受了,很值得!
项目最初期就是写项目概要设计文档,这个任务还好不是忒麻烦,周期大概就是一周左右(加业务人员的评审,就是开发人员讲解业务人员提意见及纠正)。我们组4人,一个组长(我们带队人,也是公司一架构师),三个开发人员。其他组同样是4人,一共分了4组,
其中一组组长是江苏分行派的人,项目临近结束时撤走了,他们那组来来回回也流动了好几个人。而业务人员是4个,其中3个是农行总部的一个好像是山东分行的,一期项目就是他们跟着,显示二期也是他们搞的,所以时间还是挺长的。至于3个月后陆续续来的各地测试专家就不用多说了,各块人员分配大致就是这样了。
我们项目名称为“金库业务(调拨)系统”,分18个模块(12个交易模块与6个查询模块),包含系统维护、现金调拨、重要空白凭证、有号物品、有价单证、箱包管理、假币调拨、贵金属调拨、清分管理、金库检查、机具管理、其他无号物品及其他几个查询模块。
我们组做的是系统维护、金库检查、贵金属调拨、其他无号物品这4个模块,其中系统维护是我们大家在北京已经做好了,但是后面一些维护及变更及新功能是我们搞了,这模块是所有模块的基石。我做的主要是贵金属,同时还有系统维护、金库检查,而其他无号物品有维护。贵金属模块包含贵金属维护、贵金属调拨、贵金属查询、贵金属库存修改、事件单状态特殊维护。其中贵金属维护有企业维护、品种维护、规格维护,贵金属调拨分系统内调拨(又分非挂靠行与金库间的出、入库录入与复核),贵金属查询有库存明细查询、出入库查询、事件单明细查询、交接单查询、品种规格查询、库存修改历史记录查询。
菜单如图:
贵金属查询如图:
先介绍介绍贵金属的维护吧!企业维护主要是对企业代码进行增、删、改功能。已经存在的企业代码是不能重复添加的。而删除功能到上线后是要屏蔽的,不能随便进行删除,而现在删除也是有限制的,它下面有品种代码引用的话是不可以删除,同理,品种代码下有规格引用也一样。规格代码下有库存引用也不可以删除。品种、规格维护如同企业维护。一点业务规定:企业代码长度3位,品种与规格最多6位。
1)贵金属调拨分系统内与系统外出入库录入与复核。非挂靠行出库调拨需要AT系统(与G系统交互的一个系统)发送审批信息供实物出库时进行校验是否存在调拨关系即将要调入的行部是否正确。第一次审批信息(调出行、调入行、调拨日期)传入G系统插入初始调拨单表中,第二次调拨单信息(含调拨单明细)插入原始调拨单表一份同时插入新调拨单(真正交易的调拨单)。交易操作:点选“系统内出入库录入“显示调拨单列表,点击调拨单号弹出调拨单明细框是可以核对下出入库信息与过来的实物是否相符,不符的话可以进行取消交易操作,让AT系统从新发送,当然在确定时G系统会校验调入行是否相符,不符同样会抛出异常进行相应提示。否则,进行出库录入交易并改变调拨单状态等待进行复核操作。
当然,系统内录入也可以批量录入操作。金库间出库调拨同非挂靠行,不同一点是金库间出库后会随时生成入库调拨单(在G系统生成)。
2)接下来要进行出库复核交易,点击”系统内出入库复核“进入事件单列表页面,点选事件单号弹出事件单明细,复核后会进行出库交易操作,库存进行相应操作。复核时候会验证金库录入与复核人是否是同一人,此交易不能为同一人。如果进行取消交易操作会需要主管授权,授权成功后此事件单才会设置为取消状态(相当于事件单已经失效)。而入库操作需要校验实物与事件单信息是否相符,不符合的话按照实物进行事件单调整。现在是系统内的出库交易,其它所有的都需要校验调拨行是否开启,至少有一个需要开启,不然的话没法进行调拨操作。调拨情况分:1)只有一个调拨行,如出库行开启就是系统外调出。2)只有一个调拨行,如入库行开启就是系统外调入。3)有二个调拨行,二个行都开启就是金库间出库调拨。4)有二个调拨行,如出库行开启入库行关闭就是非挂靠行领用。5)有二个调拨行,如入库行开启出库行关闭就是非挂靠行上缴。
而系统内中入库交易除了核对实物并可以改变事件单外,其他都大同小异。
非挂靠行:
金库间:
3)挂靠行出入交易有点不同,挂靠行出入库录入需要在G系统操作与AT没什么关系。挂靠行就是自己行往自己行调拨。录入界面如图:
录入界面:
流程图:
挂靠行出入是根据自己选择确定的,而事件单明细是根据选择不同企业进行一条一条添加的。此处用了个2级联动下拉。另外还有自动计算总重量与动态填写总重量(大写),提交后会生成挂靠行的调拨单。此处,事件单明细不允许添加相同企业下,同种品种不同规格。
录入成功后,则进行后续复核交易,同非挂靠行。
4)系统外是从AT传入的事件单中只能有一个行,调出行存在就是系统外调出的事件单,调入行存在就是系统外调入的事件单。系统外调拨的事件单中有调拨批次号。系统外入库录入需要在G系统录入调拨单明细(品种代码、规格、数量、总重量、状态)。下拉选择品种代码、规格代码、数量,然后系统自动计算总重量,提交后添加调拨单明细,同时右侧“删除”按钮也可以对添加的明细进行删除操作。
此交易也有取消交易操作,当然也需要进行主观授权,主观授权成功后才修改调拨单状态,出库置为:06入库置为:03
5)贵金属库存修改
功能:根据输入条件(行号、企业代码、品种代码、规格代码、实物状态)查询库存明细。
点击“行号”弹出库存明细修改框,可以输入调整方式(成品、破损、其他、冻结)、操作(增加、减少)、调整数量(大于0的数字)。调整方式指将原来实物状态调整为的实物状态。操作指对实物是增加还是减少。调整数量就是要对实物增、减多少个。当为实物间转换时,如:成品到破损,操作不可编辑,只能填写数量,如数量填3个,即成品减少3个而破损增加3个。如果为同实物转换,如:成品到成品,操作可选增加或减少,此时就是直接对当前实物进行增或减操作。
此交易只针对同企业、同品种、同规格下不同实物状态间的转换。修改操作也需要主管授权,授权成功后才可进行修改库存。
图1:
图2:
库存修改需要校验,最基本的要校验库存实物数量减去冻结后的数量是否够实物间转换。因为冻结的实物不能做出库操作与转换交易。不同状态下实物数量总和=冻结+非冻结=库存总量。对库存修改的每笔交易都有记录,在贵金属查询模块中可以对没笔操作记录进行查询。
模块为“库存修改历史记录查询”。
新增库存就是对库里没有维护的库存明细进行添加。输入要素:企业名称、品种名称、规格代码、实物数量。此处下拉框为2级联动。同样新增也需要主管授权。
6)事件单状态特殊维护
功能:其主要目的就是对金库间出库完成的调拨单进行取消交易,同时进行库存还原,原来出库操作现在进行入库操作。从AT过来的金库间出库调拨完成后会生成入库调拨单(G系统生成)。当在G系统中金库间入库调拨单进行取消交易后,则之前出库的明细需要还原即向库里再添加那些实物。由于需要操作之前出库调拨单,所以提供了此菜单。而其他交易(非挂靠行、挂靠行等)只需根据AT流水号就可以找到出库调拨单信息了。
根据入库调拨单信息(事件类型、AT流水号、状态、调拨日期)去查出库调拨单。选择某条调拨单,点击“取消交易”可以对此出库调拨单状态置为:06,同时修改库存。当然取消交易也需要主管授权。
7)贵金属查询模块
此查询模块总共有6个查询,有查询与打印功能。
贵金属基本功能就如此了,当然,去南京之前还做了系统维护中“反假行部维护”,这块暂时还没用到。具体干什么的也不是很清楚。技术就是对左边一颗树进行操作的,有基本的增、删、改、查,而右边是一些关于机构树的信息。也有相应的基本操作。
8)模块查询
查库模块做了3个查库查询(违规情况查询统计、批处理违规问题清单、金库检查扣分情况查询),不能说复杂,也是有点麻烦的。其实说麻烦归根到底都是拼sql。一个功能做到最后你会发现都是在拼sql,sql拼接出来了,基本问题都搞定了。至于性能那是后话,性能调优那可能是小程序员能力范围之外的事情。我们这块都是我们老大搞的,建索引啊,存贮过程啊、sql调优啊等问题。然后,还有现金管理查询中的现金领用超限额情况查询、现金领用超限额情况查询统计、现金限额设置查询及各自打印。
系统维护查询中有机构信息查询、员工信息查询、行部调拨关系信息查询及他们各自的下载。另外还有机构信息维护中的调拨信息、现金审批信息页面端的校验及效果。
9)文档
最后开发基本完成后就剩文档了,除了概要设计文档需要进一步修订外还要写详细设计文档,有贵金属的、系统维护的(200页),还有DB详细设计文档,主要是贵金属的。
除了上面这些工作外,还有每天对数据的维护,主要是我们测试环境的测试库,有数据更新啊、表字段有改动啊、数据的导入导出啊,都由我这在测试环境停止运行后进行统一改动。
虽然这些介绍的很粗略,但是项目还是很大的。项目架构:jsp+struts+spring+ibatis+sybase,里面用到一些前段技术,像ajax、jquery、javascript等。开发工具是Plantix2.0,可能有的用过这个开发工具,好多人都没听说过呢,这工具还是很强大的,其实就是Eclipse的一扩展。这项目里有模板下载(自己加入的)、模板打印、润乾报表、字典翻译(标签那块)、工作流(挺重要一块)。前台好多用的都是自己的标签,这些东西如工作流都经过农行封装了。而发布服务器用的是IBM的websphere。
项目总结
其实经过此项目,我自觉得技术倒是没学得特多,主要是学到了如何去解决问题及整个项目开发的流程,还有整个项目团队是什么个样子(业务、测试、开发、项目经理)。感触最深的应该还是最初一个多月,被老大狠狠地批。当那么多人面,嗓门很大的批。当时都快崩溃了,因为这也是自己第一次出差,第一次出差就封闭开发,并且当时还有点想家,所以压力老大了。不过差不多2个月后就好起来了,自己能力上也有所提升(包括沟通及解决问题能力),再加上老大脾气有所好转,然后慢慢剩下时间就不错的过来了。其实老大是认事不认人,再加上他脾气不是一般的大。逮住谁批谁,大家也都被他批怕了,有时候有问题都不敢问他了。这样吧,也有一点好就是可以锻炼脸皮薄的人。现在我脸皮就ok了,没以前那么薄了哈哈。
*****现在可以总结出一句话:一个项目最重要的是业务,核心人物也是业务人员。这也是自己感觉。业务搞懂了,技术几乎没有实现不了的,这也是老大告我们的。之所以最初犯错及效率不是很高,就是看需求文档不仔细,没好好理解业务到底是怎么就盲目去做,到后来与业务想要的有出入。说白了需求文档作用就是一份给技术、业务、测试人共同去看,去完成上面方案的一文档。那是业务人写出来的,是开发人员开发、测试人员测试的依据。如果没有文档,业务人让你做成什么你做好了,回来要是需要改了,他说。。。其实不是那样,无凭无证的,到那都说不清楚,测试那块也是如此。所以需求文档时必须的。现在回味回味着几个月,自己最缺的就是细细读并理解需求文档到底要干啥,说白了开发人员要一句一句去看,看不懂或不明白的及时与业务人员沟通,看是否是那么回事。适当的时候自己可以挑重点的自己简单记录下。都能懂了,对开发人员来说就是去实施编码了,怎样将文档中的需求一点一点变成自己手下的代码,然后又变成可实现功能的可操作的界面。这过程也是要面临好多问题的,包括页面上的还有做出来的与实际不相符,这都需要改动。开发的时候一定记住:做好一功能一定要让业务人员或测试人看下,是否正确。不要盲目的全做完再去办这事。正常的项目应该都有每天的工作汇报这么一个会议或交谈,这一般都是组长汇报。对成员而言,汇报时不要乱报(多报、报一些没完成的或根本没做的)为了赢取组长的信任或欢心。这样子不好,对整个项目进度及本组都不好。做多少就是多少,把自己完成的汇报下就ok了,真的没完成也要及时说明情况。这样方面项目经理或组长跟踪项目进度。当然,某些小问题,自己加加班啊完全可以搞定,提前报下也没什么。
开发过程中遇到难题了,要及时问老大(之前是要想想、查查的),最好先问下同事。应该每个老大基本都喜欢多问而又好学的那种人,加上人又嘴甜、理解又好,办事效率高,这样子的人好带,绝对讨人喜欢。作为一名程序员千万不要在哪一直的闷着,有问题了也不问,也不聊个天(QQ或者小组群里)什么的。适当的时候需要活跃一点。关于如何做人这些东西,我不想多说,因为我自己也在努力学习中。开发时候可能会遇到测试人员百般的刁难,呵呵!不能算刁难,就是不断的提bug,甚至有需求变更(大的变更会令人疯掉),千万不要发脾气,这样对谁都不好,毕竟大家都是为了整个项目更好,要合理的去沟通与他们。一般提需求变更是需要申请或者与老大沟通好的,你只管实现就ok了。程序员就是这么苦逼!因为我们组的查库那块,需求变更搞得我们彻底崩溃了。特别是这需求变更,改过之后更应该及时让他们验证是否正确,不行就再改呗。作为程序员要敢于承担责任,不能说项目出现问题了,自个就推卸责任,遇到问题就勇于去解决,这才方显英雄本色,嘎嘎!
开发时一定要严格按照文档上的要求,不要自己想怎么样就怎样做,就算有好的提议,要提前跟老大商量下,是否可行,ok的话再提给业务人员。其实在这个过程当中,也可以锻炼自己与别人的沟通能力,所以要积极沟通。不同的项目,领导要求也不一样,这东西不能一概而论,有的项目测试人员是远程的,有的是面对客户现场开发,总而言之:严格按需求文档做,好好沟通!
编码结束或临近结束时候,我们老大对我们这块做了代码检查,其实这工作在一边开发的时候就在做。不合理的或冗余的代码及时更正,当然我们项目每周还有个农行要求的工作,就是对项目进行代码checkstyle(代码规范),这是农行对项目要求的,必须按照他们那规范来,规范有:代码一行不能超过100个字符,一个类不能超过2000行,还有方法要有注释等等。这项工作后期是我做的,导出Excel后发给大家,有那组的那组成员改下。后面做压力测试也是对代码一个考验,还有sql拼写性能问题,如sql里用or不用in,表加索引(老大统一加的)等。优化这方面都是有经验的人来搞的。其实开发过程中,开发工具的使用会影响办事效率,但开发工具都是小事,重要的还是学习快速使用陌生工具这种能力,一般工具都有帮助文档啊,网上资料也挺多的,都可以拿来学习。同样的,大师都说:编程,代码都是浮云,唯有思想才是王道!呵呵!一件事情只要你想明白了,知道怎么去做了,做起来就快了。一个项目也是,项目精髓不是代码,而是这样做能带来什么方便或优势。我们这系统是调拨,就是行与行间的物品调拨,怎么能实现调拨同时能带来能好、方便的调拨。其归根结底就是让参与到这系统中的人更友好的进行操作,不能说实现功能就完事了。呵呵,这些只是我自个的理解。就技术而言,就是每块技术的搭建(包括框架),一个框架好与坏直接影响到项目运行性能的问题,这些深入的东西都不讨论了。项目上线前这段时间就是调试bug了,每天几个,越来越少,现在几乎没什么了。等上线的时候会有好多问题的,应该挺忙的。其实这个项目是2期的,一期都已经成型了,好多模块。无非是2期新添了好多东西。同时也感觉出来,老大负责一个项目也是挺挺不容易的,虽然他工资高吧。
以前我总以为技术NB了,什么都有了,其实真不是那样子,对业务的理解及业务能力很重要,当然不是说技术不重要了,这2方面都要抓。去一个公司面试,如问项目经验,那你肯定说的就是业务那块东西了,同时用到什么技术啊,怎么去实现啊。有些公司也不排除仅仅考技术。反正,我觉得好好理解业务第一!业务就是大师们的完成实际问题的一些构思或者思想。
这就是这几个月来,自己所学所感吧。文采不怎么样,因为本人不怎么写这样子的文章,平时也不喜欢。。。呵呵!不要见笑啊。希望多多提宝贵意见,然后咱们一起进步哦!
项目总结
最新推荐文章于 2024-08-30 18:40:43 发布