1. 程式人生 > 其它 >泛微原始碼修改之-給客戶webservice增加介面的返回值新增使用者id

泛微原始碼修改之-給客戶webservice增加介面的返回值新增使用者id

1. 需求描述

在CRM裡面建立合同審批流程,審批結束後,需要在OA裡面建立一條對應的合同流程。其中OA合同流程表單有個“客戶”欄位,需要傳客戶的id,但CRM系統中的客戶id和OA裡面的id不對應,所有需要寫一個根據客戶名稱查詢客戶id的方法,原webservice的方法只有三個:新增,編輯,刪除。沒有查詢介面。

2. 解決辦法

增加查詢介面。
將伺服器上的CrmService.class和CrmServiceImpl.class檔案拷貝出來進行反編譯。
在CrmService.java裡面加入如下程式碼:

// 根據客戶名稱查詢客戶id
@WebMethod(
     operationName = "customerFind",
     action = "urn:com.engine.crm.interfaces.webservice.CrmService.customerFind"
)
String customerFind(String var1) throws Exception;

在CrmServiceImpl.java裡面加入如下程式碼:

// 根據客戶名稱查詢客戶id
public String customerFind(String khmc) {
    String khid = "";
    RecordSet rs = new RecordSet();
    rs.executeQuery("select id from CRM_CustomerInfo where name=?", new Object[] {khmc});
    if (rs.next()) {
        khid = rs.getString("id");
    }
    return khid;
}

3. 放入伺服器,測試

/**
     * 呼叫webservice介面
     */
    public String customerFind() {
        // 建立動態客戶端
        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();

        // 對方的wsdl地址
        Client client = dcf.createClient("http://192.168.10.116/services/CrmService?wsdl");
        String json = null;
        try {

            QName qName = new QName("http://localhost/services/CrmService", "customerFind");
            String paraXml = "泛微網路233";

            String userId = "730";

            Object[] objects1 = client.invoke(qName, paraXml.toString(), userId); // 引數1,引數2,引數3......按順序放就看可以

            json = JSONObject.toJSONString(objects1[0]);
            System.out.println("返回資料:" + json.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
        return json;

    }

結果: