起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1893|回复: 3

[分享] 自定义函数加载电子签名、审批意见。时间

  [复制链接]

50

主题

483

帖子

1163

积分

金牌会员

Rank: 6Rank: 6

积分
1163
QQ
发表于 2013-9-16 23:08:04 | 显示全部楼层 |阅读模式
1、java方法:主要包含了:电子签名获取和拼接图片地址,代码也许有些冗余,不是很完善。
     paramJson:是UI拼接字符串传递过来,详细参数见下面js。
              /*         * 取出所有的处理意见。
         */
        public static String getDocDealResultAll(String paramJson) {
                String[] modle = { "/OA/doc/data" };
                String sheetID = null, bSessionID = null, activity = null, process = null;
                String re = null;
                DBManeger dmOA = null;
                try {

                        JSONObject js = new JSONObject(paramJson);
                        sheetID = js.getString("sheetID");
                        bSessionID = js.getString("bSessionID");
                        activity = js.getString("activity");
                        process = js.getString("process");
                        if (bSessionID == null || "".equals(bSessionID) || sheetID == null || "".equals(sheetID)) {
                                return null;
                        }
                        JSONObject js1 = js.getJSONObject("param");
                        Set set = new HashSet();
                        Iterator it = js1.keys();

                        String key = null, value = null;
                        String[] values = null;
                        while (it.hasNext()) {
                                key = (String) it.next();
                                value = js1.getString(key);
                                if (!"".equals(value)) {
                                        values = value.split(",");
                                        for (int i = 0; i < values.length; i++) {
                                                set.add(values);
                                        }
                                }
                        }
                        Map<String, String> map = new HashMap<String, String>();
                        String sql = "select a.fOpinion,a.fActivityFName,a.fUpdateTime ,case when b.fsignature is null then '0' else '1' end as  flag ,"
                                        + "case when b.fsignature is null then a.fUpdatePsnName else b.fID end as  sign from OA_PUB_Execute a left join chxzsys.dbo.AP_PersonSignature b"
                                        + " on a.fUpdatePsnID=b.fID  where a.fMasterID='" + sheetID + "' ";
                        if (set.size() > 0) {
                                StringBuilder sb = new StringBuilder();
                                it = set.iterator();
                                while (it.hasNext()) {
                                        value = (String) it.next();
                                        sb.append("a.fActivityFName like '%");
                                        sb.append(value);
                                        sb.append("%' or ");
                                }
                                int _i001 = sb.length();
                                if (_i001 > 0) {
                                        sql += " and (" + sb.substring(0, sb.length() - 4) + ")";
                                }
                        }
                        Log.debug("oooo:" + sql);
                        dmOA = DBFactor.getDB("x5", modle);
                        ResultSet rs = dmOA.query(sql);
                        String _s002 = null, _s005 = null, _s004 = null, _s006 = null;
                        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");

                        int _i001 = 0;
                        while (rs.next()) {
                                _s002 = rs.getString("fActivityFName");
                                if (_s002 != null) {
                                        _i001 = _s002.lastIndexOf("/");
                                        if (_i001 != -1) {
                                                _s002 = _s002.substring(_i001 + 1);
                                                if ("0".equals(rs.getString("flag"))) {
                                                        _s004 = rs.getString("sign");
                                                } else {
                                                        _s004 = "<img class='opionImg' src='/x5/UI/system/service/common/bizAction.j?bsessionid=" + bSessionID
                                                                        + "&language=zh_CN&dataModel=" + dataModel + "&concept=" + concept + "&activity=" + activity + "&process="
                                                                        + process + "&relation=" + relation + "&action=" + action + "&id=" + rs.getString("sign") + "'/>";
                                                }

                                                _s005 = map.get(_s002);
                                                _s006 = rs.getString("fOpinion");
                                                if (_s006 == null || "".equals(_s006.trim()))
                                                        _s006 = "无";
                                                if (_s005 == null && rs.getString("fOpinion") == null) {
                                                        map.put(_s002, "<tr><td>" + "</td><td></td><td></td></tr> <tr><td colspan='3'>意见:" + _s006
                                                                        + " </td><tr><tr><td</td><td style='text-align:right'>处理人:</td><td style='height:40px'>" + _s004
                                                                        + "</td><tr><td colspan='2' style='text-align:right'>日期:" + sd.format(rs.getDate("fUpdateTime")) + "</td></tr>");
                                                } else {
                                                        map.put(_s002, (_s005 == null ? "" : _s005) + "<tr><td>" + "</td><td></td><td></td></tr> <tr><td colspan='3'>意见:" + _s006
                                                                        + "</td><tr><tr><td</td><td style='text-align:right'>处理人:</td><td style='height:40px'>" + _s004
                                                                        + "</td><tr><td colspan='2' style='text-align:right'>日期:" + sd.format(rs.getDate("fUpdateTime")) + "</td></tr>");
                                                }
                                        }
                                }
                        }
                        it = js1.keys();
                        while (it.hasNext()) {
                                key = (String) it.next();
                                value = js1.getString(key);
                                if (value != null && !"".equals(value)) {
                                        values = value.split(",");
                                        String _s001 = "", _s003 = null;
                                        for (int i = 0; i < values.length; i++) {
                                                _s003 = map.get(values);
                                                _s001 = (_s003 == null) ? "" + _s001 : _s001 + _s003;
                                        }
                                        js1.put(key, "<table id='" + key + "' style='margin-top:10px;height:auto;width:100%' >" + _s001 + "</table>");
                                }
                        }
                        re = js1.toString();
                        Log.debug(re);
                } catch (JSONException e1) {
                        e1.printStackTrace();
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        dmOA.closeDB();
                }
                return re;
        }

红色部分:主要就是拼接图片地址,在UI层显示


2、UI层js代码,
function setOpinion() {
        var paramk = {
                activity : justep.Context.getCurrentActivity(),
                process : justep.Context.getCurrentProcess(),
                sheetID : justep.xbl("dataMain").getCurrentID(),
                bSessionID : justep.Request.URLParams.bsessionid,
                param : {// 各个字段对应的环节意见。如果对应多个环节,环节名称以,分隔
                        fNucleardraft : "deptApproveActivity",
                        fdraftIssued : "draftlawerActivity",
                        fSOpinion : "leaderissuedActivity"
                }
        };
        if (paramk.sheetID) {
                var param = new justep.Request.ActionParam();
                param.setString("paramJson", JSON.stringify(paramk));
                var process = justep.Context.getCurrentProcess();
                var activity = justep.Context.getCurrentActivity();
                var r = justep.Request.sendBizRequest(process, activity,
                                "getDocDealResult", param, null, null, true);
                if (!justep.Request.isBizSuccess(r)) {
                        alert("提示:过滤信息失败,请联系管理员连接失败!");
                        return null;
                } else {
                        var result = justep.Request.transform(justep.Request
                                        .getData(r.responseXML));
                        if (result) {
                                var cdata = justep.xbl("docdraftData");
                                cdata.newData();
                                var reObject = eval("(" + result + ")");
                                var _t001 = null, _t002 = null;
                                for ( var k in reObject) {
                                        _t002 = reObject[k];
                                        $("#" + k).html(function() {
                                                document.getElementById(k).outerHTML=(_t002 == "null") ? " " : _t002;
                                        })
                                }
                        }
                        return result;
                }
        }
}
在UI层需注意几点:页面布局时,需添加
与param : {// 各个字段对应的环节意见。如果对应多个环节,环节名称以,分隔                        fNucleardraft : "deptApproveActivity",
                        fdraftIssued : "draftlawerActivity",
                        fSOpinion : "leaderissuedActivity"
                }
对应的页面元素,如:<xforms:textarea id="fdraftIssued" ref="data('docdraftData')/fdraftIssued" style="height:100%;"/>                                     <xforms:textarea id="fNucleardraft" ref="data('docdraftData')/fNucleardraft" style="height:100%;"/>

有几个将对应几个参数。
当加载setOpinion 这个方法时,
                   for ( var k in reObject) {                                        _t002 = reObject[k];
                                        $("#" + k).html(function() {
                                                document.getElementById(k).outerHTML=(_t002 == "null") ? " " : _t002;
                                        })
                                },这句将会找到对应的param

的参数ID,将其替换成对应的html代码,达到查看签名、审批意见、审批时间。

这只是一种实现方法而已,仅供大家参考,肯定里面还有些代码不完善。在使用的过程中在慢慢完善吧!


评分

参与人数 2威望 +2 +10 收起 理由
jishuang + 10 赞一个!
M1cseven + 2 很给力!

查看全部评分

76

主题

992

帖子

2212

积分

金牌会员

Rank: 6Rank: 6

积分
2212
QQ
发表于 2013-9-17 00:27:42 | 显示全部楼层
顶,楼主在补充一下业务场景就好了!
回复 支持 反对

使用道具 举报

56

主题

163

帖子

291

积分

中级会员

Rank: 3Rank: 3

积分
291
QQ
发表于 2014-1-6 15:34:26 | 显示全部楼层
亲,这个怎么用啊。
回复 支持 反对

使用道具 举报

998

主题

4330

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10732
QQ
发表于 2014-1-8 09:23:52 | 显示全部楼层
说下我的想法,
1、既然是电子签名,那么电子签名就具有不可伪造的特性,这个电子签名不具有,在数据库中就是一条数据insert一条数据就是一个签名;
2、既然是电子签名,那么一次签订后,后面不可更改,这个电子签名不具有,如果更换了电子签名的图片,前面时间的电子签名也会跟着显示最新的签名;
3、如果那天用户说:我了解到世面上的电子签名还有那些等等特性,你这个怎么没有,你怎么解释,等于给自己挖了个坑;
所以,非常不认可这个需求的实现方式
孤舟蓑笠翁,独钓寒江雪。
X5牛刀交流民间第一群:30057529
提供有偿服务,联系WX:18332024
bex5疑难问题解决方案
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 15:26 , Processed in 0.067724 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表