客服工作台

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;子类是父类的一种特殊…