項目一:第七天 CRM 和bos系統實現定區關聯客戶,關聯快遞員. 通過CXF框架實現
定區關聯客戶
需求:為了快遞方便客戶下訂單(發快遞),派快遞員上門取件。 所以說需要讓定區關聯客戶(知道客戶屬於哪個定區),定區跟快遞員關系:多對多。知道讓哪個快遞員上門取件。
將CRM系統中,客戶表中邏輯外鍵c_fixed_area_id 設置為定區ID
實現步驟:
第一步:在服務端CRM系統擴展方法(CXF服務端)
***註意服務端擴展新增方法後需要自測
第二步:在客戶端BOS中調用CRM中查詢客戶方法-展示客戶記錄
***判斷選中定區記錄數
***發送ajax請求獲取客戶記錄
***將返回客戶記錄(json數組)遍歷展示在下拉框中
第三步:實現數據左右移動
***通過js代碼實現
第四步:在CRM中擴展客戶關聯定區方法
第五步:在BOS中調用CRM完成客戶關聯定區
(1),在CXF的服務端的CRM編寫 未關聯到定區客戶數據, 和關聯到某個定區的客戶數據,通過cmd黑窗口生成 剛才寫的兩個代碼. 將生成的接口代碼復制到Bos系統的service層.
(2) 修改前臺頁面.
通過datagrid判斷只能選中一條, 使用$.post(
${pageContext.request.contextPath}/fixedAreaAction_findNotAssociation.action",null,function(data){)
for(var i= 0;i<data.length;i++){
var id = data[i].id;
var name = data[i].username+"("+data[i].address +")";
//給左側下拉框中追加option
$("#noassociationSelect").append(‘<option value="‘+id+‘">‘+name+‘</option>‘)
}
//發送請求獲取關聯到當前定區的客戶記錄--提交定區id
$.post("${pageContext.request.contextPath}/fixedAreaAction_findHasAssociationByFixedAreaId.action",{"id":rows[0].id},function(data){
//data返回客戶數據;返回json數組;遍歷數組中內容
for(var i= 0;i<data.length;i++){
var id = data[i].id;
var name = data[i].username+"("+data[i].mobilePhone+")";
//給左側下拉框中追加option
$("#associationSelect").append(‘<option value="‘+id+‘">‘+name+‘</option>‘)
}
})
$(‘#customerWindow‘).window(‘open‘);
在Action中註入CRM的CustomerService 執行兩個方法
1.1 下拉框數據左右移動效果
<script type="text/javascript">
$(function(){
$("#toRight").click(function(){
//目的:給右側下拉框追加選型option,來源於左側選中option選型
$("#associationSelect").append($("#noassociationSelect option:selected"));
})
$("#toLeft").click(function(){
//目的:給右側下拉框追加選型option,來源於左側選中option選型
$("#noassociationSelect").append($("#associationSelect option:selected"));
})
//給左側select元素增加雙擊事件
$("#noassociationSelect").dblclick(function(){
//目的:給右側下拉框追加選型option,來源於左側選中option選型
$("#associationSelect").append($("#noassociationSelect option:selected"));
})
$("#associationSelect").dblclick(function(){
$("#noassociationSelect").append($("#associationSelect option:selected"));
})
})
</script>
1.1 提交表單完成定區關聯客戶
1、 給關聯客戶綁定事件
a) 給隱藏域賦值:定區id
b) 給下拉框設置選中效果
1.1 完成定區關聯客戶
1.1.1 在CRM中擴展方法定區關聯客戶
定區關聯客戶:關聯邏輯CRM中實現;
Service:註意:service開啟事務管理
註意:服務端如果方法名稱,參數,返回類型如果沒變,不需要重新生成本地代碼。
新增方法/修改方法參數/方法名稱/返回類型,必須重新發布服務,重新生成本地代碼
1.1.1 定區action遠程調用CRM完成定區關聯客戶
後臺管理系統中定區action中添加定區關聯客戶方法
1 定區關聯快遞員
定區-快遞員:多對多關聯;向中間表添加數據;
需求:給定區分配負責快遞員。 將來某個客戶發送快遞;現在已經完成定區關聯客戶(客戶屬於哪個定區),接著完成定區關聯快遞員。
定區-快遞員:多對多關聯向中間表添加記錄。向定區快遞員關系表新增記錄
收派時間-快遞員:一對多關聯更新子表(多方)外鍵。更新快遞員表中收派時間外鍵字段。
1、未刪除,未關聯到當前定區快遞員記錄
2、收派時間-簡化處理
第一步:頁面展示數據
**以下拉框展示在職並且未關聯到當前定區快遞員記錄
**展示收派時間記錄—簡化處理
第二步:提交表單 提交定區id,快遞員id,收派時間id
第三步:服務器端接收參數 1、快遞員關聯定區(新增) 2、快遞員關聯收派時間(更新)
1.1 使用combobox展示快遞員數據
定區是物流公司進行物流分配基本單位,快遞員負責定區。定區關聯快遞員,誰來管理某個定區。
下拉框中數據:未刪除快遞員數據:查詢deltag標識等於 null
1、 頁面fixed_area.jsp
2、 設置combobox的url發出請求-改為js方式創建下拉列表
{
id : ‘button-association-courier‘,
text : ‘關聯快遞員‘,
iconCls : ‘icon-sum‘,
handler : function(){
// 判斷是否已經選中了一個定區,彈出關聯快遞員窗口
var rows = $("#grid").datagrid(‘getSelections‘);
if(rows.length==1){
// 只選擇了一個定區
//通過js方式創建下拉列表
/* <input data-options="ditable:false, url:‘${pageContext.request.contextPath}/courierAction_listajax.action?fixedAreaId=‘,valueField:‘id‘,textField:‘name‘"
type="text" name="courierId" class="easyui-combobox" required="true" /> */
$("#courierId").combobox({
url:‘${pageContext.request.contextPath}/courierAction_listajax.action?fixedAreaId=‘+rows[0].id,
valueField:‘id‘,
textField:‘name‘,
editable:false
});
// 彈出定區關聯快遞員 窗口
$("#courierWindow").window(‘open‘);
}else{
// 沒有選中定區,或者選擇 了多個定區
$.messager.alert("警告","關聯快遞員,只能(必須)選擇一個定區","warning");
}
}
}
3、 在courierAction中添加查詢未刪除快遞員,返回json的數組數據
Dao:
//第一步子查詢:根據定區id 查詢該定區下現在已經負責快遞員id
@Query(nativeQuery=true, value="select * from t_courier c where c.c_deltag = ‘0‘ "
+ "and c.c_id not in(select fc.c_courier_id from t_fixedarea_courier fc where fc.c_fixed_area_id = ?)")
List<Courier> listajax(String fixedAreaId);
1、 數據展示
讓定區關聯快遞員,讓快遞員關聯收派時間!
1.1 展示收派時間
收派時間簡化處理:上班時間id在頁面中定死
1.1 提交快遞員表單
1、 給按鈕綁定單擊事件
1.1 服務端執行定區關聯快遞員
1、 在定區Action中添加定區關聯快遞員的方法
項目一:第七天 CRM 和bos系統實現定區關聯客戶,關聯快遞員. 通過CXF框架實現