• JAVAEE——BOS物流项目08:配置代理对象远程调用crm服务、查看定区中包含的分区、查看定区关联的客户


    1 学习计划

    1、定区关联客户

    完善CRM服务中的客户查询方法

    BOS项目中配置代理对象远程调用crm服务

    n 调整定区关联客户页面

    n 实现定区关联客户

    2、查看定区中包含的分区

    n 页面调整

    n 服务端实现

    3、查看定区关联的客户列表数据

    n 页面调整

    服务端通过代理对象远程调用CRM服务活动客户信息

     

    定区关联客户

    2.1 BOS项目中配置代理对象远程调用crm

    第一步:在BOS项目的pom.xml中引入CXF的依赖

            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-frontend-jaxws</artifactId>
                <version>3.0.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-rt-transports-http</artifactId>
                <version>3.0.1</version>
            </dependency>

    第二步:使用wsimport命令解析wsdl文件生成本地代码,只需要接口文件和实体类

     

    第三步:在spring配置文件中注册crm客户端代理对象

    <!-- 注册crm客户端代理对象 -->
        <jaxws:client id="crmClient" 
            serviceClass="com.itheima.crm.ICustomerService" 
            address="http://192.168.115.89:8080/crm_heima32/service/customer"/>

    第四步:通过注解方式将代理对象注入给Action

     

    2.2 完善CRM服务中的客户查询方法

    crm服务中的接口中扩展两个方法

     

    l 在实现类中实现方法

        //查询未关联到定区的客户
        public List<Customer> findListNotAssociation() {
            String sql = "select * from t_customer where decidedzone_id is null";
            List<Customer> list = jdbcTemplate.query(sql, new RowMapper<Customer>(){
                public Customer mapRow(ResultSet rs, int arg1) throws SQLException {
                    int id = rs.getInt("id");//根据字段名称从结果集中获取对应的值
                    String name = rs.getString("name");
                    String station = rs.getString("station");
                    String telephone = rs.getString("telephone");
                    String address = rs.getString("address");
                    String decidedzone_id = rs.getString("decidedzone_id");
                    return new Customer(id, name, station, telephone, address, decidedzone_id);
                }
            });
            return list;
        }
        
        //查询已经关联到指定定区的客户
        public List<Customer> findListHasAssociation(String decidedzoneId) {
            String sql = "select * from t_customer where decidedzone_id = ?";
            List<Customer> list = jdbcTemplate.query(sql, new RowMapper<Customer>(){
                public Customer mapRow(ResultSet rs, int arg1) throws SQLException {
                    int id = rs.getInt("id");//根据字段名称从结果集中获取对应的值
                    String name = rs.getString("name");
                    String station = rs.getString("station");
                    String telephone = rs.getString("telephone");
                    String address = rs.getString("address");
                    String decidedzone_id = rs.getString("decidedzone_id");
                    return new Customer(id, name, station, telephone, address, decidedzone_id);
                }
            },decidedzoneId);
            return list;
        }

    注意:服务端扩展了新的方法,需要客户端重新生成客户端代码

    2.3 调整定区关联客户页面

    页面:WEB-INF/pages/base/decidedzone.jsp

     

    第一步:修改定区页面中关联客户按钮绑定事件处理函数

    function doAssociations(){
            //获取当前数据表格所有选中的行,返回数组
            var rows = $("#grid").datagrid("getSelections");
            if(rows.length != 1){
                //弹出提示
                $.messager.alert("提示信息","请选择一个定区操作!","warning");
            }else{
                //选中了一个定区
                $('#customerWindow').window('open');
                //清理下拉框
                $("#noassociationSelect").empty();
                $("#associationSelect").empty();
                //发送ajax请求,请求定区Action,在定区Action中通过crm代理对象完成对于crm服务远程调用获取客户数据
                var url_1 = "decidedzoneAction_findListNotAssociation.action";
                $.post(url_1,function(data){
                    //遍历json数组
                    for(var i=0;i<data.length;i++){
                        var id = data[i].id;
                        var name = data[i].name;
                        var telephone = data[i].telephone;
                        name = name + "(" + telephone + ")";
                        $("#noassociationSelect").append("<option value='"+id+"'>"+name+"</option>");
                    }
                });
                
                //发送ajax请求,请求定区Action,在定区Action中通过crm代理对象完成对于crm服务远程调用获取客户数据
                var url_2 = "decidedzoneAction_findListHasAssociation.action";
                var decidedzoneId = rows[0].id;
                $.post(url_2,{"id":decidedzoneId},function(data){
                    //遍历json数组
                    for(var i=0;i<data.length;i++){
                        var id = data[i].id;
                        var name = data[i].name;
                        var telephone = data[i].telephone;
                        name = name + "(" + telephone + ")";
                        $("#associationSelect").append("<option value='"+id+"'>"+name+"</option>");
                    }
                });
            }
        }

    第二步:在定区Action中注入crm代理对象,并且提供方法远程调用crm服务

     

    第三步:为关联客户窗口中左右移动两个按钮绑定事件

     

    第四步:为定区关联客户窗口中的“关联客户”按钮绑定事件

     

    2.4 crm服务端扩展定区关联客户方法

     

    注意:crm服务端扩展方法后,需要bos客户端重新生成客户端代码

    2.5 在定区Action中提供关联客户方法

     

    查看定区中包含的分区

    页面:WEB-INF/pages/base/decidedzone.jsp

    3.1 页面调整

    第一步:为datagrid绑定数据事件

     

    第二步:定义doDblClickRow函数

     

    3.2 服务端实现

    在分区Action中提供方法,根据定区id查询关联的分区

     

    SubareaServiceImpl中提供方法,根据定区id查询关联的分区

     

    查看定区中关联的客户信息

     

        public String findListHasAssociation(){
            List<Customer> list2 = customerService.findByHasAssociation(model.getId());
            ObjectToJson(list2, null);
            return NONE;
        }

     

  • 相关阅读:
    Collections之sort、reverse
    网页小实验——在平面空间建立大量“可思考的”对象
    3D网页小实验——将txt配置文本转化为3D陈列室
    原生JavaScript实现一种日历
    JavaScript实现竖向滚动条的一种思路
    一个原生JavaScript动画库原型
    html小工具——文章注释编辑器
    基于Babylon.js编写宇宙飞船模拟程序1——程序基础结构、物理引擎使用、三维罗盘
    WebGL场景的两种地面构造方法
    基于Babylon.js编写简单的骨骼动画生成器
  • 原文地址:https://www.cnblogs.com/xieyupeng/p/8645989.html
Copyright © 2020-2023  润新知