2020092402
今天进行了大数据技术的开课测试(不过本质是个Java Web项目,和大数据技术并无太大关系)。然而个人在这次的开课测试中的结果很不理想,甚至没有到达及格线。个人是一直在写了,也对于整个系统如何编写、如何实现有大致的思路,也没搞大篇幅修改之类,但是却没能写出来足够多的功能。
对于未能写出的部分的功能的思路如下:
用户权限管理:一开始就是着重写的这个,但后来想到自己“经常在一个比较难的点死磕导致剩下没时间写”,这次决定暂时放弃已经写的内容,但已为时已晚,导致两边都没写上。表的设计是分为了user_t,permission_t,relation_t,3个表。permission_t记录各个权限,例如合同浏览这一步的权限名“拟制合同”,权限ID“1”,操作页面“addContract.jsp”,user_t记录基本用户信息,relation_t记录对用户的授权,有相应条目(比如,有userId=100000,permissionId=1表示用户ID为100000的用户被授予了ID1的权限,根据联合查询可知该权限是拟制合同,因而该用户的网页标题栏出现拟制合同的选项,点击进入拟制合同的页面)则视为该用户拥有相应权限,若该用户没有相应记录则说明其没有相应的操作权限。但是时间不足未做后端检查。预想的是每种操作的后端会从Session取出登陆时记录的userId并查询该用户是否有对自己的操作权限(同样在另一个项目中采用了此设计,防止未授权用户直接对接口访问来逃避前端的检查),如果没有则不进行操作,并通过jQuery返回信息,引导页面做出提示或者引导到登陆页面。
公文流转步骤:分析题目发现整个合同流转的流程是一个线性的步骤,同时也只会在一个流程停下,并且先前的步骤全部完成了才会进入下一步,比如第2步——销售部办公室按合同格式修改未完成将不会转到销售部经理,并进入第3步——销售部经理审批之后签署签意见,而被退回则由下述的contract_t中的int型字段contractStatus取为-1来表示,不会发生歧义或者干扰。故用公文信息表contract_t中的int型字段contractStep来表示当前的公文流转步骤。刚创建时自动填充0,每推进一步加1。
公文删除:考虑到要求能看见被删除的公文,故不对数据库中的公文信息真的进行DELETE操作,而是对于公文的删除用公文信息表contract_t中的int型字段contractStatus取为-1来表示。该字段默认为0,被打回为1。因为只有被打回的公文才会被删除,反之被删除的公文就一定是被打回的,因此被打回、被删除公用一个字段来标记并不冲突。
对于公文的信息的审批日期:日期一律在contract_t采用DateTime数据类型创建日期采用的自动填充CURRENT_TIMESTAMP,一开始的方案是审批日期即修改日期,通过根据当前时间戳自动输入CURRENT_TIMESTAMP来使每次该合同更新都改变该时间来记录,这样一切日期更新由MySQL自动完成,无需有任何针对审批过程的源程序代码进行操作。但后来发现审批后仍然有几步会审批日期则准备用SQL语句中输入CURRENT_TIMESTAMP的方式来记录,使用该语句将会让MySQL自动填充当前时间进入DateTime类型的字段中。上述2个字段也只需要获取当前,直接使用该方法可以使代码中无需专门创建一个Date类来辅助相关处理。
签收合同:预想了一个业务逻辑,但是其中一点的实现比较麻烦:签收合同考虑到会发送回执,肯定是需要在合同中记录发送方和接收方的。在一次业务中合同只会同时有一个接收方和发送方,并且项目要求中并没有关心对于以往的发送方和接收方的记录。因而,采用contract_t表中的fromId记录发送方,toId记录接收方。而当toId签收时,发送信息给fromId记录的用户,对于处于登陆状态的用户,会有一个JQuery定期向服务器发送请求获取通知,同时发送方fromId被设置成toId,使得该项被从该用户的发送列表(该机制防止该用户尚未处于登陆状态的情况下无法收到实时回执)中移除,并以fromId是否等于toId作为该合同目有没有新的发送目标的标记。
浏览合同:目前是直接改了另一个项目的分页浏览,支持多关键词搜索(自动按空格分隔 如“搜 索”会搜索标题同时包含“搜”和“索”的合同,题目没提搜索,但评分表要求了按日期范围),多个浏览合同都其实在页面完成后稍微修改Servlet和页面就能分别完成。对于点击显示详情则预计采用的是用div弹窗的形式(已在另一个项目中实际运用并正常工作,但修改起来稍微麻烦)
从大二上到现在以来 我这里的写代码慢一直是个问题。而且,老师经常强调先写页面这点我很少做到,容易“上头”。我这里偏向于设计一个考虑了所有可能的功能,在它完全就绪后才让其可以被访问到。这样做虽然对于做项目来说或许是一个好习惯,但是在测试这种“只为得分点”的情况下这些没有分的检查等等只会浪费大把的时间,导致最后结束的时候基本没做什么出来。同时虽然写了这么久的Web项目,但个人直到现在都没怎么使用过现成框架模板,原生HTML+CSS用到现在,这确实是很反常,甚至是不应该的。这极大地降低了开发的效率,并且也与业内的普遍做法相违背。
下一步计划的话…十一据说分数不足的会有额外作业,但还是希望争取能在预定时间(10.7)之前把上学期重修的大作业写完,往后面拖只会夜长梦多。上学期就是因为拖着结果忘了事才造成了一个很不好的结果。而且这个项目就目前来看优点还是有的,提升JavaWeb项目的开发水平和速度(目前的收获还是有的 正是在这个项目开始尝试大规模采用JQuery技术代替个人以前常用的jsp页面Java脚本,div弹窗取代JavaScript的alert弹窗,以及外部程序调用并监听输出,上述主要3点都会在以后的其他方面有非常多的运用)。在那之后有空余时间的话,出于个人的一些想法可能会学习一部分的Python的深度学习。