JAVAEE——BOS物流項目09:業務受理需求分析、創建表、實現自動分單、數據表格編輯功能使用方法和工作單快速錄入

来源:https://www.cnblogs.com/xieyupeng/archive/2018/04/04/8719083.html
-Advertisement-
Play Games

1 學習計劃 1、業務受理需求分析 n 業務通知單 n 工單 n 工作單 2、創建業務受理環節的數據表 n 業務通知單 n 工單 n 工作單 3、實現業務受理自動分單 n 在CRM服務端擴展方法根據手機號查詢客戶信息 n 在CRM服務端擴展方法根據取件地址查詢定區id n 調整業務受理頁面回顯客戶信 ...


1 學習計劃

1、業務受理需求分析

n 業務通知單

n 工單

n 工作單

2、創建業務受理環節的數據表

n 業務通知單

n 工單

n 工作單

3、實現業務受理自動分單

CRM服務端擴展方法根據手機號查詢客戶信息

CRM服務端擴展方法根據取件地址查詢定區id

n 調整業務受理頁面回顯客戶信息

n 實現自動分單

4、數據表格編輯功能使用方法

5、工作單快速錄入

 

 

業務受理需求分析

整個BOS項目分為基礎設置、取派、中轉、路由、報表等幾大部分。

  受理環節,是物流公司業務的開始,作為服務前端,客戶通過電話、網路等多種方式進行委托,業務受理員通過與客戶交流,獲取客戶的服務需求和具體委托信息,將服務指令輸入我司服務系統。

 

  客戶通過打電話方式進行物流委托,物流公司的客服人員需要將委托信息錄入到BOS系統中,這個錄入的信息稱為業務通知單

  當客服人員將業務通知單信息錄入到系統後,系統會根據客戶的住址自動匹配到一個取派員,併為這個取派員產生一個任務,這個任務就稱為工單

  取派員收到取貨任務後,會到客戶住址取貨,取派員會讓客戶填寫紙質的單子(寄件人信息、收件人信息等),取派員將貨物取回物流公司網點後,需要將紙質單子上的信息錄入到BOS系統中,錄入的信息稱為工作單

 

創建業務受理環節的數據表

 

 

 

業務受理自動分單

頁面:WEB-INF/pages/qupai/noticebill_add.jsp

 

 

4.1 crm服務中擴展方法

l 根據客戶的手機號查詢客戶信息

根據客戶的取件地址查詢定區id

 

介面:

 

實現類:

//根據手機號查詢客戶信息
    public Customer findCustomerByTelephone(String telephone) {
        String sql = "select * from t_customer where telephone = ?";
        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);
            }
        },telephone);
        
        if(list != null && list.size() > 0){
            return list.get(0);
        }
        return null;
    }

    public String findDecidedzoneIdByAddress(String address) {
        String sql = "select decidedzone_id from t_customer where address = ?";
        String decidedzoneId = jdbcTemplate.queryForObject(sql, String.class, address);
        return decidedzoneId;
    }

 

4.2 頁面調整

<td>來電號碼:</td>
                    <td><input type="text" class="easyui-validatebox" name="telephone" required="true" />
                        <script type="text/javascript">
                            $(function(){
                                //頁面載入完成後,為手機號輸入框綁定離焦事件
                                $("input[name=telephone]").blur(function(){
                                    //獲取頁面輸入的手機號
                                    var telephone = this.value;
                                    //發送ajax請求,請求Action,在Action中遠程掉調用crm服務,獲取客戶信息,用於頁面回顯
                                    $.post('noticebillAction_findCustomerByTelephone.action',{"telephone":telephone},function(data){
                                        if(data != null){
                                            //查詢到了客戶信息,可以進行頁面回顯
                                            var customerId = data.id;
                                            var customerName = data.name;
                                            var address = data.address;
                                            $("input[name=customerId]").val(customerId);
                                            $("input[name=customerName]").val(customerName);
                                            $("input[name=delegater]").val(customerName);
                                            $("input[name=pickaddress]").val(address);
                                        }else{
                                            //沒有查詢到客戶信息,不能進行頁面回顯
                                            $("input[name=customerId]").val("");
                                            $("input[name=customerName]").val("");
                                            $("input[name=delegater]").val("");
                                            $("input[name=pickaddress]").val("");
                                        }
                                    });
                                });
                            });
                        </script>    
                    </td>

 

第二步:創建NoticebillAction,註入crm代理對象,提供方法根據手機號查詢客戶信息,返回json

 

註意:配置struts.xml

第三步:為頁面中“新單”按鈕綁定事件

 

 

4.3 NoticebillAction中提供方法實現業務受理自動分單

 

 

@Service
@Transactional
public class NoticebillServiceImpl implements INoticebillService {
    @Autowired
    private INoticebillDao noticebillDao;
    @Autowired
    private IDecidedzoneDao decidedzoneDao; 
    @Autowired
    private IWorkbillDao workbillDao;
    @Autowired
    private ICustomerService customerService;
    /**
     * 保存業務通知單,還有嘗試自動分單
     */
    public void save(Noticebill model) {
        User user = BOSUtils.getLoginUser();
        model.setUser(user);//設置當前登錄用戶
        noticebillDao.save(model);
        //獲取客戶的取件地址
        String pickaddress = model.getPickaddress();
        //遠程調用crm服務,根據取件地址查詢定區id
        String decidedzoneId = customerService.findDecidedzoneIdByAddress(pickaddress);
        if(decidedzoneId != null){
            //查詢到了定區id,可以完成自動分單
            Decidedzone decidedzone = decidedzoneDao.findById(decidedzoneId);
            Staff staff = decidedzone.getStaff();
            model.setStaff(staff);//業務通知單關聯取派員對象
            //設置分單類型為:自動分單
            model.setOrdertype(Noticebill.ORDERTYPE_AUTO);
            //為取派員產生一個工單
            Workbill workbill = new Workbill();
            workbill.setAttachbilltimes(0);//追單次數
            workbill.setBuildtime(new Timestamp(System.currentTimeMillis()));//創建時間,當前系統時間
            workbill.setNoticebill(model);//工單關聯頁面通知單
            workbill.setPickstate(Workbill.PICKSTATE_NO);//取件狀態
            workbill.setRemark(model.getRemark());//備註信息
            workbill.setStaff(staff);//工單關聯取派員
            workbill.setType(Workbill.TYPE_1);//工單類型
            workbillDao.save(workbill);
            //調用簡訊平臺,發送簡訊
        }else{
            //沒有查詢到定區id,不能完成自動分單
            model.setOrdertype(Noticebill.ORDERTYPE_MAN);
        }
    }
}

 

 

datagrid編輯功能使用方式

數據表格編輯功能是以列為單位。

l 通過數據表格中的列屬性定區具體那一列具有編輯功能:

 

 

l 開始編輯:

 

 

結束編輯:

 

 

l 插入一行數據:

 

 

l 刪除一行:

 

 

l 獲得指定行對象的索引

 

 

l 數據表格提供的用於監聽結束編輯事件

 

<table id="mytable"></table>
    <!-- 方式三:使用easyUI提供的API創建datagrid -->
    <script type="text/javascript">
        $(function(){
            var myIndex = -1;//全局變數,值為正在編輯行的索引
            //頁面載入完成後,創建數據表格datagrid
            $("#mytable").datagrid({
                //定義標題行所有的列
                columns:[[
                          {title:'編號',field:'id',checkbox:true},
                          {width:150,title:'姓名',field:'name',editor:{
                                                              type:'validatebox',
                                                              options:{}
                                                             }},
                          {width:150,title:'年齡',field:'age',editor:{
                                type:'numberbox',
                                  options:{}
                                   }},
                          {width:150,title:'日期',field:'address',editor:{
                                type:'datebox',
                                  options:{}
                                   }}
                          ]],
                //指定數據表格發送ajax請求的地址
                url:'${pageContext.request.contextPath }/json/datagrid_data.json',
                rownumbers:true,
                singleSelect:true,
                //定義工具欄
                toolbar:[
                         {text:'添加',iconCls:'icon-add',
                             //為按鈕綁定單擊事件
                             handler:function(){
                                 $("#mytable").datagrid("insertRow",{
                                     index:0,//在第一行插入數據
                                     row:{}//空行
                                 });
                                 $("#mytable").datagrid("beginEdit",0);
                                 myIndex = 0;
                              }
                         },
                         {text:'刪除',iconCls:'icon-remove',handler:function(){
                            //獲得選中的行對象
                             var rows = $("#mytable").datagrid("getSelections");
                             if(rows.length == 1){
                                 var row = rows[0];
                                 //獲得指定行對象的索引
                                 myIndex = $("#mytable").datagrid("getRowIndex",row);
                             }
                             $("#mytable").datagrid("deleteRow",myIndex);
                             //$.post();
                         }},
                         {text:'修改',iconCls:'icon-edit',handler:function(){
                             //獲得選中的行對象
                             var rows = $("#mytable").datagrid("getSelections");
                             if(rows.length == 1){
                                 var row = rows[0];
                                 //獲得指定行對象的索引
                                 myIndex = $("#mytable").datagrid("getRowIndex",row);
                             }
                             $("#mytable").datagrid("beginEdit",myIndex);
                         }},
                         {text:'保存',iconCls:'icon-save',handler:function(){
                             $("#mytable").datagrid("endEdit",myIndex);
                         }}
                         ],
                //顯示分頁條
                pagination:true,
                pageList:[3,5,7,10],
                //數據表格提供的用於監聽結束編輯事件
                onAfterEdit:function(index,data,changes){
                    console.info(data);
                    $.post();
                }
            });
        });
    </script>

 

基於數據表格編輯功能實現工作單快速錄入

quickworkorder.jsp

添加ajax

 

 

添加後臺代碼:

    public String add() throws IOException {
        String f = "1";
        try{
            workordermanageService.save(model);
        }catch(Exception exception){
            f= "0";
        }
    ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
        ServletActionContext.getResponse().getWriter().print(f);
        return NONE;
        
    }

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 面向對象這門課,寫了3次作業,在這裡分享一下自己的設計思路、分析總結等,歡迎一起探討~ ...
  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 一. 下載並安裝Nginx 去Nginx官網下載 我這裡選取nginx/Windows-1.10.3版本,下載後解壓出來即可,解壓出來的路徑不能含有中文 我解壓後將其放置的路徑如下 二、開始運行 在當前目錄下按住shift+滑鼠右鍵,選擇“在此處 ...
  • 這篇文章主要介紹了python sort、sorted高級排序技巧,本文講解了基礎排序、升序和降序、排序的穩定性和複雜排序、cmp函數排序法等內容,需要的朋友可以參考下 Python list內置sort()方法用來排序,也可以用python內置的全局sorted()方法來對可迭代的序列排序生成新的 ...
  • ...
  • 目前知道的迭代器有兩種: 一種是調用方法直接返回的; 一種是可迭代對象通過執行iter方法得到的。 迭代器的好處是可以節省記憶體。 如果在某些情況下,我們也需要節省記憶體,就只能自己寫。自己寫的這個能實現迭代器功能的東西就叫生成器。 ...
  • 1.寫函數,返回一個撲克牌列表,裡面有52項,每一項是一個元組 例如:[(‘紅心’,2),(‘草花’,2), …(‘黑桃’,‘A’)] 2.寫函數,傳入n個數,返回字典{‘max’:最大值,’min’:最小值} 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2} 3 ...
  • 常用模塊 1 logging模塊 日誌級別:Noset (不設置) Debug (調試信息) 也可用10表示 Info--(消息信息) 也可用20表示 Warning (警告信息) 也可用30表示 Error (錯誤消息) 也可用40表示 Critical (嚴重錯誤) 也可用50表示 預設級別是W ...
  • 裝飾器本質上就是一個python函數,他可以讓其他函數在不需要做任何代碼變動的前提下,增加額外的功能,裝飾器的返回值也是一個函數對象。 裝飾器的應用場景:比如插入日誌,性能測試,事務處理,緩存等等場景。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...