BOS中定区关联客户

1. 首先发布crm服务

第一步:创建动态的web项目crm,导入hessian的jar

第二步:创建一个crm数据库和t_customer表

第三步:在crm项目的web.xml中配置spring的DispatcherServlet

 <servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup> </servlet>
 <servlet-mapping>
     <servlet-name>remoting</servlet-name>
     <url-pattern>/remoting/*</url-pattern>
 </servlet-mapping>

第四步:提供接口CustomerService和Customer类、hbm映射文件

  // 客户服务接口
public interface CustomerService {
    // 未关联定区客户
    public List<Customer> findnoassociationCustomers();
    // 查询已经关联指定定区的客户
    public List<Customer> findhasassociationCustomers(String decidedZoneId);
    // 将未关联定区客户关联到定区上
    public void assignCustomersToDecidedZone(Integer[] customerIds, String decidedZoneId);
}

第五步:为上面的CustomerService接口提供实现类

public class CustomerServiceImpl implements CustomerService {

    public List<Customer> findnoassociationCustomers() {
        Session session = HibernateUtils.openSession();
        session.beginTransaction();

        String hql = "from Customer where decidedzone_id is null";
        List<Customer> customers = session.createQuery(hql).list();

        session.getTransaction().commit();
        session.close();

        return customers;
    }

    public List<Customer> findhasassociationCustomers(String decidedZoneId) {
        Session session = HibernateUtils.openSession();
        session.beginTransaction();

        String hql = "from Customer where decidedzone_id = ?";
        List<Customer> customers = session.createQuery(hql).setParameter(0, decidedZoneId).list();

        session.getTransaction().commit();
        session.close();

        return customers;
    }

    public void assignCustomersToDecidedZone(Integer[] customerIds, String decidedZoneId) {
        Session session = HibernateUtils.openSession();
        session.beginTransaction();

        // 取消定区所有关联客户
        String hql2 = "update Customer set decidedzone_id=null where decidedzone_id=?";
        session.createQuery(hql2).setParameter(0, decidedZoneId).executeUpdate();

        // 进行关联
        String hql = "update Customer set decidedzone_id=? where id =?";
        if (customerIds != null) {
            for (Integer id : customerIds) {
                session.createQuery(hql).setParameter(0, decidedZoneId).setParameter(1, id).executeUpdate();
            }
        }
        session.getTransaction().commit();
        session.close();
    }

}

第六步:在WEB-INF目录提供spring的配置文件remoting-servlet.xml

<!-- 业务类  -->
    <bean id="customerService" class="cn.itcast.crm.service.impl.CustomerServiceImpl" />

    <!-- 注册hessian服务 -->
    <bean id="/customer" class="org.springframework.remoting.caucho.HessianServiceExporter">
        <!-- 业务接口实现类 -->
        <property name="service" ref="customerService" />
        <!-- 业务接口 -->
        <property name="serviceInterface" value="cn.itcast.crm.service.CustomerService" />
    </bean>

2. 在bos项目中调用crm服务获得客户数据

第一步:在bos项目中导入hessian的jar

第二步:从crm项目中复制CustomerService接口和Customer类到bos项目中

第三步:在spring配置文件中配置一个代理对象,可以调用crm服务

<!-- 配置远程服务的代理对象 -->
    <bean id="customerService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
        <!-- 注入接口类型 -->
        <property name="serviceInterface" value="com.itheima.bos.crm.CustomerService"/>
        <!-- 服务访问路径 -->
        <property name="serviceUrl" value="http://localhost:8080/crm/remoting/customer"/>
    </bean>

第四步:将上面的代理对象通过注解方式注入到Action中

@Autowired protected CustomerService customerService;

第五步:为定区列表页面中的“关联客户”按钮绑定事件,发送2次ajax请求访问Action,在Action中调用hessian代理对象,通过代理对象可以远程访问crm获取客户数据

//全局变量,定区选中的定区id
    var id;
    function doAssociations(){
        //判断当前是否选中了一个定区
        var rows = $("#grid").datagrid("getSelections");
        if(rows.length == 1){
            id = rows[0].id;
            //选中了一个
            $(‘#customerWindow‘).window(‘open‘);
            $("#noassociationSelect").empty();//清空下拉框
            $("#associationSelect").empty();//清空下拉框

            //发送ajax请求获取没有关联到定区的客户
            var url1 = "${pageContext.request.contextPath}/decidedzoneAction_findnoassociationCustomers.action";
            $.post(url1,{},function(data){
                //解析json数据,填充到下拉框中
                ///////////////
                for(var i=0;i<data.length;i++){
                    var id = data[i].id;
                    var name = data[i].name;
                    $("#noassociationSelect").append("<option value=‘"+id+"‘>"+name+"</option>");
                }
            },‘json‘);

            //发送ajax请求获取关联到当前选中定区的客户
            var url2 = "${pageContext.request.contextPath}/decidedzoneAction_findhasassociationCustomers.action";
            $.post(url2,{"id":rows[0].id},function(data){
                //解析json数据,填充到下拉框中
                ///////////////
                for(var i=0;i<data.length;i++){
                    var id = data[i].id;
                    var name = data[i].name;
                    $("#associationSelect").append("<option value=‘"+id+"‘>"+name+"</option>");
                }
            },‘json‘);
        }else{
            $.messager.alert("提示信息","请选择一个定区操作!","warning");
        }
    }

第六步:为左右移动按钮绑定事件

//为左右移动按钮绑定事件
$("#toRight").click(function(){
  $("#associationSelect").append($("#noassociationSelect option:selected"));
});
$("#toLeft").click(function(){
  $("#noassociationSelect").append($("#associationSelect option:selected"));
});

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

//为关联客户按钮绑定事件
$("#associationBtn").click(function(){
//在提交表单之前,选中右侧下拉框中的所有选项
$("#associationSelect option").attr("selected","selected");
//在提交表单之前设置隐藏域的值(定区id)
$("input[name=id]").val(id);
$("#customerForm").submit();
});

第八步:在定区Action中接收提交的参数,调用crm服务实现定区关联客户业务功能

private Integer[] customerIds;

    /**
     * 定区关联客户
     * @return
     */
    public String assigncustomerstodecidedzone(){
        customerService.assignCustomersToDecidedZone(customerIds, model.getId());
        return "list";
    }
时间: 2024-12-12 16:55:17

BOS中定区关联客户的相关文章

029 定区关联客户功能 - bos

一.在BOS项目中配置远程代理对象,远程调用CRM 1.使用命令wsimport命令解析wsdl文件生成本地源代码 wsimport -s . -p com.hao.crm.service http://localhost:8080/CRM/service/customer?wsdl 2.复制CustomerService和Customer类对象啊到bos项目中 3.引入cxf的依赖(已经在porm.xml中引过) 4.在Spring配置文件中注册crm客户端的代理对象 <!-- 注册CRM客户

框架 day51 BOS项目练习(定区添加及查询,Hessian入门,基于hessian实现定区关联客户功能)

BOS项目笔记第5天 1.    定区添加功能 什么是定区?定区将客户信息.取派员.分区信息关联到一起,为自动分单提供数据. 1.1   在下拉框中展示取派员数据 第一步:修改combobox的url地址,访问StaffAction的listajax方法,查询取派员数据 第二步:在StaffAction中提供方法 /** * ajax查询未作废的员工 * @return */ public String findByWorking(){ List<Staff> list=staffServic

项目一:第七天 CRM 和bos系统实现定区关联客户,关联快递员. 通过CXF框架实现

定区关联客户 需求:为了快递方便客户下订单(发快递),派快递员上门取件.  所以说需要让定区关联客户(知道客户属于哪个定区),定区跟快递员关系:多对多.知道让哪个快递员上门取件. 将CRM系统中,客户表中逻辑外键c_fixed_area_id 设置为定区ID 实现步骤: 第一步:在服务端CRM系统扩展方法(CXF服务端) ***注意服务端扩展新增方法后需要自测 第二步:在客户端BOS中调用CRM中查询客户方法-展示客户记录 ***判断选中定区记录数 ***发送ajax请求获取客户记录 ***将返

定区关联快递员 定区关联收派时间

定区关联客户 准备工作 配置applicationContext.xml 服务端 <Bean 配置service接口> <jaxws:server id="不重复" address="/customer"> 引入Bean 1.在CRM系统查询所有客户  通过黑窗口 发布服务生成代码. 2.在bos系统配置导入生成的接口.java文件 配置applicationContext.xml 客户端. <jaxws:client id  serv

bos 第5天(定区的添加、定区的分页查询、hessian远程调用实现获取客户信息)

BOS项目笔记 第5天 今天内容安排: 1.添加定区功能 2.定区分页查询 3.hessian入门----远程调用技术 4.基于hessian实现定区关联客户 1. 添加定区 定区可以将取派员.分区.客户信息关联到一起. 页面:WEB-INF/pages/base/decidedzone.jsp 第一步:使用下拉框展示取派员数据,修改combobox的URL地址,发送请求 第二步:在StaffAction中提供listajax方法,查询没有作废的取派员,返回json数据 第三步:在StaffSe

030 查看定区中关联的分区数据 - bos

一.页面修改 1.为datagrid每一行的双击事件绑定响应函数,在$("#grid").datagrid({})的json参数中执行 // 收派标准数据表格 $('#grid').datagrid( { iconCls : 'icon-forward', fit : true, border : true, rownumbers : true, striped : true, pageList: [30,50,100], pagination : true, toolbar : to

业务受理需求 客户下单 根据前台页面所选的省市区 关联定区去生成订单

1 业务受理需求 注要:通过客户提交信息自动找到快递员上门取件.   1.客户通过打电话,网络(前台系统)提交物流委托信息(寄件人地址,电话)到后台管理系统,后台管理系统会将客户物流委托信息保存到数据库中,这个物流委托信息称为:订单 Order   2.后台管理保存完订单数据后,系统根据取件地址自动匹配到快递员,系统会给快递员产生取件任务,系统会给快递员发送一条短信..这个取件任务称为:工单 WorkBill.   3.快递员根据短信中取件信息上门取件,快递员会给客户提供纸质单据(快递单),填写

024 定区分页查询 - bos

1.修改请求定区数据的URL url : "decidedzoneAction_pageQuery.action", 2.修改Decidedzone.hbm.xml,立即加载关联的Staff <many-to-one name="staff" class="com.hao.bos.entity.Staff" fetch="select" lazy="false"> <column name

Yii2中多表关联查询(with、join、joinwith)

表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer   (id  customer_name) 订单表Order         (id  order_name   customer_id   book_id) 图书表Book          (id  book_name    author_id) 作者表Author        (id  author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer ex