common.md 6.4 KB

通用

#1 分页

/** 一页的数据数量 */
int size = 20;

/** 超始页,一般是1 */
int first = 1;
/** 当前页 */
int curr = 1;
/** 最后页,总页数 */
int last = 1;
/** 总条数 */
int total = 0;

/** 数据超始索引 */
int start = 0;
/** 数据结束索引 */
int finish = 0;

#2 户藉常量 这里的结构是枚举类型 enum(num, desc)

LOCAL_CITY(1, "本市城镇"),
LOCAL_VILLAGE(2, "本市农村"),
NONLOCAL_CITY(3, "外地城镇"),
NONLOCAL_VILLAGE(4, "外地农村");

#3 基数类型

数值 代表基数
1 自定义
2 最低工资
3 实际工资 ( 暂不支持 )

#4 WebSocket

请求连接

建议使用 SockJS客户端.

URI
/he/ws/new/conn
  • 前端公共JS代码

    var webSocketSrv, ws_session_id="", curr_uri, ws_uri="/he/ws/new/conn";
    /**
     * 使用WebSocket
     * @param websocket_uri
     * @param openFunc
     * @param msgFunc
     */
    function useWebSocket(websocket_uri, openFunc, msgFunc) {
        if (webSocketSrv && webSocketSrv.readyState == 1) { // open=1, closed=3
            ws_close();
        }
        curr_uri = (undefined != websocket_uri && "" != websocket_uri) ? websocket_uri : ws_uri;
        webSocketSrv = new SockJS(curr_uri);
    
        if (undefined == openFunc) {
            webSocketSrv.onopen = function () {
                ws_opened(false);
            };
        } else {
            webSocketSrv.onopen = openFunc;
        }
    
        if (undefined == msgFunc) {
            webSocketSrv.onmessage = function (evt) {
                var data = JSON.parse(evt.data);
                if ("WS_DONE" == data.p) {
                    webSocketSrv.close();
                    clearInterval(ws_interval);
                }
            }
        } else {
            webSocketSrv.onmessage = msgFunc;
        }
    
        webSocketSrv.onerror = function (evt) {
            webSocketSrv.close();
            notice("WS因异常已关闭:"+evt.data, 8000);
        };
    }
    
    /**
     * 在WebSocket的 onopen, onmessage事件中调用.
     * data : JS的JSON对象.
     */
    var ws_interval, auto_conn=false, openFunc, msgFunc;
    function ws_opened(autoConn) {
        wsSessionId();
        clearInterval(ws_interval);
        notice("WS连接成功", 1);
        auto_conn = autoConn;
        if (!auto_conn) {
            return;
        }
        openFunc = webSocketSrv.onopen;
        msgFunc = webSocketSrv.onmessage;
        ws_interval = window.setInterval(function () {
            if (webSocketSrv && webSocketSrv.readyState != 1) { // open=1
                notice("WS连接已关闭, 自动尝试重连");
                if (auto_conn == false) {
                    clearInterval(ws_interval);
                } else {
                    useWebSocket(curr_uri, openFunc, msgFunc);
                }
            }
        }, 5000);
    }
    
    function ws_close() {
        webSocketSrv.close();
        clearInterval(ws_interval);
        auto_conn = false;
    }
    
    /**
     * 当只需要用到WS的消息展示,不发送消息时.
     *  手动获取得到WebSocket的SessionID, 发到其它接口进行消息推送
     */
    function wsSessionId() {
        if (webSocketSrv) {
            var url = webSocketSrv._transport.url;
            var uri = url.substring(url.indexOf(curr_uri)+curr_uri.length+1, url.length);
            ws_session_id = uri.substring(uri.indexOf("/")+1, uri.indexOf("/")+9);
            console.log("ws_id="+ws_session_id);
            return ws_session_id;
        }
        return "";
    }
    
  • 调用

    useWebSocket("", function () { // onopen
            ws_opened(true);
            var data = {
                p: "sync_wdsb_sbuser",
                msg: ""
            };
            webSocketSrv.send(JSON.stringify(data));
        }, function (evt) {    // onmessage
            var data = JSON.parse(evt.data);
            $("#wsModal").modal({ backdrop: 'static', keyboard: false });
            $("#wsBody").prepend("<p>"+data.msg+"</p>");
            if (data.p == "WS_DONE") {
               ws_close();
            }
        }
    );
    

协议

协议号 描述
WS_ID 成功打开连接,直接推送此协议消息
WS_MSG 普通的消息
WS_DONE 成功处理,WebSocket使用结束.

响应的协议消息结构

  • p 协议号
  • msg 协议内容体
{
    "p": "WS_MSG",
    "msg": "员工的五险一金方案不存在,已经终止修改。"
}

5 社保数据状态

第一个参数名: num, 第二个参数名: desc

PRE_PAY(1, "待付款"),
PAY_OK(2, "完成付款"),
APPLYING(3, "正在申报中"),
OK(4, "参缴成功"),
FAIL(5, "参缴不成功"),
REFUNDED(11, "已全额退款"),
ASK_REFUND(15, "用户申请退款"),
WXYJ_DOC(30, "存档中(不可更改)"),
WXYJ_GEN(31, "系统生成"),
WXYJ_PROXY(32, "代缴生成"),
WXYJ_CONFIRM(36, "代缴确认"),
WXYJ_PROXYING(40, "代缴中"),       // 然后接下状态:APPLYING(3, "正在申报中")、OK(4, "完成参保") 或 FAIL(5, "参保不成功"),
WXYJ_PROXYED(44, "代缴完成")

6 操作规则

enum(int num, String desc)

INC_C_DEC_C(0, "增当月、减当月")
INC_C_DEC_N(1, "增当月、减下月")
INC_N_DEC_N(2, "增下月、减下月")

7 户藉常量

enum(int num, String desc)

LOCAL_CITY(1, "本市城镇"),
LOCAL_VILLAGE(2, "本市农村"),
NONLOCAL_CITY(3, "外地城镇"),
NONLOCAL_VILLAGE(4, "外地农村");    

8 参缴类型

enum(int num, String desc)

INC(1, "增员"),
NORMAL(5, "在保"),
DEC(8, "减员"),
REPAY(11, "补缴") // 补缴数据不区分增员还是在保.