公司的数据量很小,但毕竟我才毕业,先做好自己该做的吧。
这周的任务是做,一个公寓申请号码显示
具体的效果就是,当前申请人可以获得自己的排队号,还有最大排队号,有效排队数,再排有效人数中,男的有多少个,女的有多少个。因为是公寓嘛,所以要分男女。
直接开始吧
1.
公司的框架已经很老了,但是比较成熟,就先做一个导入的页面,导入的数据有model层自动生成,这个页面主要给人力的自己用,他有时候想优先给后面的处理(比如有大领导打了招呼的),就要做一个导入。导入的数据有姓名,工号,性别,是否入住,创建时间,修改时间,最后修改时间,修改人,排序号。像这个页面的话,我要做的就是,模板的下载功能,还有就是编辑的功能,搜索的实现,还有新建的功能。
还有在CommonImportAction.java,这是一个公共的模块,在其中修改判断,并在页面相应的时候用其方法进行相应,
protected ITclDormitoryMainService ITclDormitoryService() {
if (tclDormitoryService == null)
tclDormitoryService = (ITclDormitoryMainService) SpringBeanUtil.getBean(“tclDormitoryMainService”);
return tclDormitoryService;
}是spring的注入,得到相应的对象
2、导入做好了之后,就是从model中拿到排序号,要用templatedId进行判断,这个ID的意思是,如果你已申请,你就在数据库中有一个id,如果你没申请,就没有。就用这个进行判断,分支,如果没有的话,就拿最大值进行+1返回;如果有,就用这个ID,写SQL语句到数据库取得工号,并在model生成的表中,查的对应人的排序号,进而返回。而有效排序号,是用最小排序号小于当前处理人的号的size获得,男女也是从中分出的。(这里在页面判断是否入住是有节点来判断的,不是ID,如果不是申请节点和入住情况符合的话,就直接拿值返回即可,是在前端JSP中写的)
String fdId = request.getParameter(“fdId”);//获得模板的ID
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw, true));
String str = sw.toString();//导入用的
创建时间的设置
Date date = new Date(content.trim());
newTclDormitoryMain.setFdApplyDate(date); String到date的转换
SysOrgPerson user = UserUtil.getUser();//获取当前处理人
3.其中遇到的一个开发问题就是,每次新建了一个公寓申请,就需要人力的进行立即导入,不然,下一个申请人也还会是一样的号。
我在这里帮大家捋一捋为什么,
第一,我的排序号是从哪里得到的,是从model生成的表中拿到,model的排序号哪里来,导入表的新建或者导入。
所以如果model表不更新,数字始终不变。
这就是一个问题了,因为公寓申请是有流程的,我就做了一个机器人节点,去每次提交了,自动转到后台,我个人理解这里的原理很贴切spting的aop面向切片编程,就是在这个动作之前用调用这个节点。机器人是干嘛的了,是获取到前端传来的值,那么问题又来了,前端的排序号又是从哪来的了???
机器人中值的获取方法
protected ITclDormitoryMainService tclDormitoryMainService;
ISysMetadataParser sysMetadataParser = (ISysMetadataParser) SpringBeanUtil.getBean(“sysMetadataParser”);
KmReviewMain main = (KmReviewMain) context.getMainModel();
可以在main中获取模板中的所有的值
String fd_sortnum = (String) sysMetadataParser.getFieldValue(main, “fd_sortnum”, true);
那是因为我在前端做了一个隐藏框,在第一个人申请的时候,从后台拿到的值又赋给了隐藏框,所以提交的时候,这个值后台可以取到,这里大家可以给个意见就是,如何不用隐藏框在申请提交的时候,给后台传排序号。。。
后台拿到了排序号,就进行相应的自动导入,就成了这件事。
最后再设置前端弹出框,完美,结束,代码的具体实现,后续会搬上来。