烟草局绩效考核系统打分模块开发笔记

开发一个绩效考核系统,其难度、复杂度不在开发一个功能复杂的权限系统开发难度之下。作者这里把原始设计以及一些技术细节公布出来,希望能和大家一起交流学习。
        背景:原始系统设计方案参见《某烟草局绩效考核系统整体设计方案》。
        要求:指标树层级排列,以便打分使用。
        环境:WindowsXP5.1SP2、IE6.0、JDK(JRE)1.6U0、MyEclipse5.1.0、Tomcat5.5、Oracle9i、PL/SQL Developer7.0。
        技术细节:临时表 + 存储过程实现树形结构查询 + 游标 + 递归查询。
        技术难点:返回结果集的存储过程的编写以及调用、临时表与 Java 程序的衔接。
        部分页面效果及其部分源码如下:
        1、指标库界面


        指标库数据结构


        2、岗位指标界面


        岗位指标数据结构


        3、临时表的创建 sql

-- Create table create global temporary table JXKH_TEMP_ROLE_GUIDELINE (ID NUMBER(15),FID NUMBER(15),ROLEID NUMBER(15),ROLENAME VARCHAR2(50),GUIDELINEID NUMBER(15),GUIDELINENAME VARCHAR2(50),ISATOMIC NUMBER(1),GUIDEFID NUMBER(15),GUIDESEQ NUMBER(4),GUIDELEVEL NUMBER(1),NOTES VARCHAR2(1000),MAXIMUM NUMBER(5,2),MINIMUM NUMBER(5,2),CHILDNUM NUMBER ) on commit delete rows; 
        4、评估打分列表界面


        5、目标:评估打分页面


        评估打分静态页面效果源代码(部分)

<table class="Ntable" cellspacing="1" cellpadding="1" align="Center" border="0" id="gvInfo" style="border-style:None;width:100%;"><tr class="SkyTDTopLine" align="center"><th scope="col">指标大类</th><th scope="col">指标小类</th><th scope="col">指标名称</th><th scope="col">说明</th><th scope="col">最小值</th><th scope="col">最大值</th><th scope="col">单项分</th></tr><tr class="SkyTDLine" align="center"><!-- 一级指标 --><td rowspan="2">经济指标</td><!-- 二级指标 --><td rowspan="1">投资管理</td><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">省局项目</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-50" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1076"><input name="guideNames" id="guideNames" type="hidden" value="省局项目"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"><!-- 二级指标 --><td rowspan="1">会务组织</td><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">制定会务管理制度</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-2" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1075"><input name="guideNames" id="guideNames" type="hidden" value="制定会务管理制度"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"><!-- 一级指标 --><td rowspan="4">工作质量指标</td><!-- 二级指标 --><td rowspan="1">会务组织</td><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">组织及时</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-10" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1140"><input name="guideNames" id="guideNames" type="hidden" value="组织及时"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"><!-- 二级指标 --><td rowspan="3">办公用品管理</td><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">用品管理</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-4" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1141"><input name="guideNames" id="guideNames" type="hidden" value="用品管理"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">办公用品</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-5" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1142"><input name="guideNames" id="guideNames" type="hidden" value="办公用品"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"><!-- 三级指标 --><td><div style="width:200px;"><span id="gvInfo_ctl02_Label1">办公管理</span></div></td><td><a href="/jxkh/atomicGuideLine.do?method=getNotes" mce_href="jxkh/atomicGuideLine.do?method=getNotes" target="_blank">说明</a></td><td><input class='classN1' name="Sky_10351" type="text" style="width:30px;" value="-8" readonly="readonly"></td><td><input class='classN2' name="Sky_10352" type="text" style="width:30px;" value="0" readonly="readonly"></td><td><input name="marks" id="marks" type="text" style="width:80px;" value="0" maxlength="4"> <!-- οnblur="skyChange(this,'1035');" --><input name="guideIds" id="guideIds" type="hidden" value="1143"><input name="guideNames" id="guideNames" type="hidden" value="办公管理"><input type="hidden" name="markIds" id="markIds" value=""/></td></tr><tr class="SkyTDLine" align="center"> 
        6、编写 JXKH_GUIDELE_CHILD_NUM 存储过程源代码

CREATE OR REPLACE PROCEDURE JXKH_GUIDELE_CHILD_NUM(ROLE_ID_ JXKH_ROLE_GUIDELINE.ROLEID%TYPE,REF_CURSOR OUT SYS_REFCURSOR ) ASNUM_ NUMBER;CURSOR C_ROLE_GUIDE IS SELECT * FROM V_JXKH_ROLE_GUIDELINE;---申明一个游标 这时候ORACLE并不执行SELECT 只是申明V_EMP V_JXKH_ROLE_GUIDELINE%ROWTYPE; BEGINNUM_:=0;OPEN C_ROLE_GUIDE;--打开游标ORACLE才执行SELECTFETCH C_ROLE_GUIDE INTO V_EMP;WHILE C_ROLE_GUIDE%FOUND LOOP--EXIT WHEN (C_ROLE_GUIDE%NOTFOUND);IF V_EMP.GUIDELEVEL = 1 THEN--一级分类SELECT COUNT(*) INTO NUM_ FROM V_JXKH_ROLE_GUIDELINE WHERE FID IN (SELECT GUIDELINEID FROM V_JXKH_ROLE_GUIDELINE WHERE FID=V_EMP.GUIDELINEID AND ROLEID=ROLE_ID_);INSERT INTO JXKH_TEMP_ROLE_GUIDELINE VALUES(V_EMP.ID,V_EMP.fid,V_EMP.ROLEID,V_EMP.ROLENAME,V_EMP.GUIDELINEID,V_EMP.GUIDELINENAME,V_EMP.isatomic,V_EMP.guideFid,V_EMP.guideseq,V_EMP.guidelevel,V_EMP.notes,V_EMP.maximum,V_EMP.minimum,NUM_);ELSIF V_EMP.GUIDELEVEL = 2 THEN--二级分类SELECT COUNT(*) INTO NUM_ FROM V_JXKH_ROLE_GUIDELINE WHERE FID=V_EMP.GUIDELINEID AND ROLEID=ROLE_ID_;INSERT INTO JXKH_TEMP_ROLE_GUIDELINE VALUES(V_EMP.ID,V_EMP.fid,V_EMP.ROLEID,V_EMP.ROLENAME,V_EMP.GUIDELINEID,V_EMP.GUIDELINENAME,V_EMP.isatomic,V_EMP.guideFid,V_EMP.guideseq,V_EMP.guidelevel,V_EMP.notes,V_EMP.maximum,V_EMP.minimum,NUM_);ELSE--三级分类INSERT INTO JXKH_TEMP_ROLE_GUIDELINE VALUES(V_EMP.ID,V_EMP.fid,V_EMP.ROLEID,V_EMP.ROLENAME,V_EMP.GUIDELINEID,V_EMP.GUIDELINENAME,V_EMP.isatomic,V_EMP.guideFid,V_EMP.guideseq,V_EMP.guidelevel,V_EMP.notes,V_EMP.maximum,V_EMP.minimum,NUM_);END IF;NUM_:=0;--计数器清零FETCH C_ROLE_GUIDE INTO V_EMP;END LOOP;CLOSE C_ROLE_GUIDE;OPEN REF_CURSOR FOR SELECT * FROM (SELECT * FROM JXKH_TEMP_ROLE_GUIDELINE T1 WHERE T1.ROLEID=ROLE_ID_)T2 START WITH T2.FID=0 CONNECT BY PRIOR T2.GUIDELINEID=T2.FID;--存储过程返回结果集 END; 
        调用 JXKH_GUIDELE_CHILD_NUM 存储过程 Java 源代码

/*** 根据传入的角色id,调用存储过程jxkh_guidele_child_num返回该角色分配的所有指标任务*/public List<AtomicGuideLine> getRoleGuideline(String roleId){List<AtomicGuideLine> list = new ArrayList<AtomicGuideLine>();Connection conn = null;CallableStatement stmt = null;ResultSet rs = null;try {DBConnectionManager dcm = DBConnectionManager.getInstance();conn = dcm.getConnection("oracle");conn.setAutoCommit(false);//这里一定要的,不然会报“ORA-08103”错误stmt = conn.prepareCall("BEGIN JXKH_GUIDELE_CHILD_NUM(?,?); END;");stmt.setInt(1, Integer.parseInt(roleId));stmt.registerOutParameter(2, -10 /* OracleTypes.CURSOR = -10 */); //REF CURSOR(OracleTypes.CURSOR==-10)stmt.execute(); rs = (ResultSet) stmt.getObject(2); while(rs.next()){AtomicGuideLine atomicGuideLine = new AtomicGuideLine();atomicGuideLine.setId(rs.getString("guidelineid"));atomicGuideLine.setFid(rs.getString("fid"));atomicGuideLine.setGuideName(rs.getString("guidelinename"));atomicGuideLine.setGuideSeq(rs.getString("guideSeq"));atomicGuideLine.setGuideLevel(rs.getString("guideLevel"));atomicGuideLine.setNotes(rs.getString("notes"));atomicGuideLine.setMaximum(rs.getString("maximum"));atomicGuideLine.setMinimum(rs.getString("minimum"));atomicGuideLine.setChildNum(rs.getString("childNum"));atomicGuideLine.setGuideMark("0");list.add(atomicGuideLine);}conn.commit();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{if(rs != null){try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(stmt != null){try {stmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn != null){try {conn.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return list;} 
        关于绩效考核系统设计以及存储过程结果集调用方面的任何问题,欢迎读者在线和作者交流,msn:defonds@hotmail.com。

烟草局绩效考核系统打分模块开发笔记相关推荐

  1. [含lw+源码等]javaweb银行柜员业务绩效考核系统

           博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 [含lw+源码等]javaweb银行柜员业务绩效考核系统 演示视频 ...

  2. (免费分享)基于jsp,javaweb银行柜员业务绩效考核系统(带论文)

    源码领取:关注下方gongzhonghao,输入口令005获取下载链接 业务绩效考核系统主要目的是使绩效考核信息管理清晰化,基本功能包括:权限处理模块.输入模块.处理模块.统计输出模块.维护模块等.本 ...

  3. Java银行柜员业务绩效考核系统(含源码+论文+答辩PPT等)

    该项目采用技术JSP.Servlet.jdbc.Tomcat服务器.MySQL数据库 ,项目含有源码.论文.配套开发软件.软件安装教程.项目发布教程 项目功能:业务绩效考核系统主要目的是使绩效考核信息 ...

  4. 【项目精选】银行柜员业务绩效考核系统的设计与实现

    当今社会己进入信息社会时代,信息己经受到社会的广泛关注,被看作社会和科学技术发展的三大支柱(材料.能源.信息)之一.信息是管理的基础,是进行决策的的基本依据.在一个组织里,信息己作为人力.物力.财力之 ...

  5. Python-Django毕业设计公立医院绩效考核系统(程序+Lw)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+N ...

  6. 有关绩效考核系统的一些想法

    1. 绩效考核系统应该提供补填考核表的功能.比如,针对季度考核,当前已经是2008年3季度了,那么有些员工可能由于特殊原因不能还没有填写其2008年2季度考核表,造成无法对其进行考核,这里应该可以独立 ...

  7. java计算机毕业设计公立医院绩效考核系统(附源码、数据库)

    java计算机毕业设计公立医院绩效考核系统(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

  8. 计算机毕业设计Java公立医院绩效考核系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java公立医院绩效考核系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java公立医院绩效考核系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...

  9. JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

    JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...

最新文章

  1. 联手小米,雀巢中国推出健康管家Nesfinity,满足个性化生活需求管理
  2. 脉讯发布“社群搜索工具” 助企业精准洞察消费者需求
  3. 小甲鱼python课后题答案_小甲鱼python视频教程下载|小甲鱼零基础学python视频教程附习题答案_ - 极光下载站...
  4. JS 前20个常用操作字符串的函数
  5. [Golang]Go语言学习资源集合
  6. python输出星号_Python的星号(*、**)的作用
  7. 深入理解C++中的explicit关键字
  8. C语言程序设计二期末考试,C语言程序设计期末考试试卷2.doc
  9. flutter不支持热更新_Flutter 在安卓上可以实现热更新了
  10. KVM 创建虚拟机时,--os-variant参数这样填写
  11. 干货 | 局部特征图像配准用于缺陷检测
  12. 抢人竞争激烈,为保障iPhone需求,富士康为新员工提供万元奖金
  13. datatables使用封装
  14. RxJava 在Android中的应用
  15. 【PM2.5预测】基于matlab灰色模型PM2.5预测【含Matlab源码 499期】
  16. MacBook上Wi-Fi抓包权限
  17. PS教程:紫色光晕效果实现
  18. CSS的一些基础应用
  19. Vue 设置背景图片
  20. 一文彻底搞懂MySQL基础:B树和B+树的区别

热门文章

  1. 【mac如何修改git本地提交代码的用户名和邮箱】
  2. 画面云管理服务器 华为 型号,手机型号云服务器
  3. 如何在Linux环境下用虚拟机跑Windows!
  4. ventuz 云_Ventuz配置Leap Motion环境
  5. 开机小键盘不启动问题
  6. 【23考研】计算机择校信息库-湖北高校计算机相关专业22专业目录分类汇总(按专业课分类汇总)
  7. 火狐浏览器网页启动后默认静音的解决方案
  8. mysql按自然年、月、日、季度、周查询数据
  9. DHCP Snooping实验
  10. 集成融云 IM 问题总结