客服工作臺

public Page<Record> customerDeskList(QhyfController controller) throws Exception {//獲取分頁信息PageInfo pageInfo = controller.getPageInfo();int pageNumber = pageInfo.getPageIndex();int pageSize = pageInfo.getPageSize();List<String> paras = new ArrayList<String>();//獲取查詢條件--核心企業String coreEnterpriseId = controller.getPara("coreEnterpriseId");//獲取查詢條件--供應商名稱String supplierName = controller.getPara("supplierName");//獲取查詢條件--是否已完成String completeStatus = controller.getPara("completeStatus");// 獲取當前登錄用戶uuidString userUuid = controller.getCurrentUser().get(BlConstant.FIELD_USER_ID);// 辦理事項String matterId = controller.getPara("matterId");// 付款確認書編號String payId = controller.getPara("payId");// 區域String coreRegionId = controller.getPara("regionId");// 保理申請開始日期String startTransferApplyDate = controller.getPara("startTransferApplyDate");// 保理申請結束日期String endTransferApplyDate = controller.getPara("endTransferApplyDate");// 當登錄用戶不是客服主管時,添加分配客服id條件String csWhere = "";if (!isCsUser(userUuid)) {csWhere = String.format(" AND a.cs_user_id = %s ", "'"+ userUuid+ "'");}// 定義總查詢條件String where = "";// 定義子查詢條件String aubQueryWhere = "";// 定義子查詢條件String queryWhere = "";// 定義子查詢參數ListList<String> aubQueryParas = new ArrayList<String>();// 查詢條件:是否已完成、辦理事項都不為空時,查詢該辦理事項 存在未完成/已完成 的供應商if(StringUtils.notBlank(completeStatus) && StringUtils.notBlank(matterId)){aubQueryWhere += " AND b.matter_id = ? and b.complete_status = ? ";aubQueryParas.add(matterId);aubQueryParas.add(completeStatus);}// 查詢條件:是否已完成不為空、辦理事項為空時,查詢該供應商對應的所有任務是否完成else if(StringUtils.notBlank(completeStatus) && StringUtils.isBlank(matterId)){if ("1".equals(completeStatus)) {where += " AND x.complete = x.total ";} else if ("0".equals(completeStatus)) {where += " AND x.complete <> x.total ";}}// 查詢條件:是否已完成為空、辦理事項不為空時,查詢包含有該任務的所有供應商else if(StringUtils.isBlank(completeStatus) && StringUtils.notBlank(matterId)){aubQueryWhere += " AND b.matter_id = ? ";aubQueryParas.add(matterId);}//查詢條件--付款確認書編號不為空時if(StringUtils.notBlank(payId)){// 調用共通轉義payId = this.strEscape(payId);aubQueryWhere += " AND c.pay_id LIKE ? ";aubQueryParas.add("%" + payId + "%");}//查詢條件--區域不為空時if(StringUtils.notBlank(coreRegionId)){String coreRegionIds[] = coreRegionId.split("-");String regionId = coreRegionIds[1];aubQueryWhere += " AND d.region_id = ? ";aubQueryParas.add(regionId);}//查詢條件--保理申請開始日期不為空時if(StringUtils.notBlank(startTransferApplyDate)){aubQueryWhere += " AND DATE_FORMAT(c.transfer_apply_date,'%Y-%m-%d') >= ? ";aubQueryParas.add(startTransferApplyDate);}//查詢條件--保理申請結束日期不為空時if(StringUtils.notBlank(endTransferApplyDate)){aubQueryWhere += " AND DATE_FORMAT(c.transfer_apply_date,'%Y-%m-%d') <= ? ";aubQueryParas.add(endTransferApplyDate);}// 子查詢條件不為空時if (StringUtils.notBlank(aubQueryWhere)){// 定義查詢SQL, 查詢出符合子查詢條件的供應商及對應的核心企業String querySQL  = String.format(""+ "select distinct "+ "       a.suppliers_id, "+ "       a.core_enterprise_id "+ "  from biz_business_task_allocate a, "+ "       biz_cs_task_info b "+ "       left join biz_pay_comfirm_info c "+ "         on c.sys_status = 1 "+ "            and c.uuid = b.biz_id "+ "       left join biz_item_company d "+ "         on d.uuid = c.item_company_id "+ "            and d.sys_status = 1 "+ " where a.sys_status = 1 "+ "   and b.sys_status = 1 "+ "   and a.biz_id = b.biz_id %s %s ", aubQueryWhere, csWhere);// 執行子查詢SQL, 獲取符合子查詢條件的供應商及對應的核心企業// add by wj 從讀庫中獲取數據 20181114 startList<Record> aubQueryRecordList = Db.use(BlConstant.READ_ONLY).find(querySQL, aubQueryParas.toArray());// add by wj 從讀庫中獲取數據 20181114 end// 循環子查詢結果,構造查詢條件for(int i = 0 ; i< aubQueryRecordList.size(); i++){// 結果只有一條數據時if(aubQueryRecordList.size() == 1){where += "AND ( x.suppliers_id = ? AND x.core_enterprise_id = ? )";paras.add(aubQueryRecordList.get(i).getStr("suppliersId"));paras.add(aubQueryRecordList.get(i).getStr("coreEnterpriseId"));queryWhere += "AND ( a.suppliers_id = '" + aubQueryRecordList.get(i).getStr("suppliersId") + "' AND a.core_enterprise_id = '" + aubQueryRecordList.get(i).getStr("coreEnterpriseId") + "' )";// 結果不止一條數據時}else{// 第一條數據if(i == 0){where += "AND ( (x.suppliers_id = ? AND x.core_enterprise_id = ?) OR ";paras.add(aubQueryRecordList.get(i).getStr("suppliersId"));paras.add(aubQueryRecordList.get(i).getStr("coreEnterpriseId"));queryWhere += "AND ( (a.suppliers_id = '" + aubQueryRecordList.get(i).getStr("suppliersId") + "' AND a.core_enterprise_id = '" + aubQueryRecordList.get(i).getStr("coreEnterpriseId") + "') OR ";}else if(i<aubQueryRecordList.size() - 1){where += " (x.suppliers_id = ? AND x.core_enterprise_id = ?) OR ";paras.add(aubQueryRecordList.get(i).getStr("suppliersId"));paras.add(aubQueryRecordList.get(i).getStr("coreEnterpriseId"));queryWhere += " (a.suppliers_id = '" + aubQueryRecordList.get(i).getStr("suppliersId") + "' AND a.core_enterprise_id = '" + aubQueryRecordList.get(i).getStr("coreEnterpriseId") + "') OR ";}// 最后一條數據else if(i == aubQueryRecordList.size() - 1){where += " (x.suppliers_id = ? AND x.core_enterprise_id = ?))";paras.add(aubQueryRecordList.get(i).getStr("suppliersId"));paras.add(aubQueryRecordList.get(i).getStr("coreEnterpriseId"));queryWhere += " (a.suppliers_id = '" + aubQueryRecordList.get(i).getStr("suppliersId") + "' AND a.core_enterprise_id = '" + aubQueryRecordList.get(i).getStr("coreEnterpriseId") + "'))";}}}}//查詢條件--核心企業不為空時if(StringUtils.notBlank(coreEnterpriseId)){where += " AND x.core_enterprise_id = ? ";paras.add(coreEnterpriseId);if(!StringUtils.notBlank(aubQueryWhere)){queryWhere += " AND a.core_enterprise_id = '" + coreEnterpriseId + "' ";}}//查詢條件--供應商名稱不為空時if(StringUtils.notBlank(supplierName)){// 調用共通轉義supplierName = this.strEscape(supplierName);where += " AND x.suppliers_name LIKE ? ";paras.add("%" + supplierName + "%");if(!StringUtils.notBlank(aubQueryWhere)){queryWhere += " AND d.suppliers_name LIKE '%" + supplierName + "%' ";}}// selectSqlString selectSql = " "+ " SELECT "+ "   x.core_enterprise_name, "+ "   x.suppliers_name, "+ "   x.complete, "+ "   x.total, "+ "   x.complete_status, "+ "   x.items_num, "+ "   x.suppliers_id, "+ "   x.core_enterprise_id ";// fromSqlString fromSql = String.format(""+ " FROM ("+ "        SELECT "+ "            y.core_enterprise_name, "+ "            y.suppliers_name, "+ "            y.suppliers_id, "+ "            y.core_enterprise_id, "+ "            SUM(y.complete_status = 1) AS complete, "+ "            COUNT(y.complete_status) AS total, "+ "            IF (SUM(y.complete_status = 1) = COUNT(y.complete_status), '已完成', '未完成') AS complete_status, "+ "            CONCAT_WS('/',CAST(    SUM(y.complete_status = 1) AS CHAR), CAST(COUNT(y.complete_status) AS CHAR) ) AS items_num "+ "        FROM "+ "            ( "+ "                SELECT "+ "                    c.core_enterprise_name, "+ "                    d.suppliers_name, "+ "                    b.complete_status, "+ "                    a.suppliers_id, "+ "                    a.core_enterprise_id "+ "                FROM "+ "                    biz_business_task_allocate a, "+ "                    biz_core_enterprise c, "+ "                    biz_suppliers d, "+ "                    biz_cs_task_info b "+ "                WHERE "+ "                    a.sys_status = 1 "+ "                    AND b.sys_status = 1 "+ "                    AND b.biz_type = 'F' "+ "                    AND a.biz_type = 'F' "+ "                    AND c.sys_status = 1 "+ "                    AND d.sys_status = 1 "+ "                    AND a.biz_id = b.biz_id "+ "                    AND a.core_enterprise_id = c.uuid "+ "                    AND a.suppliers_id = d.uuid "+ "                    AND a.biz_id NOT IN ( "+ "                                        SELECT "+ "                                            f.pay_id "+ "                                        FROM "+ "                                            biz_rollback_pay f "+ "                                        WHERE "+ "                                             f.`sys_status` = 1 "+ "                                            AND f.`biz_state` <> 15 "+ "                                        ) %s %s"+ "         UNION ALL "+ "                SELECT "+ "                    c.core_enterprise_name, "+ "                    d.suppliers_name, "+ "                    b.complete_status, "+ "                    a.suppliers_id, "+ "                    a.core_enterprise_id "+ "                FROM "+ "                    biz_business_task_allocate a, "+ "                    biz_core_enterprise c, "+ "                    biz_suppliers d, "+ "                    biz_cs_task_info b "+ "                WHERE "+ "                    a.sys_status = 1 "+ "                    AND b.sys_status = 1 "+ "                    AND c.sys_status = 1 "+ "                    AND d.sys_status = 1 "+ "                    AND b.biz_type = 'S' "+ "                    AND a.biz_type = 'S' "+ "                    AND a.biz_id = b.biz_id "+ "                    AND a.core_enterprise_id = c.uuid "+ "                    AND a.suppliers_id = d.uuid %s %s"+ "            ) y "+ "            GROUP BY y.suppliers_id,y.core_enterprise_id "+ "        ) x " + "    WHERE 1=1  %s "+ " ORDER BY x.suppliers_name DESC, x.core_enterprise_id DESC ", csWhere, queryWhere,csWhere, queryWhere, where);// 執行SQL,將獲取的數據返回前端// add by wj 從讀庫中獲取數據 20181114 startPage<Record> pageRecords = Db.use(BlConstant.READ_ONLY).paginate(pageNumber, pageSize, selectSql, fromSql, paras.toArray());// add by wj 從讀庫中獲取數據 20181114 end// 客服工作臺增加一列,顯示此供應商最近一次首次簽約(包含續簽)的流程狀態(包括線上、線下)。   if (pageRecords.getList() != null && pageRecords.getList().size() > 0) {for (Record customerDeskInfo : pageRecords.getList()) {// 準入流程最新流程狀態String instanceLastActivity = "";// 獲取供應商IDString suppliersId = customerDeskInfo.getStr("suppliersId");// 獲取核心企業IDString coreEnterpriseUuid = customerDeskInfo.getStr("coreEnterpriseId");// 以供應商ID、核心企業ID為條件,獲取該供應商最新的簽約信息Record firstContractInfo = getFirstContractInfo(suppliersId, coreEnterpriseUuid);// 簽約信息不為空時if(firstContractInfo != null){// 獲取首次簽約IDString firstContractId = firstContractInfo.getStr("uuid");// 根據首次簽約ID, 獲取最新準入接收IDString admittanceReceptionId = getAdmittanceReceptionId(firstContractId);// 準入接收ID不為空,則存在準入線下流程信息if(StringUtils.notBlank(admittanceReceptionId)){// 根據接收ID,獲取最新準入線下流程信息Record instanceLastActivityInfo = getInstanceLastActivityInfo(admittanceReceptionId);if(instanceLastActivityInfo != null){// 流程最新活動名稱String activityName = instanceLastActivityInfo.getStr("activityName");if("0".equals(firstContractInfo.getStr("renewFlag"))){// 不是續簽時instanceLastActivity = "首次簽約-" + activityName + "-" + instanceLastActivityInfo.getStr("status");}else{// 是續簽時instanceLastActivity = "第"+ firstContractInfo.getInt("renewCount") + "次續簽-" + activityName + "-" + instanceLastActivityInfo.getStr("status") ;}// 當流程風控審核已經完成時, 判斷資料是否齊全if("風控審核".equals(activityName) && "已完成".equals(instanceLastActivityInfo.getStr("status"))){// 判斷準入資料是否接收齊全boolean isCompleteFlag = isAdmittanceReceptionComplete(firstContractId);// 資料齊全時if(isCompleteFlag){instanceLastActivity = instanceLastActivity + "-資料齊全";}else{instanceLastActivity = instanceLastActivity + "-資料未齊全";}}}}// 準入接收ID為空,則只有準入線上流程信息else{// 根據首次簽約ID,獲取最新準入線上流程信息Record instanceLastActivityInfo = getInstanceLastActivityInfo(firstContractId);if(instanceLastActivityInfo != null){// 流程最新活動名稱String activityName = instanceLastActivityInfo.getStr("activityName");// 判斷是否續簽if("0".equals(firstContractInfo.getStr("renewFlag"))){// 不是續簽時instanceLastActivity = "首次簽約-" + activityName + "-" + instanceLastActivityInfo.getStr("status");}else{// 是續簽時instanceLastActivity = "第"+ firstContractInfo.getInt("renewCount") + "次續簽-" + activityName + "-" + instanceLastActivityInfo.getStr("status") ;}}}}// 準入流程最新流程狀態,添加進客服任務信息中customerDeskInfo.set("instanceLastActivity", instanceLastActivity);}}return pageRecords;}

?

轉載于:https://www.cnblogs.com/xiaowoniulx/p/11118898.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277418.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Leetcode怎么調試java代碼,在Clion上調試LeetCode代碼

在Clion上調試LeetCode代碼在leetcode上做題調試起來總有些不方便&#xff0c;所以查閱了一些資料后&#xff0c;按以下配置&#xff0c;自我感覺效率還行&#xff0c;分享給大家。祝大家刷題愉快。并附上自己整理的leetcode400題題表。Leetcode400題&#xff1a;notion地址依賴…

來入門一下kotlin吧

Kotlin是什么&#xff1f; Kotlin是一種在java虛擬機上運行的靜態類型的編程語言&#xff0c;被稱之為 Android 世界的Swift&#xff0c;由 JetBrains 設計開發并開源。 Kotlin的優勢&#xff01; Kotlin可以編譯成java字節碼&#xff0c;也可以編譯成JavaScript。方便在沒有ja…

apache2 配置php,Windows配置PHP5與Apache2

windows下安裝和配置PHP5與Apache2真是比linux下難多了&#xff0c;唉。這里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4&#xff0c;都是從官方網站下的。1. 下載安裝&#xff0c;不多說了&#xff0c;apache一路按下去就ok&#xff0c;php連按都不用&#xff0c;解壓…

ReactNative 觸摸事件處理

ReactNative觸摸事件處理 對RN觸摸事件的捕獲與冒泡機制的理解 組件A、B、C結構 組件A組件B組件C 捕獲、冒泡機制 sequenceDiagram A->>A: 是否捕獲&#xff1f;若是則停止向下一級傳遞 A->>B: B->>B: 是否捕獲&#xff1f;若是則停止向下一級傳遞 B->&g…

CISCO網絡故障排錯命令總結分享

一、故障處理命令 1、show命令&#xff1a; 1&#xff09; 全局命令&#xff1a; show version &#xff1b;顯示系統硬件和軟件版本、DRAM、Flash show startup-config &#xff1b;顯示寫入NVRAM中的配置內容 show running-config &#xff1b;顯示當前運行的配置內容 show b…

java input回車,用java怎樣編寫加減乘除,從鍵盤輸入,例如:1+2按回車得到

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//輸入String rule "(\\d\\.?\\d*)([\\…

Java中數組在內存中的存放原理?

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中數組被實現為對象&#xff0c;它們一般都會因為記錄長度而需要額外的內存。對于一個原始數據類型的數組&#xff0c;一般需要24…

程序員如何面試才能拿到offer

一、概述 面試&#xff0c;難還是不難&#xff1f;取決于面試者的底蘊&#xff08;氣場技能&#xff09;、心態和認知及溝通技巧。面試其實可以理解為一場聊天和談判&#xff0c;在這過程中有心理、思想上的碰撞和博弈。其實你只需要搞清楚一個邏輯&#xff1a;“面試官為什么會…

php 跨區域,如何構造PHP的內容包括在非安全(http://)和安全(https://)區域以及跨多個目錄使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明顯,HTTP是協議,但存在其他協議,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需鏈接到//example.com,協議就可以在沒有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)閱讀筆記

弱監督目標檢測相對于一般的目標檢測任務來說&#xff0c;訓練樣本不需要實例級別的標注&#xff0c;只需要圖片級別的標注&#xff0c;即告訴圖片中有什么而不需標注位置信息&#xff0c;這種標注圖片容易獲取&#xff0c;能節省標注時間及精力。現有的大部分方法在進行若監督…

如何添加JWT生成的token在請求頭中

前言 在我們使用JWT來做用戶的驗證時&#xff0c;我們登陸生成對應的token,并加入到請求的參數中發送到后臺提供相關的權限校驗。這個時候我們需要使用到傳遞請求頭參數傳遞的問題&#xff0c;下面是兩種方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK過濾

引言 作為一個Android開發人員&#xff0c;so對于我們來講是極其常見的&#xff0c;各種大廠的SDK中都包含著各種各樣的so&#xff0c;而so也是apk瘦身的重要一環&#xff0c;減少so平臺的數量&#xff0c;可以極大限度的減少apk的大小。 Android 中的so 先看一張官方的圖&…

java兩個數之間質數求法,求任意兩個整數之間質數的個數的代碼!!!(新手編寫)...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//將計算質數個數的類封裝在此類…

VMware——安裝CentOS

VMware——安裝CentOS 摘要&#xff1a;本文主要記錄了在VMware虛擬機里安裝CentOS的步驟。 下載操作系統 可以從下面的鏡像地址去下載各種版本的CentOS&#xff0c;此次安裝使用的版本是7.2&#xff1a; http://archive.kernel.org/centos-vault/ http://mirror.nsc.liu.se/ce…

django1.4.9 OMserverweb站點管理

1.項目setting.py配置&#xff1a; 2.項目url.py配置&#xff1a; 錯誤提示&#xff1a;auth_user這個表沒有創建&#xff0c;那個因為,admin站點默認數據表需要遷移。執行python manage.py syncdb 會創建所有應用程序需要的數據庫表4.接下來就是根據要求一步一步來&#xff1a…

matlab讀取氣象數據,基于MATLAB實現3種氣象數據的讀取和繪圖

第 29卷第 4期 2007年 11月 廣 東 氣 象 GuangdongMeteorology Vol. 29  No. 4 November 2007 基于 MATLAB實現 3種氣象數據的讀取和繪圖 劉  峰 , 劉  娟 , 李  萍 , 林  智 (民航中南空中交通管理局氣象中心 ,廣東廣州  510406)   摘  要 :針對 M ICAPS、 GR IB和…

[USACO17JAN]Promotion Counting 題解

前言 巨佬說:要有線段樹&#xff0c;結果蒟蒻打了一棵樹狀數組... 想想啊&#xff0c;奶牛都開公司當老板了&#xff0c;我還在這里碼代碼&#xff0c;太失敗了。話說奶牛開個公司老板不應該是FarmerJohn嗎&#xff1f; 題解 剛看到這道題的時候竟然沒有想到深搜&#xff0c;然…

牛客小白月賽6 水題 求n!在m進制下末尾0的個數 數論

鏈接&#xff1a;https://www.nowcoder.com/acm/contest/135/C來源&#xff1a;牛客網 題目描述 其中&#xff0c;f(1)1;f(2)1;Z皇后的方案數&#xff1a;即在ZZ的棋盤上放置Z個皇后&#xff0c;使其互不攻擊的方案數。 輸入描述: 輸入數據共一行&#xff0c;兩個正整數x,m&am…

centos php7 apcu,centos php5.4 升級 php7

接上篇&#xff0c;edusoho需要php5.5以上版本&#xff0c;于是需要升級本地phpphp是通過yum默認安裝的。以下安裝參考 linkhttps://blog.csdn.net/u012569217/article/details/77506902因此先查看本地php版本php -v檢查當前php的安裝包yum list installed | grep php將本地php…

子類訪問父類和方法覆寫

子類不能直接訪問父類的私有成員&#xff1b; 但是子類可以調用父類中的非私有方法來間接訪問父類的私有成員。 Person類中有私有字段name,Student繼承Person new Sudent().name; new Student().getName(); √ 子類拓展父類&#xff08;子類是父類的一種特殊…