package cn.ksource.web.facade.order;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.WORKFLOW_BASE;
|
import cn.ksource.beans.WORKFLOW_NODE;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.web.Constants;
|
|
@Service("orderFacade")
|
public class OrderFacadeImpl implements OrderFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Override
|
public PageInfo queryMyOrderData(PageInfo pageInfo,Map<String,String> params) {
|
|
StringBuilder builder = new StringBuilder();
|
params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
|
/**
|
* 查询逻辑
|
* 1.如果节点状态选择为全部,则查询节点表中处理人是我的,(或者处理角色是我的并且没有分配处理人的)--------------我的工单不再查询处理角色问题,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
String flowstate = params.get("flowstate");
|
if(StringUtil.notEmpty(flowstate)) {
|
if(flowstate.equals("1")) {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" WHERE D.FLOWSTATE = :jddcl ");
|
params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
|
} else if(flowstate.equals("2")) {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT B.*,A.FLOWSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1");
|
params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
|
}else {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT DISTINCT B.*,A.FLOWSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1 ");
|
params.put("jdywc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_FINISH));
|
}
|
} else {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
}
|
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
|
String hjName = params.get("hjName");
|
if(StringUtil.notEmpty(hjName)) {
|
builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
|
params.put("hjName", "%"+hjName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
String pageSize = pageInfo.getPageSize();
|
String currPage = pageInfo.getCurrPage();
|
if(!StringUtil.notEmptyNum(pageSize)){
|
pageSize = "10";
|
}
|
if(!StringUtil.notEmptyNum(currPage)){
|
currPage = "1";
|
}
|
int begin = Integer.valueOf(currPage);
|
int size = Integer.valueOf(pageSize);
|
if(!StringUtil.notEmpty(flowstate)) {
|
builder.append( " ORDER BY D.FLOWSTATE,D.CREATETIME DESC" );
|
List<Map> result = baseDao.queryForList(builder.toString(),params);
|
List resultList = new ArrayList();
|
List<String> list = new ArrayList<String>();
|
Map cacheMap = new HashMap();
|
if(null!=result && result.size()>0) {
|
for(Map m : result) {
|
String flowId = ConvertUtil.obj2StrBlank(m.get("ID"));
|
if(cacheMap.containsKey(flowId)) {
|
String flowState = ConvertUtil.obj2StrBlank(m.get("FLOWSTATE"));
|
if(flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE.toString()) || flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_DOING.toString())) {
|
cacheMap.put(flowId, m);
|
if(!list.contains(flowId)) {
|
list.add(flowId);
|
}
|
}
|
} else {
|
cacheMap.put(flowId, m);
|
list.add(flowId);
|
}
|
}
|
|
if(cacheMap.size()>0) {
|
for(String str : list) {
|
resultList.add(cacheMap.get(str));
|
}
|
}
|
}
|
|
int infoCount = resultList.size();
|
int bin = (begin-1)* size ;
|
int end = (begin-1)* size + size;
|
if(end>infoCount){
|
end=infoCount;
|
}
|
PageInfo info = new PageInfo();
|
info.setDatas(resultList.subList(bin, end));
|
info.setRowNum(infoCount);
|
return info;
|
} else {
|
builder.append( " ORDER BY D.CREATETIME DESC ");
|
|
PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
return info;
|
}
|
|
|
|
}
|
|
@Override
|
public int queryMyOrderCount(Map<String,String> params) {
|
|
StringBuilder builder = new StringBuilder();
|
params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
|
/**
|
* 查询逻辑
|
* 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
|
String flowstate = params.get("flowstate");
|
if(StringUtil.notEmpty(flowstate)) {
|
if(flowstate.equals("1")) {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.ID,B.WFSTATE,B.CUSTOMER_ID,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_NAME,B.BUSINESSTYPE,B.WFNAME FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
|
|
builder.append(") D");
|
builder.append(" WHERE 1 = 1 ");
|
params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
|
} else if(flowstate.equals("2")) {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
builder.append(" SELECT B.ID,B.WFSTATE,B.CUSTOMER_ID,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_NAME,B.BUSINESSTYPE,B.WFNAME FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1");
|
params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
|
}else {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
builder.append(" SELECT B.ID,B.WFSTATE,B.CUSTOMER_ID,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_NAME,B.BUSINESSTYPE,B.WFNAME FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1");
|
params.put("jdywc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_FINISH));
|
}
|
} else {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.ID,B.WFSTATE,B.CUSTOMER_ID,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_NAME,B.BUSINESSTYPE,B.WFNAME FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
}
|
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
params.put("status", status);
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
|
String hjName = params.get("hjName");
|
if(StringUtil.notEmpty(hjName)) {
|
builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
|
params.put("hjName", "%"+hjName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
StringBuilder newBuild = new StringBuilder();
|
newBuild.append("SELECT COUNT(*) FROM ( ");
|
newBuild.append(builder.toString());
|
newBuild.append(") E");
|
|
return baseDao.queryForInteger(newBuild.toString(),params);
|
}
|
|
|
|
|
/**
|
* 查询服务台所有工单数量,默认查询未完成的
|
*/
|
@Override
|
public int ordersListCount(Map<String, String> params) {
|
StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM WORKFLOW_BASE A WHERE WFSTATE != :ysc ");
|
params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND A.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
String create_name = params.get("create_name");
|
if(StringUtil.notEmpty(create_name)) {
|
builder.append(" AND A.CREATERNAME LIKE :create_name ");
|
params.put("create_name", "%"+create_name+"%");
|
}
|
String create_time=params.get("create_time");
|
if(StringUtil.notEmpty(create_time)){
|
builder.append(" AND A.CREATETIME > :create_time ");
|
params.put("create_time", create_time+"000000");
|
}
|
String end_time=params.get("end_time");
|
if(StringUtil.notEmpty(end_time)){
|
builder.append(" AND A.CREATETIME < :end_time ");
|
params.put("end_time", end_time+"235959");
|
}
|
String jjr = params.get("jjr");
|
if(StringUtil.notEmpty(jjr)) {
|
builder.append(" AND A.CURRENT_DEALER_NAME LIKE :jjr ");
|
params.put("jjr", "%"+jjr+"%");
|
}
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND A.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND A.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String orderStatus = params.get("orderStatus");
|
if(StringUtil.notEmpty(orderStatus)) {
|
builder.append(" AND A.WFSTATE = :orderStatus ");
|
params.put("orderStatus", orderStatus);
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND A.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND A.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND A.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String beginTime = params.get("beginTime");
|
if(StringUtil.notEmpty(beginTime)) {
|
builder.append(" AND A.CREATETIME >= :beginTime ");
|
params.put("beginTime", beginTime+"000000");
|
}
|
|
String endTime = params.get("endTime");
|
if(StringUtil.notEmpty(endTime)) {
|
builder.append(" AND A.CREATETIME <= :endTime ");
|
params.put("endTime", endTime+"240000");
|
}
|
return baseDao.queryForInteger(builder.toString(),params);
|
}
|
|
@Override
|
public PageInfo ordersListData(PageInfo pageInfo, Map<String, String> params) {
|
StringBuilder builder = new StringBuilder("SELECT A.* FROM WORKFLOW_BASE A WHERE WFSTATE != :ysc ");
|
params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND A.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
String create_name = params.get("create_name");
|
if(StringUtil.notEmpty(create_name)) {
|
builder.append(" AND A.CREATERNAME LIKE :create_name ");
|
params.put("create_name", "%"+create_name+"%");
|
}
|
String create_time=params.get("create_time");
|
if(StringUtil.notEmpty(create_time)){
|
builder.append(" AND A.CREATETIME > :create_time ");
|
params.put("create_time", create_time+"000000");
|
}
|
String end_time=params.get("end_time");
|
if(StringUtil.notEmpty(end_time)){
|
builder.append(" AND A.CREATETIME < :end_time ");
|
params.put("end_time", end_time+"235959");
|
}
|
String jjr = params.get("jjr");
|
if(StringUtil.notEmpty(jjr)) {
|
builder.append(" AND A.CURRENT_DEALER_NAME LIKE :jjr ");
|
params.put("jjr", "%"+jjr+"%");
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND A.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND A.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String orderStatus = params.get("orderStatus");
|
if(StringUtil.notEmpty(orderStatus)) {
|
builder.append(" AND A.WFSTATE = :orderStatus ");
|
params.put("orderStatus", orderStatus);
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND A.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND A.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND A.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String beginTime = params.get("beginTime");
|
if(StringUtil.notEmpty(beginTime)) {
|
builder.append(" AND A.CREATETIME >= :beginTime ");
|
params.put("beginTime", beginTime+"000000");
|
}
|
|
String endTime = params.get("endTime");
|
if(StringUtil.notEmpty(endTime)) {
|
builder.append(" AND A.CREATETIME <= :endTime ");
|
params.put("endTime", endTime+"240000");
|
}
|
|
|
builder.append(" ORDER BY A.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
}
|
|
@Override
|
public Map queryOrderCountByCate(HttpServletRequest request, String type) {
|
String userId = WebUtil.getLoginedUserId(request);
|
Map paramMap = new HashMap();
|
|
StringBuilder builder = new StringBuilder();
|
paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
paramMap.put("userId", userId);
|
|
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.ID,A.FLOWSTATE,B.WFSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId ");
|
if(StringUtil.notEmpty(type)) {
|
builder.append(" AND B.BUSINESSTYPE = :type ");
|
paramMap.put("type", type);
|
}
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
|
StringBuilder newBuild = new StringBuilder();
|
newBuild.append("SELECT COUNT(*) AS NUM,E.FLOWSTATE FROM ( ");
|
newBuild.append(builder.toString());
|
newBuild.append(") E GROUP BY E.FLOWSTATE ORDER BY E.FLOWSTATE");
|
|
List<Map> list = baseDao.queryForList(newBuild.toString(),paramMap);
|
Map resultMap = new HashMap();
|
for(Map m : list) {
|
resultMap.put("state"+m.get("FLOWSTATE"), m.get("NUM"));
|
}
|
|
int totalNum = queryAllOrderCount(request,type);
|
paramMap.put("types", type);
|
int orderPool = myorderpoolCount(paramMap);
|
resultMap.put("totalOrder", totalNum);
|
resultMap.put("orderPool", orderPool);
|
|
return resultMap;
|
}
|
|
@Override
|
public int queryAllOrderCount(HttpServletRequest request,String type) {
|
String userId = WebUtil.getLoginedUserId(request);
|
Map<String,String> groupMap = WebUtil.getLoginUser(request).getGroupMap();
|
Map paramMap = new HashMap();
|
|
StringBuilder builder = new StringBuilder();
|
paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
paramMap.put("userId", userId);
|
|
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.ID,B.WFSTATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId ");
|
if(StringUtil.notEmpty(type)) {
|
builder.append(" AND B.BUSINESSTYPE = :type ");
|
paramMap.put("type", type);
|
}
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
|
StringBuilder newBuild = new StringBuilder();
|
newBuild.append("SELECT COUNT(*) AS NUM FROM ( ");
|
newBuild.append(builder.toString());
|
newBuild.append(") E");
|
|
int count = baseDao.queryForInteger(newBuild.toString(),paramMap);
|
System.out.println(count);
|
return count;
|
}
|
|
@Override
|
public int myorderpoolCount(Map<String, String> params) {
|
/**
|
* 查询我的工单池规则
|
* 如果是一二三线或者驻场工程师桌面,则直接查询工单表中 所属分组是当前工程师所在组的
|
* 如果是项目服务台,则直接查询工单表中所属分组是当前工程师所在组的 (同上)
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的服务台分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的服务台分组)
|
*/
|
|
|
String sql = new String();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
sql = "SELECT COUNT(D.ID) FROM WORKFLOW_BASE D,((SELECT DISTINCT B.JSBH FROM AC_USER_REF_ROLE B WHERE B.YHBH = :userId) UNION ALL (SELECT DISTINCT A.GROUP_ID AS JSBH FROM AC_ROLE_GROUP_USER A WHERE A.USER_ID = :userId AND A.STATE = 1) ) C WHERE D.CURRENT_DEAL_ROLEIDA = C.JSBH AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) ";
|
|
|
if(StringUtil.notEmpty(sql)) {
|
|
StringBuilder builder = new StringBuilder(sql);
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
int count = baseDao.queryForInteger(builder.toString(),params);
|
|
return count;
|
}
|
|
return 0;
|
}
|
|
@Override
|
public PageInfo myorderpoolData(PageInfo pageInfo,
|
Map<String, String> params) {
|
|
/**
|
* 查询我的工单池规则
|
* 如果是一二三线或者驻场工程师桌面,则直接查询工单表中 所属分组是当前工程师所在组的
|
* 如果是项目服务台,则直接查询工单表中所属分组是当前工程师所在组的 (同上)
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的服务台分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的服务台分组)
|
*/
|
|
|
String sql = new String();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
sql = "SELECT D.* FROM WORKFLOW_BASE D,((SELECT DISTINCT B.JSBH FROM AC_USER_REF_ROLE B WHERE B.YHBH = :userId) UNION ALL (SELECT DISTINCT A.GROUP_ID AS JSBH FROM AC_ROLE_GROUP_USER A WHERE A.USER_ID = :userId AND A.STATE = 1)) C WHERE D.CURRENT_DEAL_ROLEIDA = C.JSBH AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) ";
|
|
if(StringUtil.notEmpty(sql)) {
|
|
StringBuilder builder = new StringBuilder(sql);
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
builder.append(" ORDER BY D.CREATETIME DESC ");
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
|
return result;
|
}
|
return new PageInfo();
|
}
|
|
@Override
|
public int orderpoolCount(Map<String, String> params) {
|
/**
|
* 查询我的工单池规则
|
* 如果是一二三线或者驻场工程师桌面,则直接查询工单表中 所属分组是当前工程师所在组的
|
* 如果是项目服务台,则直接查询工单表中所属分组是当前工程师所在组的 (同上)
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的服务台分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的服务台分组)
|
*/
|
|
StringBuilder sql = new StringBuilder();
|
|
params.put("wfstate",ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE) );
|
sql.append("SELECT COUNT(D.ID) FROM WORKFLOW_BASE D,((SELECT B.ID FROM AC_ROLE B WHERE B.STATE =1) UNION ALL (SELECT DISTINCT A.ID FROM AC_ROLE_GROUP A WHERE A.STATE = 1) ");
|
|
|
sql.append(" ) C WHERE D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) ");
|
|
StringBuilder builder = new StringBuilder(sql);
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
int count = baseDao.queryForInteger(builder.toString(),params);
|
|
return count;
|
}
|
|
@Override
|
public PageInfo orderpoolData(PageInfo pageInfo, Map<String, String> params) {
|
|
/**
|
* 查询我的工单池规则
|
* 如果是项目服务台,则直接查询工单表
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的分组)
|
*/
|
|
StringBuilder sql = new StringBuilder();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
sql.append("SELECT D.* FROM WORKFLOW_BASE D,((SELECT B.ID FROM AC_ROLE B WHERE B.STATE =1) UNION ALL (SELECT DISTINCT A.ID FROM AC_ROLE_GROUP A WHERE A.STATE = 1) ");
|
|
|
sql.append(" ) C WHERE D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) ");
|
|
StringBuilder builder = new StringBuilder(sql);
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String customerName = params.get("customerName");
|
if(StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
params.put("customerName", "%"+customerName+"%");
|
}
|
String customer_id = params.get("customer_id");
|
if(StringUtil.notEmpty(customer_id)) {
|
builder.append(" AND D.customer_id =:customer_id ");
|
params.put("customer_id", customer_id);
|
}
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String types = params.get("types");
|
if(StringUtil.notEmpty(types)) {
|
String[] type = types.split(",");
|
if(type.length==1) {
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", type[0]);
|
} else {
|
builder.append(" AND D.BUSINESSTYPE IN (");
|
for(int i=0; i<type.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, type[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
|
return result;
|
}
|
|
@Override
|
public Integer getOrderCount(Map<String, String> params){
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select count(id) from workflow_base where wfstate<>:defstate and businesstype=:flowtype ");
|
params.put("defstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE.toString());
|
if(params.get("flag").equals("jxz")){
|
sql.append(" and wfstate=:fstate ");
|
params.put("fstate",Constants.WORKFLOW_BASE_WFSTATE_DOING.toString());
|
}else if(params.get("flag").equals("ywc")){
|
sql.append(" and wfstate=:fstate ");
|
params.put("fstate",Constants.WORKFLOW_BASE_WFSTATE_FINISH.toString());
|
}else if(params.get("flag").equals("ygb")){
|
sql.append(" and wfstate=:fstate ");
|
params.put("fstate",Constants.WORKFLOW_BASE_WFSTATE_CLOSE.toString());
|
}else if(params.get("flag").equals("ypj")){
|
sql.append(" and wfstate=:fstate ");
|
params.put("fstate",Constants.WORKFLOW_BASE_WFSTATE_EVALUATE.toString());
|
}else if(params.get("flag").equals("ygq")){
|
sql.append(" and wfstate=:fstate ");
|
params.put("fstate",Constants.WORKFLOW_BASE_WFSTATE_UP.toString());
|
}
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public int getDealerIsMy(String flowId, String loginedUserId) {
|
Map params = new HashMap();
|
params.put("flowId", flowId);
|
params.put("userId", loginedUserId);
|
int count = 0;
|
WORKFLOW_BASE flow = new WORKFLOW_BASE(flowId).getInstanceById();
|
WORKFLOW_NODE node = new WORKFLOW_NODE(flow.getCurrent_node_id()).getInstanceById();
|
if(StringUtil.isEmpty(node.getCurrent_dealer_id())&&!StringUtil.isEmpty(node.getCurrent_deal_roleida())){
|
String sql = "SELECT COUNT(ID) FROM AC_USER_REF_ROLE WHERE YHBH = :userId AND JSBH = :jsbh ";
|
params.put("jsbh", node.getCurrent_deal_roleida());
|
count = baseDao.queryForInteger(sql, params);
|
if(count == 0){
|
sql = "SELECT COUNT(ID) FROM AC_ROLE_GROUP_USER WHERE USER_ID = :userId AND GROUP_ID = :jsbh ";
|
count = baseDao.queryForInteger(sql, params);
|
}
|
}else{
|
if(StringUtil.isEmpty(node.getSame_node_key())){
|
if(node.getCurrent_dealer_id().equals(loginedUserId)&&node.getFlowstate() != Constants.WORKFLOW_NODE_FLOWSTATE_FINISH){
|
count = 1;
|
}
|
}else{
|
String sql = "SELECT COUNT(ID) FROM WORKFLOW_NODE WHERE SAME_NODE_KEY = :same_node_key AND FLOWID = :flowId AND CURRENT_DEALER_ID = :userId AND FLOWSTATE <> :flowstate ";
|
params.put("same_node_key", node.getSame_node_key());
|
params.put("flowstate", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH);
|
count = baseDao.queryForInteger(sql, params);
|
}
|
}
|
|
return count;
|
}
|
|
|
}
|