用友NC移动审批APP介绍-程序员宅基地

技术标签: web前端  NC65  NC移动审批  nc  NC集成钉钉  

                                                                                              用友NC移动审批APP介绍

 

1.实现思路:通过在NC增加数据接口,实现服务端为移动审批APP提供数据服务

2.客户端:采用H5开发,可以在多平台运行,支持与NC电脑端一模一样的审批功能。

点击查看servlet代码

 

效果图如下:以集成钉钉为例

    

 

 

 

部分代码如下

 

package nc.bs.gxyy.servlet企鹅892446383;

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.bs.framework.comn.NetStreamContext;
import nc.bs.framework.server.ISecurityTokenCallback;
import nc.bs.framework.server.ITokenProcessor;
import nc.bs.gxyy.ma.login.APPUserLogin;
import nc.bs.logging.Logger;
import nc.pub.gxyy.ima.IMAService;
import nc.pub.gxyy.ma.vo.ReciveVO;
import nc.pub.gxyy.tools.APPDBUtil;
import nc.pub.gxyy.tools.APPRequestTool;
import nc.pub.gxyy.tools.MAConfig;
import nc.vo.pub.lang.UFDateTime;

import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;

public class MAServlet extends HttpServlet {
    
    /**
     * 看博客主页
     */
    private static final long serialVersionUID = 892446383;


    public MAServlet() {
    }
    
    @Override
    public void init() throws ServletException {
        super.init();
    }
    

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
        Logger.init("gxyy");
        InvocationInfoProxy.getInstance().setUserDataSource(MAConfig.getInstance().getDsName());
        
        //设置安全token
        ISecurityTokenCallback sc = (ISecurityTokenCallback) NCLocator.getInstance().lookup(ISecurityTokenCallback.class);
        sc.token("NCSystem".getBytes(), "pfxx".getBytes());
        
        ReciveVO reciveVO = null;
        try {
            reciveVO = APPRequestTool.dealRequest(request);
        } catch (Exception e1) {
            
            e1.printStackTrace();
            MAResponeUtil.writeRespone(request,response, MAResponeUtil.getErrorResponeJsonString("接收参数发生错误",""));
            return;
        }

        String result = "";
        try {
            if ("login".equals(reciveVO.getFunc())) {
                String loginuuid = APPUserLogin.login(reciveVO.getUsercode(), reciveVO.getPassword(), false);
                JSONObject obj = new JSONObject();
                obj.put("loginuuid", loginuuid);
                String usercode = reciveVO.getUsercode();
                String username = APPDBUtil.getColValue("sm_user", "user_name", "user_code", usercode);
                String cuserid = APPDBUtil.getColValue("sm_user", "cuserid", "user_code", usercode);
                String pk_group = APPDBUtil.getColValue("sm_user", "pk_group", "user_code", usercode);
                obj.put("username", username);
                obj.put("userid",cuserid);
                obj.put("pk_group", pk_group);
                result = MAResponeUtil.getSuccessResponeJsonString("登陆成功", obj);
                
                
            //业务处理
            }
            else {
                
                if(!"debug".equals(reciveVO.getRunmode())){
                    APPUserLogin.loginCheck(reciveVO.getLoginuuid());
                }

                
                if("process".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).process(reciveVO);
                    
                }else if("queryDspBill".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryDspBill(reciveVO);
                    
                }else if("queryYspBill".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryYspBill(reciveVO);
                    
                }else if("queryYbhBill".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryYbhBill(reciveVO);
                    
                }else if("queryBillVO".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryBillVO(reciveVO);
                    
                }else if("queryFJList".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryFJList(reciveVO);
                    
                }else if("queryBillApproveInfo".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).queryBillApproveInfo(reciveVO);
                }else if("getUserList".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).getUserList(reciveVO);
                }else if("getCanSelectActive".equals(reciveVO.getFunc())){
                    result = NCLocator.getInstance().lookup(IMAService.class).getCanSelectActive(reciveVO);
                }else{
                    MAResponeUtil.writeRespone(request,response, MAResponeUtil.getErrorResponeJsonString("无法识别的参数", ""));
                    return;
                }
                
                
                
            }
            
            MAResponeUtil.writeRespone(request,response, result);

        } catch (Exception e) {
            MAResponeUtil.writeRespone(request,response, MAResponeUtil.getErrorResponeJsonString(e.getMessage(), ""));
            System.out.println(e);
            e.printStackTrace();
            return;
        }
        
    }
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(req, resp);
    }


    public void doAction(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("doAction");
        doPost(request, response);
    }
    
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chen892446383/article/details/89173737

智能推荐

重新添加引用_怎么重新添加文件引用-程序员宅基地

文章浏览阅读543次。控件不能加载的时候,可以暂把工程组的只读属性去掉,重新添加部件引用。然后重新从VSSget Last Version(是否除工程文件可根据需要自己尝试*_*!)_怎么重新添加文件引用

[Codeforces #297(Div 2)]简要题解_code29724-程序员宅基地

文章浏览阅读545次。A. Vitaliy and Pie(525A)题目大意给你nn道门,在开第nn道门前必须开第n−1n-1道门,或者换句话说就是所有门必须按照1、2、3......n1、2、3......n这样的顺序依次打开,门与门之间都藏有一个钥匙,第一个门之前也有一把钥匙,每个钥匙和一类门一一对应,小写的是钥匙,大写的是门,不分大小写字母相同的话这个钥匙就和这个门对应起来了。一把钥匙开完一扇门之后就会报废,也可_code29724

AndroidStudio NDK开发最佳入门实践_androidstudio ndk 入门-程序员宅基地

文章浏览阅读574次。AndroidStudio NDK开发最佳入门实践网上一些介绍AndroidStudio NDK入门的教程,感觉都不是很完整和全面,也没有告诉初学AndroidStudio NDK的同学们一些需要注意的地方。网上的方法大多需要使用javah命令,使用本文的方法将不再使用该命令了,是不是方便了很多。 本文所介绍的是在AndroidStudio上搭建最佳的NDK开发环境,给使用NDK的开发人员最大的方_androidstudio ndk 入门

谷歌浏览器怎么下载视频 Google Chrome下载视频方法_外国谷歌视频下载-程序员宅基地

文章浏览阅读7.1k次。核心提示:现在我来教大家谷歌浏览器怎么下载视频 Google Chrome下载视频方法。谷歌浏览器怎么下载视频 Google Chrome下载视频方法 我们经常会在线看一些网页视频,但是网站的视频下载都只支持自己的客户端,如果每家网站的客户端都安装的话那是一件很麻烦的事情,现在我来教大家谷歌浏览器怎么下载视频 Google Chrome下载视频方法。【Google Chrome下载视频方法】启动chrome浏览器,进行谷歌应用商店,如图在左侧的搜索框中搜索Adkill and Media Dow_外国谷歌视频下载

霹雳猿教程网站正式上线-程序员宅基地

文章浏览阅读150次。经过几个月的努力,我的新站终于上线了 网站主要使用ASP.net core开发,前台页面很简单,后台的功能稍微复杂一点。这个网站到时候主要发布一些IT学习教程供别人学习,主要包括HTML,JavaScript,JavaEE,ASP.NET等方面的教程,敬请各位关注,谢谢! 网站里面的数据会在后面的日子里持续更新!猿教程_-CSharp教程-C#简介猿教程_-CSha..._霹雳猿

Python3 网络编程(使用Socket实现TCP、UDP通信)_python3利用socket实现通信-程序员宅基地

文章浏览阅读334次。TCP通信TCP_服务端 1 import socket as s 2 3 tcp = s.socket(s.AF_INET,s.SOCK_STREAM) 4 tcp.bind(('127.0.0.1', 6666)) 5 tcp.listen(5) 6 while True: 7 # 建立客户端连接 8 clientsocket,addr = tcp.accept() 9 print("连接地址: %s" % str(addr))10 m_python3利用socket实现通信

随便推点

Web开发基础_JQuery学习_0002_jQuery对象-程序员宅基地

文章浏览阅读173次。jQuery对象的介绍:案例思路:案例演示:需要引用 jquery-1.11.1.js<!DOCTYPE html><html><head><meta charset="UTF-8"><title>jQuery对象</title><script src="../js/

JUC源码解析(1)---- ThreadPoolExecutor 实现原理、submit()实现_threadpoolselectcallrate.submit( 实现-程序员宅基地

文章浏览阅读443次。通过ExecutorService.submit()方法提交的任务,可以获取任务执行完的返回值。在实际业务场景中,Future和Callable基本是成对出现的,Callable负责产生结果,Future负责获取结果。1、Callable接口类似于Runnable,只是Runnable没有返回值。2、Callable任务除了返回正常结果之外,如果发生异常,该异常也会被返回,即Future可..._threadpoolselectcallrate.submit( 实现

Java 访问权限控制:public、private、protected-程序员宅基地

文章浏览阅读5.8k次,点赞9次,收藏20次。本篇文章主要介绍 Java 的访问权限控制。

CentOS 7下安装 Dubbo Admin管理控制台_centos7安装dubbo-admin-程序员宅基地

文章浏览阅读1.6k次。安装tomcat,这里版本大家随意,只需要拷贝(这里我是官网下载的apache-tomcat-8.5.29)拷贝进 usr/local 然后解压tar -zxvf apache-tomcat-8.5.29.tar.gz然后重点来了,进入apache-tomcat-8.5.29/webapps,里面有一个ROOT目录,进入,然后删掉里面全部文件然后将(dubbo-admin-..._centos7安装dubbo-admin

Maven pom_pom 讯飞sdk-程序员宅基地

文章浏览阅读1.6k次。4.0.0 t t 1.0 war t /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home 4.0.8.RELEASE 3.2 5.1.1.Final 3.2.8 1.2.2 1.0.11 2.6.9 2.0.4 1.2.1 2.4.2 5.1_pom 讯飞sdk

关于阿里妈妈严禁恶意套取平台补贴通知的解读,如果不懂规则,小心54分_怎么可以套平台补贴-程序员宅基地

文章浏览阅读3.2k次。前几天淘宝联盟官方发布了一则公告:【公告】阿里妈妈严禁恶意套取平台补贴通知内容截图如下:联盟公告内容相对来说,比较模糊,为了维护xxx,严禁xxx,如果违规xxx,将处理xxx,都是很套话的模板,不懂行的人可能听得云里雾里,今天,霍常亮带着大家解读一下这则公告。首先,我们需要了解什么是平台补贴,举几个简单的例子:1、淘宝签到红包2、淘宝特价版定向补贴淘宝签到红包淘宝签到红包的玩法很普遍,去年我还特意写过一个文章,《淘宝签到红包商品直达链接,如何转化为自己的链接?》简单的说,淘宝签到红包就_怎么可以套平台补贴

推荐文章

热门文章

相关标签