package cn.ksource.web.facade.uc.order;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.LinkedList;
|
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.SC_WORKFLOW_INCIDENT;
|
import cn.ksource.beans.WORKFLOW_BASE;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.JsonUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.service.DataDictionaryService;
|
import cn.ksource.web.service.device.DeviceService;
|
import cn.ksource.web.service.file.FileService;
|
import cn.ksource.web.service.order.OrderService;
|
import cn.ksource.web.service.record.RecordService;
|
|
@Service("ucIncidentFacade")
|
public class UcIncidentFacadeImpl implements UcIncidentFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private DataDictionaryService dataDictionaryService;
|
|
@Autowired
|
private FileService fileService;
|
|
@Autowired
|
private RecordService recordService;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private DeviceService deviceService;
|
|
/**
|
* 查询服务目录三级树
|
*/
|
@Override
|
public Map serviceListTree(String cusId,String sl) {
|
String sql="SELECT A.* FROM SC_SERVCE_CATEGORY A,SC_SERVCE_CATEGORY_CUSTOMER B WHERE B.CATEGORY_ID = A.ID AND B.CUSTOMER_ID = :customer_id ORDER BY LEVEL,SERIAL ";
|
|
|
Map slMap = new HashMap();
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
for(String s : sls) {
|
slMap.put(s, s);
|
}
|
}
|
|
List<Map> categoryList = baseDao.queryForList(sql,new SqlParameter("customer_id",cusId));
|
|
Map result = new HashMap();
|
|
List<Map> resultList = new LinkedList<Map>();
|
|
Map<String, Map> yjgnCache = new HashMap<String, Map>();
|
Map<String, Map> ejgnCache = new HashMap<String, Map>();
|
Map<String, Map> sjgnCache = new HashMap<String, Map>();
|
|
for (Map map : categoryList) {
|
|
//一级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
|
yjgnCache.put(map.get("ID").toString(), map);
|
List<Map> ejgnList = new LinkedList<Map>();
|
map.put("ejTree", ejgnList);
|
resultList.add(map);
|
continue;
|
}
|
//二级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("2")) {
|
Map yjgnMap = yjgnCache.get(map.get("P_ID").toString());
|
List<Map> list = (List<Map>)yjgnMap.get("ejTree");
|
map.put("sjTree", new LinkedList<Map>());
|
list.add(map);
|
|
ejgnCache.put(map.get("ID").toString(), map);
|
continue;
|
}
|
//三级树
|
if (map.get("LEVEL").toString().equalsIgnoreCase("3")) {
|
if(null!=map.get("P_ID")){
|
if(slMap.containsKey(map.get("ID"))) {
|
slMap.put(map.get("ID"), map.get("CATEGORY_NAME"));
|
map.put("check", 1);
|
} else {
|
map.put("check", 2);
|
}
|
|
Map ejgnMap = ejgnCache.get(map.get("P_ID").toString());
|
List<Map> list = (List<Map>)ejgnMap.get("sjTree");
|
list.add(map);
|
}
|
}
|
}
|
Map resultMap = new HashMap();
|
resultMap.put("categoryList", resultList);
|
resultMap.put("slMap", slMap);
|
return resultMap;
|
}
|
|
@Override
|
public Map queryIncidentCount(String cusId) {
|
//初始化变量
|
//未完成
|
int wyc = 0;
|
//SLA即将到期
|
int slaWillTimeOut = 0;
|
//SLA过期
|
int slaTimeOut = 0;
|
|
//服务台
|
int fwt = 0;
|
//服务台已登记
|
int fwtydj = 0;
|
//服务台处理中
|
int fwtclz = 0;
|
|
//一线
|
int yx = 0;
|
//一线待响应
|
int yxdxy = 0;
|
//一线处理中
|
int yxclz = 0;
|
|
|
//二线
|
int ex = 0;
|
|
//二线待响应
|
int exdxy = 0;
|
|
//二线处理中
|
int exclz = 0;
|
|
//三线
|
int sx = 0;
|
|
//三线待响应
|
int sxdxy = 0;
|
|
//三线处理中
|
int sxclz = 0;
|
|
//已完成
|
int ywc = 0;
|
//满意度待调查
|
int mydddc = 0;
|
//满意度已调查
|
int mydydc = 0;
|
|
|
String selectSql = new String();
|
String sql = new String();
|
|
Map paramMap = new HashMap();
|
selectSql = "SELECT COUNT(*) AS NUM,A.STATE FROM SC_WORKFLOW_INCIDENT A WHERE A.CUSTOMER_ID = :cusId GROUP BY A.STATE";
|
sql = "SELECT ANSWER_TIMEOUT,DEAL_TIMEOUT FROM SC_WORKFLOW_INCIDENT WHERE STATE != :yjj AND STATE!=:gb AND STATE != :ypj AND CUSTOMER_ID = :cusId";
|
|
paramMap.put("cusId", cusId);
|
|
List<Map> list = baseDao.queryForList(selectSql,paramMap);
|
if(null!=list && list.size()>0) {
|
for(Map map : list) {
|
String state = ConvertUtil.obj2StrBlank(map.get("STATE"));
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT)) {
|
fwtydj += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ)) {
|
fwtclz += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC)) {
|
fwtydj += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YCJSZCCLZ)) {
|
fwtclz += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX)) {
|
yxdxy = num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YXCLZ)) {
|
yxclz = num;
|
continue;
|
}
|
|
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX)) {
|
exdxy = num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_EXCLZ)) {
|
exclz = num;
|
continue;
|
}
|
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX)) {
|
sxdxy = num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_SXCLZ)) {
|
sxclz = num;
|
continue;
|
}
|
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ)) {
|
mydddc += num;
|
continue;
|
}
|
|
/*if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_GB)) {
|
mydddc += num;
|
continue;
|
}*/
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ)) {
|
mydydc = num;
|
}
|
|
}
|
}
|
|
fwt = fwtydj + fwtclz;
|
yx = yxdxy + yxclz;
|
ex = exdxy + exclz;
|
sx = sxdxy + sxclz;
|
//ywc = mydddc + mydydc;
|
ywc = mydddc;
|
|
Map map = new HashMap();
|
map.put("fwt", fwt);
|
map.put("fwtydj", fwtydj);
|
map.put("fwtclz", fwtclz);
|
|
map.put("yx", yx);
|
map.put("yxdxy", yxdxy);
|
map.put("yxclz", yxclz);
|
|
|
map.put("ex", ex);
|
map.put("exdxy", exdxy);
|
map.put("exclz", exclz);
|
|
|
map.put("sx", sx);
|
map.put("sxdxy", sxdxy);
|
map.put("sxclz", sxclz);
|
|
|
map.put("ywc", ywc);
|
map.put("mydddc", mydddc);
|
map.put("mydydc", mydydc);
|
|
|
//查询该加盟商未完成的事件
|
|
paramMap.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
paramMap.put("gb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
paramMap.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
|
|
List<Map> wycList = baseDao.queryForList(sql,paramMap);
|
if(null!=wycList && wycList.size()>0) {
|
wyc = wycList.size();
|
for(Map m : wycList) {
|
String answer_timeout = ConvertUtil.obj2StrBlank(m.get("ANSWER_TIMEOUT"));
|
String deal_timeout = ConvertUtil.obj2StrBlank(m.get("DEAL_TIMEOUT"));
|
if(answer_timeout.equals("1") || deal_timeout.equals("1")) {
|
slaTimeOut += 1;
|
} else {
|
slaWillTimeOut += 1;
|
}
|
}
|
|
}
|
|
map.put("wwc", wyc);
|
map.put("slaWillTimeOut", slaWillTimeOut);
|
map.put("slaTimeOut", slaTimeOut);
|
|
return map;
|
|
}
|
|
@Override
|
public PageInfo queryIncidentOrderList(PageInfo pageInfo,Map<String,String> params) {
|
|
String cusId = params.get("cusId");
|
|
StringBuilder sql = new StringBuilder();
|
sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE, ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.ANSWER_TIMEOUT,B.DEAL_TIMEOUT ");
|
sql.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT B WHERE WB.BUSINESS_ID = B.ID ");
|
sql.append("AND WB.BUSINESSTYPE = :businessType ");
|
|
sql.append(" AND B.CUSTOMER_ID = :cusId ");
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
params.put("cusId", cusId);
|
|
sql = getincidentSql(sql,params);
|
|
sql.append( " ORDER BY WB.CREATETIME DESC ");
|
return baseDao.queryforSplitPageInfo(pageInfo,sql.toString(),params);
|
}
|
|
@Override
|
public int queryIncidentOrderCount(Map<String,String> params) {
|
|
String cusId = params.get("cusId");
|
|
StringBuilder sql = new StringBuilder();
|
sql.append("SELECT COUNT(WB.ID) FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT B WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType ");
|
|
|
sql.append(" AND B.CUSTOMER_ID = :cusId ");
|
|
params.put("cusId", cusId);
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sql = getincidentSql(sql,params);
|
|
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
public StringBuilder getincidentSql(StringBuilder sql,Map<String,String> params){
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sql.append(" AND B.NAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sql.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sql.append(" AND B.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
String state = params.get("state");
|
if(StringUtil.notEmpty(state)) {
|
sql.append(" AND WB.WFSTATE = :state ");
|
params.put("state", state);
|
}
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sql.append(" AND B.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
sql.append(" AND B.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sql.append(" :pri"+i);
|
sql.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
sql.append(" AND B.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
sql.append(" AND B.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
sql.append(" :dg"+i);
|
sql.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
|
String type = params.get("type");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
sql.append(" AND B.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
sql.append(" AND B.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
sql.append(" :type"+i);
|
sql.append(",");
|
params.put("type"+i, types[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sql.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sql.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sql.append(" :third_category_id"+i);
|
sql.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sql.deleteCharAt(sql.lastIndexOf(","));
|
sql.append(")");
|
}
|
}
|
|
|
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
if(status.equals("wwc")) {
|
sql.append(" AND B.STATE != :yjj AND B.STATE!=:gb AND B.STATE != :ypj ");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
params.put("gb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
params.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
} else if(status.equals("slaWillTimeout")) {
|
sql.append(" AND B.STATE != :yjj AND B.STATE!=:gb AND B.STATE != :ypj AND B.ANSWER_TIMEOUT = 2 AND B.DEAL_TIMEOUT = 2 ");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
params.put("gb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
params.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
} else if(status.equals("slaTimeout")) {
|
sql.append(" AND B.STATE != :yjj AND B.STATE!=:gb AND B.STATE != :ypj AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT = 1) ");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
params.put("gb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
params.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
} else if(status.equals("fwt")) {
|
sql.append(" AND (B.STATE = :fpdfwt OR B.STATE=:fwtclz OR B.STATE = :fpdycjszc OR B.STATE = :ycjszcclz) ");
|
params.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
params.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
params.put("fpdycjszc", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC);
|
params.put("ycjszcclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YCJSZCCLZ);
|
} else if(status.equals("fwtydj")) {
|
sql.append(" AND (B.STATE = :fpdfwt OR B.STATE = :fpdycjszc ) ");
|
params.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
params.put("fpdycjszc", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC);
|
} else if(status.equals("fwtclz")) {
|
sql.append(" AND (B.STATE=:fwtclz OR B.STATE = :ycjszcclz) ");
|
params.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
params.put("ycjszcclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YCJSZCCLZ);
|
} else if(status.equals("yx")) {
|
sql.append(" AND (B.STATE=:fpdyx OR B.STATE = :yxclz) ");
|
params.put("fpdyx", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX);
|
params.put("yxclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YXCLZ);
|
} else if(status.equals("yxdxy")) {
|
sql.append(" AND B.STATE=:fpdyx ");
|
params.put("fpdyx", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX);
|
} else if(status.equals("yxclz")) {
|
sql.append(" AND B.STATE = :yxclz ");
|
params.put("yxclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YXCLZ);
|
} else if(status.equals("ex")) {
|
sql.append(" AND (B.STATE=:fpdex OR B.STATE = :exclz) ");
|
params.put("fpdex", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX);
|
params.put("exclz", Constants.SC_WORKFLOW_INCIDENT_STATE_EXCLZ);
|
} else if(status.equals("exdxy")) {
|
sql.append(" AND B.STATE=:fpdex ");
|
params.put("fpdex", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX);
|
} else if(status.equals("exclz")) {
|
sql.append(" AND B.STATE = :exclz ");
|
params.put("exclz", Constants.SC_WORKFLOW_INCIDENT_STATE_EXCLZ);
|
} else if(status.equals("sx")) {
|
sql.append(" AND (B.STATE=:fpdsx OR B.STATE = :sxclz) ");
|
params.put("fpdsx", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX);
|
params.put("sxclz", Constants.SC_WORKFLOW_INCIDENT_STATE_SXCLZ);
|
} else if(status.equals("sxdxy")) {
|
sql.append(" AND B.STATE=:fpdsx ");
|
params.put("fpdsx", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX);
|
} else if(status.equals("sxclz")) {
|
sql.append(" AND B.STATE = :sxclz ");
|
params.put("sxclz", Constants.SC_WORKFLOW_INCIDENT_STATE_SXCLZ);
|
} else if(status.equals("ywc")) {
|
sql.append(" AND (B.STATE = :yjj OR B.STATE = :ygb OR B.STATE = :ypj )");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
params.put("ygb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
params.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
} else if(status.equals("mydddc")) {
|
sql.append(" AND B.STATE = :yjj ");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
} else if(status.equals("mydydc")) {
|
sql.append(" AND B.STATE = :ypj ");
|
params.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);
|
}
|
|
}
|
return sql;
|
}
|
|
@Override
|
public Map queryIncidentBaseMsg(String orderId) {
|
String selectSql = "SELECT A.*,N.ANSWER_TIME AS XY_TIME,B.WFSTATE FROM SC_WORKFLOW_INCIDENT A LEFT JOIN WORKFLOW_BASE B ON A.ID = B.BUSINESS_ID LEFT JOIN WORKFLOW_NODE N ON B.CURRENT_NODE_ID = N.ID WHERE A.ID = :orderId ";
|
Map baseMap = baseDao.queryForMap(selectSql,new SqlParameter("orderId",orderId));
|
if(null!=baseMap && baseMap.size()>0) {
|
//查询附件
|
List<Map> files = fileService.getFileList(orderId);
|
baseMap.put("files", files);
|
}
|
return baseMap;
|
}
|
|
//查询事件流转记录
|
@Override
|
public List<Map> incidentLzRecord(String flowId) {
|
|
//查询该流程中,所有的流程节点模板对应的流程
|
String nodeSql = "SELECT N.* FROM WORKFLOW_NODE N,WORKFLOW_TEMPLATE_NODE B WHERE N.NODE_TEMPLATE_ID = B.ID AND N.FLOWID = :flowId ORDER BY N.CREATETIME DESC,N.IS_ADMIN DESC ";
|
/**
|
* 1.分配到分组
|
* 2.分配到单个人员
|
* 3.分配到多个人
|
*/
|
|
List<Map> records = baseDao.queryForList(nodeSql,new SqlParameter("flowId",flowId));
|
if(null!=records && records.size()>0) {
|
List<String> list = new ArrayList<String>();
|
|
Map<String,Object> cacheMap = new HashMap<String,Object>();
|
Map cacheName = new HashMap();
|
for(Map record : records) {
|
String node_template_id = ConvertUtil.obj2StrBlank(record.get("NODE_TEMPLATE_ID"));
|
String same_node_key = ConvertUtil.obj2StrBlank(record.get("SAME_NODE_KEY"));
|
String unitKey = node_template_id +"-"+ same_node_key;
|
String nodeName = ConvertUtil.obj2StrBlank(record.get("NODENAME"));
|
|
String dealType = ConvertUtil.obj2StrBlank(record.get("DEAL_TYPE"));
|
String current_deal_roleida = ConvertUtil.obj2StrBlank(record.get("CURRENT_DEAL_ROLEIDA"));
|
String current_dealer_id = ConvertUtil.obj2StrBlank(record.get("CURRENT_DEALER_ID"));
|
if(dealType.equals("1") && StringUtil.notEmpty(current_deal_roleida) && !StringUtil.notEmpty(current_dealer_id)) {
|
List<Map> users = queryUser(current_deal_roleida);
|
StringBuilder builder = new StringBuilder();
|
if(null!=users && users.size()>0) {
|
for(Map user : users) {
|
String userName = ConvertUtil.obj2StrBlank(user.get("USER_NAME"));
|
builder.append(userName).append(" ");
|
}
|
}
|
record.put("users", builder.toString());
|
}
|
|
|
cacheName.put(unitKey, nodeName);
|
if(cacheMap.containsKey(unitKey)) {
|
List rs = (List)cacheMap.get(unitKey);
|
rs.add(record);
|
} else {
|
List rs = new ArrayList();
|
rs.add(record);
|
cacheMap.put(unitKey, rs);
|
list.add(unitKey);
|
}
|
|
|
|
String answer_usertime = ConvertUtil.obj2StrBlank(record.get("ANSWER_USERTIME"));
|
if(StringUtil.notEmpty(answer_usertime) && !answer_usertime.equals("0")) {
|
String answerTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(answer_usertime));
|
record.put("ANSWER_USERTIME", answerTime);
|
}
|
|
String deal_usetime = ConvertUtil.obj2StrBlank(record.get("DEAL_USETIME"));
|
if(StringUtil.notEmpty(deal_usetime) && !deal_usetime.equals("0")) {
|
String dealTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(deal_usetime));
|
record.put("DEAL_USETIME", dealTime);
|
}
|
}
|
|
//查询工单类型
|
List<Map> result = new ArrayList<Map>();
|
for(String key : list) {
|
Map map = new HashMap();
|
map.put("node_template_id", key);
|
map.put("node_template_name", cacheName.get(key));
|
List<Map> rds = (List)cacheMap.get(key);
|
|
for(Map rd : rds) {
|
//判断主负责人的状态
|
String isAdmin = ConvertUtil.obj2StrBlank((rd.get("IS_ADMIN")));
|
if(isAdmin.equals("1")) {
|
map.put("flowstate", rd.get("FLOWSTATE"));
|
}
|
}
|
map.put("rds", rds);
|
result.add(map);
|
}
|
|
System.out.println(JsonUtil.list2Json(result));
|
return result;
|
|
}
|
return null;
|
}
|
|
private List<Map> queryUser(String current_deal_roleida) {
|
String selectSql = "SELECT B.ID AS USER_ID,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :groupId AND A.YHBH = B.ID AND B.ZT = 1 ORDER BY B.ZSXM ";
|
List users = baseDao.queryForList(selectSql,new SqlParameter("groupId",current_deal_roleida));
|
return users;
|
}
|
|
@Override
|
public List queryDealRecord(String flowId) {
|
|
List<Map> list = recordService.queryRecord(flowId);
|
|
if(null!=list && list.size()>0) {
|
Map cacheFile = new HashMap();
|
//查询所有该事件工单下的文档
|
List<Map> files = fileService.getFileList(flowId,1);
|
if(null!=files && files.size()>0) {
|
for(Map file :files) {
|
String extend = ConvertUtil.obj2StrBlank(file.get("BUSINESS_ID"));
|
if(StringUtil.notEmpty(extend)) {
|
List cacheList = new ArrayList();
|
if(cacheFile.containsKey(extend)) {
|
cacheList = (List)cacheFile.get(extend);
|
}
|
cacheList.add(file);
|
cacheFile.put(extend, cacheList);
|
}
|
}
|
}
|
if(null!=cacheFile && cacheFile.size()>0) {
|
for(Map record : list) {
|
String recordId = ConvertUtil.obj2StrBlank(record.get("ID"));
|
if(cacheFile.containsKey(recordId)) {
|
record.put("files", cacheFile.get(recordId));
|
}
|
}
|
}
|
}
|
|
|
return list;
|
}
|
|
/**
|
* 查询该事件工单关联的设备
|
*/
|
@Override
|
public List queryDevices(String flowId) {
|
//查询流程所有的关联设备
|
List devices = deviceService.queryLinkDevices(flowId);
|
return devices;
|
}
|
|
/**
|
* 查询关联工单
|
*/
|
@Override
|
public List queryOrders(String flowId) {
|
List<Map> orders = orderService.queryLinkOrders(flowId);
|
return orders;
|
}
|
|
/**
|
* 查询所有的文档附件
|
*/
|
@Override
|
public List queryFiles(String flowId) {
|
List<Map> files = fileService.getFileList(flowId,1);
|
if(null!=files && files.size()>0) {
|
for(Map file : files) {
|
file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
|
}
|
}
|
return files;
|
}
|
|
@Override
|
public Map queryWcReport(String orderId) {
|
Map incident = new SC_WORKFLOW_INCIDENT(orderId).getBeanMapById();
|
String flowId = ConvertUtil.obj2StrBlank(incident.get("FLOW_ID"));
|
//查询关联工单
|
if(null!=incident && incident.size()>0) {
|
List<Map> orders = queryOrders(flowId);
|
List<Map> devices = queryDevices(flowId);
|
List<Map> files = queryFiles(flowId);
|
|
incident.put("orders", orders);
|
incident.put("devices", devices);
|
incident.put("files", files);
|
}
|
|
//判断当前事件工单是否已评价
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
int wfstate = base.getWfstate();
|
if(wfstate == Constants.WORKFLOW_BASE_WFSTATE_EVALUATE) {
|
//查询调查记录
|
Map statis = queryStatis(flowId);
|
incident.put("statis", statis);
|
}
|
|
|
return incident;
|
}
|
|
private Map queryStatis(String flowId) {
|
Map map = new HashMap();
|
String selectSql = " SELECT * FROM ORDER_SATIS_INFO WHERE BUSINESS_ID = :flowId ";
|
map = baseDao.queryForMap(selectSql,new SqlParameter("flowId",flowId));
|
return map;
|
}
|
|
@Override
|
public Map queryCloseReport(String orderId) {
|
Map incident = new SC_WORKFLOW_INCIDENT(orderId).getBeanMapById();
|
if(null!=incident && incident.size()>0) {
|
String merged_business_id = ConvertUtil.obj2StrBlank(incident.get("MERGED_BUSINESS_ID"));
|
if(StringUtil.notEmpty(merged_business_id)) {
|
Map linkIncident = new SC_WORKFLOW_INCIDENT(merged_business_id).getBeanMapById();
|
incident.put("linkIncident", linkIncident);
|
}
|
}
|
return incident;
|
}
|
|
/**
|
* 查询文档信息
|
*/
|
@Override
|
public Map queryFileMsg(String fileId) {
|
String selectSql = "SELECT * FROM GG_FILES WHERE ID = :id";
|
return baseDao.queryForMap(selectSql,new SqlParameter("id",fileId));
|
}
|
|
@Override
|
public Map getLastMonthIncidentEffect(HttpServletRequest request) {
|
Map chartMap = new HashMap();
|
String cusId = request.getParameter("cusId");
|
String userId = request.getParameter("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay,-30,8);
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("startTime", startDay+"000000")
|
.addValue("endTime", endDay + "600000")
|
.addValue("userId", userId)
|
.addValue("cusId", cusId);
|
|
StringBuilder builder = new StringBuilder();
|
if(StringUtil.isBlank(userId)){
|
builder.append(" SELECT count(ID) NUM,INFLUENCE_ID FROM SC_WORKFLOW_INCIDENT WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY INFLUENCE_ID ");
|
}else{
|
builder.append(" SELECT count(q.ID) NUM,q.INFLUENCE_ID FROM SC_WORKFLOW_INCIDENT q,WORKFLOW_BASE b ");
|
builder.append(" where b.ID = q.FLOW_ID and EXISTS ( ");
|
builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
|
builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime group by q.INFLUENCE_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
if(dataList!=null&&dataList.size()>0){
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
for(Map data : dataList){
|
dataMap.put(data.get("INFLUENCE_ID").toString(), data);
|
}
|
List<Map> catelist = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
|
if(catelist!=null&&catelist.size()>0){
|
for(Map cate : catelist){
|
List tempList = new ArrayList();
|
tempList.add(cate.get("DATAVALUE").toString());
|
if(dataMap.get(cate.get("DATAKEY").toString())!=null){
|
tempList.add(((Map)dataMap.get(cate.get("DATAKEY").toString())).get("NUM"));
|
}else{
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public Map getLastMonthIncidentServer(HttpServletRequest request) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay,-30,8);
|
|
String cusId = request.getParameter("cusId");
|
String userId = request.getParameter("userId");
|
StringBuilder builder = new StringBuilder();
|
SqlParameter param = new SqlParameter();
|
param.addValue("cusId", cusId)
|
.addValue("startTime", startDay+"000000")
|
.addValue("endTime", endDay + "600000")
|
.addValue("userId", userId);
|
if(StringUtil.isBlank(userId)){
|
builder.append(" select count(ID) NUM,THIRD_CATEGORY_ID SERVER_ID from SC_WORKFLOW_INCIDENT where CUSTOMER_ID = :cusId ");
|
builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by SERVER_ID ");
|
}else{
|
builder.append(" select count(q.ID) NUM,q.THIRD_CATEGORY_ID SERVER_ID from SC_WORKFLOW_INCIDENT q,WORKFLOW_BASE b ");
|
builder.append(" where b.ID = q.FLOW_ID and EXISTS ( ");
|
builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
|
builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime group by SERVER_ID ");
|
}
|
|
|
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
if(dataList!=null&&dataList.size()>0){
|
builder.setLength(0);
|
builder.append(" SELECT C.ID SERVER_ID,C.CATEGORY_NAME SERVER_NAME FROM SC_SERVCE_CATEGORY C,SC_SERVCE_CATEGORY_CUSTOMER P ");
|
builder.append(" WHERE C.ID = P.CATEGORY_ID and C.LEVEL = 3 and C.STATE=1 ");
|
builder.append(" AND P.STATE = 1 AND P.CUSTOMER_ID = :cusId ORDER BY SERIAL ASC ");
|
List<Map> categoriesList = baseDao.queryForList(builder.toString(),param);
|
List<String> categories = new ArrayList<String>();
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List<Map> series = new ArrayList<Map>();
|
tempMap.put("name", "数量");
|
List tempList = new ArrayList();
|
for(Map data:dataList){
|
dataMap.put(data.get("SERVER_ID").toString(), data);
|
}
|
for(Map cate:categoriesList){
|
categories.add(cate.get("SERVER_NAME").toString());
|
if(dataMap.get(cate.get("SERVER_ID").toString())!=null){
|
tempList.add(((Map)dataMap.get(cate.get("SERVER_ID").toString())).get("NUM"));
|
}else{
|
tempList.add(0);
|
}
|
}
|
tempMap.put("data", tempList);
|
series.add(tempMap);
|
chartMap.put("categories",categories);
|
chartMap.put("series",series);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public Map getLastMonthIncidentLv(HttpServletRequest request) {
|
Map chartMap = new HashMap();
|
String cusId = request.getParameter("cusId");
|
String userId = request.getParameter("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay,-30,8);
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("startTime", startDay+"000000")
|
.addValue("endTime", endDay + "600000")
|
.addValue("userId", userId)
|
.addValue("cusId", cusId);
|
|
StringBuilder builder = new StringBuilder();
|
if(StringUtil.isBlank(userId)){
|
builder.append(" SELECT count(ID) NUM,SLA_ID FROM SC_WORKFLOW_INCIDENT WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY SLA_ID ");
|
}else{
|
builder.append(" SELECT count(q.ID) NUM,q.SLA_ID FROM SC_WORKFLOW_INCIDENT q,WORKFLOW_BASE b ");
|
builder.append(" where b.ID = q.FLOW_ID and EXISTS ( ");
|
builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
|
builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime group by q.SLA_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
if(dataList!=null&&dataList.size()>0){
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
|
for(Map data : dataList){
|
dataMap.put(data.get("SLA_ID").toString(), data);
|
}
|
|
builder.setLength(0);
|
builder.append(" select ID LEVEL_ID,LEVEL_NAME from SC_SLA order by SERIAL ");
|
List<Map> catelist = baseDao.queryForList(builder.toString());
|
for(Map cate : catelist){
|
List tempList = new ArrayList();
|
tempList.add(cate.get("LEVEL_NAME").toString());
|
if(dataMap.get(cate.get("LEVEL_ID").toString())!=null){
|
tempList.add(((Map)dataMap.get(cate.get("LEVEL_ID").toString())).get("NUM"));
|
}else{
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public Map getLastMonthIncidentPri(HttpServletRequest request) {
|
Map chartMap = new HashMap();
|
String cusId = request.getParameter("cusId");
|
String userId = request.getParameter("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay,-30,8);
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("startTime", startDay+"000000")
|
.addValue("endTime", endDay + "600000")
|
.addValue("userId", userId)
|
.addValue("cusId", cusId);
|
|
StringBuilder builder = new StringBuilder();
|
if(StringUtil.isBlank(userId)){
|
builder.append(" SELECT count(ID) NUM,PRIORITY_ID FROM SC_WORKFLOW_INCIDENT WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY PRIORITY_ID ");
|
}else{
|
builder.append(" SELECT count(q.ID) NUM,q.PRIORITY_ID FROM SC_WORKFLOW_INCIDENT q,WORKFLOW_BASE b ");
|
builder.append(" where b.ID = q.FLOW_ID and EXISTS ( ");
|
builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
|
builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime group by q.PRIORITY_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
if(dataList!=null&&dataList.size()>0){
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
for(Map data : dataList){
|
dataMap.put(data.get("PRIORITY_ID").toString(), data);
|
}
|
List<Map> catelist = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
|
for(Map cate : catelist){
|
List tempList = new ArrayList();
|
tempList.add(cate.get("DATAVALUE").toString());
|
if(dataMap.get(cate.get("DATAKEY").toString())!=null){
|
tempList.add(((Map)dataMap.get(cate.get("DATAKEY").toString())).get("NUM"));
|
}else{
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public Map getLastMonthIncidentCount(HttpServletRequest request) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay,-30,8);
|
|
String cusId = request.getParameter("cusId");
|
String userId = request.getParameter("userId");
|
StringBuilder builder = new StringBuilder();
|
SqlParameter param = new SqlParameter();
|
param.addValue("cusId", cusId)
|
.addValue("startTime", startDay+"000000")
|
.addValue("userId", userId)
|
.addValue("endTime", endDay + "600000");
|
if(StringUtil.isBlank(userId)){
|
builder.append(" select count(ID) NUM,DATE_FORMAT(CREATE_TIME,'%Y%m%d') CREATEDAY from SC_WORKFLOW_INCIDENT where CUSTOMER_ID = :cusId ");
|
builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by CREATEDAY ");
|
}else{
|
builder.append(" select count(q.ID) NUM,DATE_FORMAT(q.CREATE_TIME,'%Y%m%d') CREATEDAY from workflow_base b ,SC_WORKFLOW_INCIDENT q ");
|
builder.append(" where b.ID = q.FLOW_ID and EXISTS ( ");
|
builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
|
builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime group by CREATEDAY ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
if(dataList!=null&&dataList.size()>0){
|
|
List<String> categories = DateUtil.getDates(startDay ,endDay);
|
categories.add(String.valueOf(DateUtil.getCurrentDate8()));
|
List<String> categories_format = new ArrayList<String>();
|
|
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List<Map> series = new ArrayList<Map>();
|
tempMap.put("name", "事件数量");
|
List tempList = new ArrayList();
|
for(Map data:dataList){
|
dataMap.put(data.get("CREATEDAY").toString(), data);
|
}
|
for(String day:categories){
|
categories_format.add(DateUtil.format("yyyy-MM-dd",day));
|
if(dataMap.get(day)!=null){
|
tempList.add(((Map)dataMap.get(day)).get("NUM"));
|
}else{
|
tempList.add(0);
|
}
|
}
|
tempMap.put("data", tempList);
|
series.add(tempMap);
|
chartMap.put("categories",categories_format);
|
chartMap.put("step",Math.ceil(categories.size()/9));
|
chartMap.put("series",series);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public int incidentpoolCount(Map<String,String> params) {
|
/**
|
* 查询我的工单池规则
|
* 如果是一二三线或者驻场工程师桌面,则直接查询工单表中 所属分组是当前工程师所在组的
|
* 如果是项目服务台,则直接查询工单表中所属分组是当前工程师所在组的 (同上)
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的服务台分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的服务台分组)
|
*/
|
|
|
StringBuffer sql = new StringBuffer();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
sql.append("SELECT COUNT(D.ID) FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1");
|
sql.append(") C WHERE E.ID = D.BUSINESS_ID AND 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 cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
builder.append(" AND D.CUSTOMER_ID = :cusId ");
|
}
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
builder.append(" AND E.STATE = :status ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
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+"%");
|
}
|
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
|
int count = baseDao.queryForInteger(builder.toString(),params);
|
|
return count;
|
}
|
|
@Override
|
public PageInfo incidentpoolData(PageInfo pageInfo,Map<String,String> params) {
|
/**
|
* 查询我的工单池规则
|
* 如果是项目服务台,则直接查询工单表
|
* 如果是客户服务台,查询我的工单池 则查询工单表中分组是 (查询该客户下所有的项目的分组)
|
* 如果是总服务台,则查询所有客户下(加盟商下所有项目的分组)
|
*/
|
|
|
StringBuffer sql = new StringBuffer();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
//查询该人员所属的项目
|
sql.append("SELECT D.* FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1 ");
|
|
sql.append(") C WHERE E.ID = D.BUSINESS_ID AND 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 E.STATE = :status ");
|
params.put("status", status);
|
}
|
String cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
builder.append(" AND D.CUSTOMER_ID = :cusId ");
|
params.put("cusId", cusId);
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", subCustomerId);
|
}
|
|
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+"%");
|
}
|
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
|
return result;
|
}
|
|
@Override
|
public Map queryincidentpoolCount(String cusId) {
|
//初始化变量
|
int ywc = 0;
|
//服务台
|
int fwt = 0;
|
|
//一线工程师
|
int yxgcs = 0;
|
|
//二线工程师
|
int exgcs = 0;
|
|
//三线工程师
|
int sxgcs = 0;
|
StringBuffer sql = new StringBuffer();
|
StringBuffer sqlall = new StringBuffer();
|
Map paramMap = new HashMap();
|
paramMap.put("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
paramMap.put("cusId", cusId);
|
|
sql.append("SELECT COUNT(*) AS NUM,E.STATE FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1 ");
|
sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.* FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1 ");
|
|
sql.append(") C WHERE E.ID = D.BUSINESS_ID AND E.CUSTOMER_ID = :cusId AND D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' )");
|
sql.append(" GROUP BY E.STATE ");
|
sqlall.append(") C WHERE E.ID = D.BUSINESS_ID AND E.CUSTOMER_ID = :cusId AND D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' )");
|
sqlall.append(" GROUP BY E.ID) F ");
|
List<Map> list = baseDao.queryForList(sql.toString(),paramMap);
|
if(null!=list && list.size()>0) {
|
for(Map map : list) {
|
String state = ConvertUtil.obj2StrBlank(map.get("STATE"));
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT)) {
|
fwt += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX)) {
|
yxgcs += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX)) {
|
exgcs += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX)) {
|
sxgcs += num;
|
continue;
|
}
|
|
}
|
}
|
int all = baseDao.queryForInteger(sqlall.toString(), paramMap);
|
Map map = new HashMap();
|
map.put("fwt", fwt);
|
|
map.put("yxgcs", yxgcs);
|
|
map.put("exgcs", exgcs);
|
|
map.put("sxgcs", sxgcs);
|
|
|
map.put("all", all);
|
return map;
|
}
|
|
@Override
|
public Map queryincidentNodeCount(String cusId) {
|
//初始化变量
|
int ywc = 0;
|
//服务台
|
int fwt = 0;
|
|
//一线工程师
|
int yxgcs = 0;
|
|
//二线工程师
|
int exgcs = 0;
|
|
//三线工程师
|
int sxgcs = 0;
|
|
|
|
//只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台)
|
StringBuffer selectSql = new StringBuffer();
|
StringBuffer sql = new StringBuffer();
|
|
Map paramMap = new HashMap();
|
paramMap.put("cusId", cusId);
|
selectSql.append( "SELECT COUNT(*) AS NUM,D.STATE FROM (SELECT A.* FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL AND A.ID = B.BUSINESS_ID ");
|
sql.append( "SELECT COUNT(D.ID) FROM (SELECT A.* FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL AND A.ID = B.BUSINESS_ID ");
|
|
selectSql.append(" AND A.CUSTOMER_ID = :cusId ");
|
sql.append(" AND A.CUSTOMER_ID =:cusId ");
|
|
selectSql.append(" GROUP BY A.ID) D GROUP BY D.STATE ");
|
sql.append(" GROUP BY A.ID) D ");
|
|
List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
|
if(null!=list && list.size()>0) {
|
for(Map map : list) {
|
String state = ConvertUtil.obj2StrBlank(map.get("STATE"));
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT)) {
|
fwt += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX)) {
|
yxgcs += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX)) {
|
exgcs += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX)) {
|
sxgcs += num;
|
continue;
|
}
|
|
}
|
}
|
int all = baseDao.queryForInteger(sql.toString(), paramMap);
|
Map map = new HashMap();
|
map.put("fwt", fwt);
|
|
map.put("yxgcs", yxgcs);
|
|
map.put("exgcs", exgcs);
|
|
map.put("sxgcs", sxgcs);
|
|
|
map.put("all", all);
|
|
return map;
|
}
|
|
@Override
|
public int queryincidentOrderNodeCount(Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND C.FLOWID = WB.ID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL AND WB.BUSINESSTYPE = :businessType ");
|
|
sqlpart = getIncidentNodeSql(sqlpart,params);
|
sql.append(sqlpart);
|
sql.append( " GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public PageInfo queryincidentOrderNodeList(PageInfo pageInfo,Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
|
sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND C.FLOWID = WB.ID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL AND WB.BUSINESSTYPE = :businessType ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sqlpart = getIncidentNodeSql(sqlpart,params);
|
|
sql.append(sqlpart);
|
sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
public StringBuilder getIncidentNodeSql(StringBuilder sqlpart,Map<String,String> params){
|
|
|
String cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :cusId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
sqlpart.append(" AND B.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
sqlpart.append(" AND B.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
sqlpart.append(" :dg"+i);
|
sqlpart.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String type = params.get("source");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
sqlpart.append(" AND B.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
sqlpart.append(" AND B.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
params.put("type"+i, types[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
sqlpart.append( " AND B.STATE = :state ");
|
params.put("state", status);
|
|
}
|
return sqlpart;
|
}
|
|
@Override
|
public int queryincidentJxzCount(Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 ");
|
|
sqlpart = getIncidentJxzSql(sqlpart,params);
|
|
sql.append(sqlpart);
|
sql.append( " GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public PageInfo queryincidentJxzList(PageInfo pageInfo,Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
|
sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND C.FLOWID = WB.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 ");
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sqlpart = getIncidentJxzSql(sqlpart,params);
|
|
sql.append(sqlpart);
|
sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
public StringBuilder getIncidentJxzSql(StringBuilder sqlpart,Map<String,String> params){
|
|
String cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :cusId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
sqlpart.append(" AND B.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
sqlpart.append(" AND B.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
sqlpart.append(" :dg"+i);
|
sqlpart.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String type = params.get("source");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
sqlpart.append(" AND B.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
sqlpart.append(" AND B.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
params.put("type"+i, types[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
sqlpart.append( " AND (B.STATE = :state OR B.STATE = :state1) ");
|
params.put("state", status);
|
params.put("state1", ConvertUtil.obj2StrBlank(ConvertUtil.obj2Integer(status)+1));
|
|
}
|
return sqlpart;
|
}
|
|
@Override
|
public Map queryincidentJxzNodeCount(String cusId) {
|
//初始化变量
|
int ywc = 0;
|
//服务台
|
int fwt = 0;
|
|
//一线工程师
|
int yxgcs = 0;
|
|
//二线工程师
|
int exgcs = 0;
|
|
//三线工程师
|
int sxgcs = 0;
|
|
|
//只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台)
|
StringBuffer selectSql = new StringBuffer();
|
StringBuffer sql = new StringBuffer();
|
|
Map paramMap = new HashMap();
|
paramMap.put("cusId", cusId);
|
selectSql.append( "SELECT COUNT(*) AS NUM,A.STATE FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND B.WFSTATE = 1 ");
|
sql.append( "SELECT COUNT(A.ID) FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND B.WFSTATE = 1 ");
|
selectSql.append(" AND A.CUSTOMER_ID = :cusId ");
|
sql.append(" AND A.CUSTOMER_ID = :cusId ");
|
selectSql.append(" GROUP BY A.STATE ");
|
|
List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
|
if(null!=list && list.size()>0) {
|
for(Map map : list) {
|
String state = ConvertUtil.obj2StrBlank(map.get("STATE"));
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ)) {
|
fwt += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YXCLZ)) {
|
yxgcs += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_EXCLZ)) {
|
exgcs += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_SXCLZ)) {
|
sxgcs += num;
|
continue;
|
}
|
|
}
|
}
|
int all = baseDao.queryForInteger(sql.toString(), paramMap);
|
Map map = new HashMap();
|
map.put("fwt", fwt);
|
|
map.put("yxgcs", yxgcs);
|
|
map.put("exgcs", exgcs);
|
|
map.put("sxgcs", sxgcs);
|
|
map.put("all", all);
|
|
return map;
|
}
|
|
@Override
|
public int queryincidentEndCount(Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = :type ");
|
sqlpart = getEndSql(sqlpart,params);
|
sql.append(sqlpart);
|
sql.append( " GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public PageInfo queryincidentEndList(PageInfo pageInfo,Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ,");
|
sql.append(" D.HANG_UP_USERNAME,D.HANG_UP_TIME,D.HANG_UP_REASON ,WB.SCORE ");
|
sql.append("FROM (SELECT F.*,E.SCORE FROM WORKFLOW_BASE F LEFT JOIN ORDER_SATIS_INFO E ON F.ID = E.BUSINESS_ID WHERE F.BUSINESSTYPE = :businessType ) WB, WORKFLOW_NODE C ,SC_WORKFLOW_INCIDENT B LEFT JOIN HANG_UP_INFO D ON B.ID = D.BUS_ID ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND C.FLOWID = WB.ID AND WB.WFSTATE = :type ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sqlpart = getEndSql(sqlpart,params);
|
|
sql.append(sqlpart);
|
sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
public StringBuilder getEndSql(StringBuilder sqlpart,Map<String,String> params){
|
|
String cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :cusId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
sqlpart.append(" AND B.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
sqlpart.append(" AND B.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
sqlpart.append(" :dg"+i);
|
sqlpart.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String type = params.get("source");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
sqlpart.append(" AND B.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
sqlpart.append(" AND B.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
params.put("type"+i, types[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
return sqlpart;
|
}
|
|
@Override
|
public Map queryincidentTimeoutCount(String cusId) {
|
//初始化变量
|
int ywc = 0;
|
//服务台
|
int fwt = 0;
|
|
//一线工程师
|
int yxgcs = 0;
|
|
//二线工程师
|
int exgcs = 0;
|
|
//三线工程师
|
int sxgcs = 0;
|
|
|
//只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台)
|
StringBuffer selectSql = new StringBuffer();
|
StringBuffer sql = new StringBuffer();
|
|
Map paramMap = new HashMap();
|
paramMap.put("cusId", cusId);
|
selectSql.append( "SELECT COUNT(*) AS NUM,A.STATE FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND B.WFSTATE = 1 AND (A.ANSWER_TIME = 1 OR A.DEAL_TIMEOUT = 1 ) ");
|
sql.append( "SELECT COUNT(A.ID) FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND B.WFSTATE = 1 AND (A.ANSWER_TIME = 1 OR A.DEAL_TIMEOUT = 1 ) ");
|
selectSql.append(" AND A.CUSTOMER_ID = :cusId ");
|
sql.append(" AND A.CUSTOMER_ID = :cusId ");
|
|
selectSql.append(" GROUP BY A.STATE ");
|
|
List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
|
if(null!=list && list.size()>0) {
|
for(Map map : list) {
|
String state = ConvertUtil.obj2StrBlank(map.get("STATE"));
|
int num = ConvertUtil.obj2Int(map.get("NUM"));
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ)) {
|
fwt += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_YXCLZ)) {
|
yxgcs += num;
|
continue;
|
}
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_EXCLZ)) {
|
exgcs += num;
|
continue;
|
}
|
|
if(state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX)||state.equals(Constants.SC_WORKFLOW_INCIDENT_STATE_SXCLZ)) {
|
sxgcs += num;
|
continue;
|
}
|
|
}
|
}
|
int all = baseDao.queryForInteger(sql.toString(), paramMap);
|
Map map = new HashMap();
|
map.put("fwt", fwt);
|
|
map.put("yxgcs", yxgcs);
|
|
map.put("exgcs", exgcs);
|
|
map.put("sxgcs", sxgcs);
|
|
map.put("all", all);
|
|
return map;
|
}
|
|
@Override
|
public int queryincidentTimeoutCount(Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 AND (B.ANSWER_TIME = 1 OR B.DEAL_TIMEOUT = 1 ) ");
|
sqlpart = getIncidentTimeoutSql(sqlpart,params);
|
sql.append(sqlpart);
|
sql.append( " GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public PageInfo queryincidentTimeoutList(PageInfo pageInfo,Map<String,String> params) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
|
sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 AND (B.ANSWER_TIME = 1 OR B.DEAL_TIMEOUT = 1 ) ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sqlpart = getIncidentTimeoutSql(sqlpart,params);
|
sql.append(sqlpart);
|
sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
public StringBuilder getIncidentTimeoutSql(StringBuilder sqlpart,Map<String,String> params){
|
|
String cusId = params.get("cusId");
|
if(StringUtil.notEmpty(cusId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :cusId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
sqlpart.append(" AND B.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
sqlpart.append(" AND B.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
sqlpart.append(" :dg"+i);
|
sqlpart.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String type = params.get("source");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
sqlpart.append(" AND B.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
sqlpart.append(" AND B.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
params.put("type"+i, types[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
sqlpart.append( " AND (B.STATE = :state OR B.STATE = :state1) ");
|
params.put("state", status);
|
params.put("state1", ConvertUtil.obj2StrBlank(ConvertUtil.obj2Integer(status)+1));
|
|
}
|
return sqlpart;
|
}
|
|
@Override
|
public Map querySubCus(String customerId,String subCustomerId) {
|
Map resultMap = new HashMap();
|
Map paramMap = new HashMap();
|
paramMap.put("customerId", customerId);
|
String selectSubSql = "SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID = :customerId AND DEL_FLAG = 1 ORDER BY MY_LEVEL ";
|
List<Map> subCus = baseDao.queryForList(selectSubSql,paramMap);
|
|
List subs = new ArrayList();
|
|
List checkSl = new ArrayList();
|
|
|
if(null!=subCus && subCus.size()>0){
|
Map cacheMap = new HashMap();
|
for(Map cus : subCus) {
|
String level = ConvertUtil.obj2StrBlank(cus.get("MY_LEVEL"));
|
String id = ConvertUtil.obj2Str(cus.get("ID"));
|
String name = ConvertUtil.obj2StrBlank(cus.get("CUSTOMER_NAME"));
|
|
if(subCustomerId.equals(id)) {
|
cus.put("checked", 1);
|
Map map = new HashMap();
|
map.put("checkId", id);
|
map.put("checkName", name);
|
checkSl.add(map);
|
} else {
|
cus.put("checked", 2);
|
}
|
|
|
if(level.equals("1")) {
|
List ejList = new ArrayList();
|
cacheMap.put(id, ejList);
|
cus.put("subs", ejList);
|
subs.add(cus);
|
continue;
|
}
|
|
if(level.equals("2")) {
|
String pid = ConvertUtil.obj2StrBlank(cus.get("P_ID"));
|
List ejList = (List)cacheMap.get(pid);
|
ejList.add(cus);
|
}
|
}
|
}
|
resultMap.put("subs", subs);
|
resultMap.put("checks", checkSl);
|
return resultMap;
|
}
|
|
|
}
|