package cn.ksource.web.facade.incident;
|
|
import cn.ksource.beans.*;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.*;
|
import cn.ksource.core.web.SysInfoMsg;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.core.workflow.*;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.controller.wechat.util.WechatConstants;
|
import cn.ksource.web.facade.message.MessageFacade;
|
import cn.ksource.web.facade.servicelist.SlaPartnerFacade;
|
import cn.ksource.web.service.DataDictionaryService;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
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;
|
import cn.ksource.web.service.sl.SlaProjectService;
|
import cn.ksource.web.service.sl.sla.NoticeUser;
|
import cn.ksource.web.service.sl.sla.SLAEntity;
|
import cn.ksource.web.service.sl.sla.SLALevel;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.*;
|
|
@Service("incidentFacade")
|
public class IncidentFacadeImpl implements IncidentFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private WorkOrderCodeService workOrderCodeService;
|
|
@Autowired
|
private DataDictionaryService dataDictionaryService;
|
|
@Autowired
|
private WorkflowBusinessService workflowBusinessService;
|
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
|
@Autowired
|
private FileService fileService;
|
|
@Autowired
|
private MessageFacade messageFacade;
|
|
|
@Autowired
|
private RecordService recordService;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private DeviceService deviceService;
|
|
@Resource(name = "slaProjectService")
|
private SlaProjectService slaProjectService;
|
|
@Resource(name = "slaPartnerFacade")
|
private SlaPartnerFacade slaPartnerFacade;
|
|
@Override
|
public boolean addLinkDeivces(String flowId, String[] deviceId) {
|
deviceService.saveLinkDevices(flowId, deviceId);
|
return true;
|
}
|
|
@Override
|
public boolean deleteFile(String fileId) {
|
fileService.deleteFile(fileId);
|
return true;
|
}
|
|
@Override
|
public boolean deleteLinkDevices(String id) {
|
deviceService.deleteLinkDevice(id);
|
//删除配置涉及工单数据
|
return true;
|
}
|
|
@Override
|
public boolean deleteLinkOrder(String linkId) {
|
orderService.deleteLinkOrder(linkId);
|
return true;
|
}
|
|
@Override
|
public boolean deleteRecord(HttpServletRequest request) {
|
String recordId = request.getParameter("recordId");
|
recordService.deleteRecord(recordId);
|
return true;
|
}
|
|
@Override
|
public void doCloseReason(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String solveWay = request.getParameter("solveWay");
|
String solveWayName = request.getParameter("solveWayName");
|
|
|
String resolve = request.getParameter("resolve");
|
String bz = request.getParameter("bz");
|
|
String merged_business_id = new String();
|
|
if (solveWay.equals(Constants.SJCF)) {
|
merged_business_id = request.getParameter("merged_business_id");
|
}
|
|
|
//判断请求是否来自微信(/ewyw/ewIncident/ewCloseReason微信)
|
String url = request.getServletPath();
|
Map user = new HashMap();
|
if (url.substring(1, 5).equals("ewyw")) {
|
user = WebUtil.getWywEngineerLoginUser(request);
|
} else {
|
user = WebUtil.getLoginUser(request).getLoginUser();
|
}
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
long resolveTime = DateUtil.getCurrentDate14();
|
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_GB;
|
|
|
Map result = getHs(incidentId, baseDao, resolveTime);
|
//获取解决耗时
|
double sjjjsj = ConvertUtil.obj2Double(result.get("sjjjsj"));
|
|
String deal_timeout = ConvertUtil.obj2StrBlank(result.get("deal_timeout"));
|
|
|
String updateSql = "UPDATE SC_WORKFLOW_INCIDENT SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,DEAL_USE_TIME = :deal_use_time,RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName,RESOLVE = :resolve,MERGED_BUSINESS_ID = :merged_business_id,DEAL_TIMEOUT = :deal_timeout WHERE ID = :incidentId";
|
|
Map paramMap = new HashMap();
|
paramMap.put("state", state);
|
paramMap.put("userId", userId);
|
paramMap.put("userName", userName);
|
paramMap.put("resolveTime", resolveTime);
|
paramMap.put("solveWay", solveWay);
|
paramMap.put("solveWayName", solveWayName);
|
paramMap.put("resolve", resolve);
|
paramMap.put("merged_business_id", merged_business_id);
|
paramMap.put("incidentId", incidentId);
|
paramMap.put("deal_use_time", sjjjsj);
|
paramMap.put("deal_timeout", deal_timeout);
|
|
baseDao.execute(updateSql, paramMap);
|
|
//=====================执行结束流程(事件已关闭)
|
WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT(incidentId).getInstanceById().getFlow_id()).getInstanceById();
|
|
WORKFLOW_NODE workflow_node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
|
|
//事件响应
|
NodeAnswerEntity entity = new NodeAnswerEntity();
|
entity.setUser_id(userId);
|
entity.setUser_name(userName);
|
workflowCoreService.answerNode(base, workflow_node, entity);
|
|
|
//判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
|
String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT WHERE ID = :incidentId";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("incidentId", incidentId));
|
String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
|
if (!StringUtil.notEmpty(answerTime)) {
|
StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT SET ");
|
long answer_time = DateUtil.getCurrentDate14();
|
//判断是否响应超时
|
long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
|
|
String answer_timeout = "2";
|
if (answer_time > answer_timeout_time) {
|
answer_timeout = "1";
|
}
|
|
builder.append(" ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
|
paramMap.put("answerTime", answer_time);
|
paramMap.put("answer_timeout", answer_timeout);
|
|
//计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
|
long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
|
//将秒转化为分钟
|
double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
|
|
paramMap.put("answer_user_time", sjxysj);
|
builder.append(" WHERE ID = :incidentId");
|
paramMap.put("incidentId", incidentId);
|
baseDao.execute(builder.toString(), paramMap);
|
}
|
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("流程关闭");
|
finishEntity.setDeal_note(bz);
|
|
|
//判断是否能够结束节点
|
boolean canFinish = workflowCoreService.finishNode(base, workflow_node, finishEntity);
|
if (canFinish) {
|
//关闭流程
|
workflowCoreService.closeWorkFlow(base);
|
}
|
//=====================执行结束流程完毕(事件已解决)
|
//增加事件处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("取消事件:" + userName + "取消了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(base.getId());
|
recordService.addRecord(record);
|
|
//则删除所有的处理通知
|
String deleteSql = "DELETE FROM SC_INCIDENT_SLA_NOTICE WHERE INCIDENT_ID = :incidentId";
|
baseDao.execute(deleteSql, new SqlParameter("incidentId", incidentId));
|
|
|
//如果该事件是驻场运维事件升级过来的时间,则事件工单完成时或关闭时,修改驻场运维事件工单的状态
|
updateZcywIncidentState(incidentId, Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_YGB, Constants.WORKFLOW_BASE_WFSTATE_CLOSE);
|
|
}
|
|
@Override
|
public void doCloseTask(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String solveWay = request.getParameter("solveWay");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
long resolveTime = DateUtil.getCurrentDate14();
|
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_GB;
|
|
String updateSql = "UPDATE SC_WORKFLOW_INCIDENT SET STATE = :state,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,RESOLVE = :solveWay WHERE ID = :id";
|
|
Map paramMap = new HashMap();
|
paramMap.put("state", state);
|
paramMap.put("userId", userId);
|
paramMap.put("userName", userName);
|
paramMap.put("resolveTime", resolveTime);
|
paramMap.put("solveWay", solveWay);
|
paramMap.put("id", incidentId);
|
|
baseDao.execute(updateSql, paramMap);
|
|
//=====================执行结束流程(事件已关闭)
|
WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT(incidentId).getInstanceById().getFlow_id()).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("流程关闭");
|
finishEntity.setDeal_note("流程关闭");
|
|
|
boolean canFinish = workflowCoreService.finishNode(base, new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById(), finishEntity);
|
if (canFinish) {
|
workflowCoreService.closeWorkFlow(base);
|
}
|
//=====================执行结束流程(事件已关闭)
|
|
}
|
|
@Override
|
public void doEndTask(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String solveWay = request.getParameter("solveWay");
|
String solveWayName = request.getParameter("solveWayName");
|
String startDate=request.getParameter("startDate");
|
String endDate=request.getParameter("endDate");
|
|
String resolve = request.getParameter("resolve");
|
String suggest = request.getParameter("suggest");
|
String bz = request.getParameter("bz");
|
|
//判断请求是否来自微信(/ewyw/ewIncident/ewEndTask.html微信)
|
String url = request.getServletPath();
|
Map user = new HashMap();
|
if (url.substring(1, 5).equals("ewyw")) {
|
user = WebUtil.getWywEngineerLoginUser(request);
|
} else {
|
user = WebUtil.getLoginUser(request).getLoginUser();
|
}
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
long resolveTime = DateUtil.getCurrentDate14();
|
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ;
|
|
|
Map result = getHs(incidentId, baseDao, resolveTime);
|
//获取解决耗时
|
double sjjjsj = ConvertUtil.obj2Double(result.get("sjjjsj"));
|
|
String deal_timeout = ConvertUtil.obj2StrBlank(result.get("deal_timeout"));
|
|
|
String updateSql = "UPDATE SC_WORKFLOW_INCIDENT SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,DEAL_USE_TIME = :deal_use_time, RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName,RESOLVE = :resolve,SUGGEST = :suggest,DEAL_TIMEOUT = :deal_timeout WHERE ID = :incidentId ";
|
// Long time=DateUtil.getSecondsFormDate2Date(ConvertUtil.obj2Long(startDate), ConvertUtil.obj2Long(endDate));
|
// double work_hours=NumberUtil.div(ConvertUtil.obj2Double(time), 3600.00, 2);
|
Map paramMap = new HashMap();
|
paramMap.put("state", state);
|
paramMap.put("userId", userId);
|
paramMap.put("userName", userName);
|
paramMap.put("resolveTime", resolveTime);
|
paramMap.put("solveWay", solveWay);
|
paramMap.put("solveWayName", solveWayName);
|
paramMap.put("resolve", resolve);
|
paramMap.put("suggest", suggest);
|
paramMap.put("incidentId", incidentId);
|
paramMap.put("deal_use_time", sjjjsj);
|
paramMap.put("deal_timeout", deal_timeout);
|
// paramMap.put("work_hours", work_hours);
|
|
baseDao.execute(updateSql, paramMap);
|
|
//=====================执行结束流程(事件已解决)
|
WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT(incidentId).getInstanceById().getFlow_id()).getInstanceById();
|
|
WORKFLOW_NODE workflow_node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
|
|
//事件响应
|
NodeAnswerEntity entity = new NodeAnswerEntity();
|
entity.setUser_id(userId);
|
entity.setUser_name(userName);
|
workflowCoreService.answerNode(base, workflow_node, entity);
|
|
//判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
|
String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT WHERE ID = :incidentId";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("incidentId", incidentId));
|
String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
|
if (!StringUtil.notEmpty(answerTime)) {
|
StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT SET ");
|
long answer_time = DateUtil.getCurrentDate14();
|
//判断是否响应超时
|
long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
|
|
String answer_timeout = "2";
|
if (answer_time > answer_timeout_time) {
|
answer_timeout = "1";
|
}
|
|
builder.append(" ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
|
paramMap.put("answerTime", answer_time);
|
paramMap.put("answer_timeout", answer_timeout);
|
|
//计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
|
long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
|
//将秒转化为分钟
|
double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
|
|
paramMap.put("answer_user_time", sjxysj);
|
builder.append(" WHERE ID = :incidentId");
|
paramMap.put("incidentId", incidentId);
|
baseDao.execute(builder.toString(), paramMap);
|
|
|
}
|
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("流程结束");
|
finishEntity.setDeal_note(bz);
|
|
|
//判断是否能够结束节点
|
boolean canFinish = workflowCoreService.finishNode(base, workflow_node, finishEntity);
|
if (canFinish) {
|
//关闭流程
|
workflowCoreService.finishWorkFlow(base);
|
}
|
//=====================执行结束流程完毕(事件已解决)
|
|
|
//增加事件处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("解决事件:" + userName + "解决了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(base.getId());
|
recordService.addRecord(record);
|
|
|
//则删除所有的处理通知
|
String deleteSql = "DELETE FROM SC_INCIDENT_SLA_NOTICE WHERE INCIDENT_ID = :incidentId";
|
baseDao.execute(deleteSql, new SqlParameter("incidentId", incidentId));
|
|
|
//如果该事件是驻场运维事件升级过来的时间,则事件工单完成时或关闭时,修改驻场运维事件工单的状态
|
updateZcywIncidentState(incidentId, Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_YJJ, Constants.WORKFLOW_BASE_WFSTATE_FINISH);
|
|
}
|
|
private void updateZcywIncidentState(String incidentId, String state, int orderState) {
|
//判断该事件是否是由驻场运维工单升级而来
|
String selectSql = "SELECT FLOW_ID FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE INCIDENT_ID = :incidentId";
|
String flowId = baseDao.queryForString(selectSql, new SqlParameter("incidentId", incidentId));
|
if (StringUtil.notEmpty(flowId)) {
|
String updateSql = "UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = :state WHERE INCIDENT_ID = :incidentId ";
|
baseDao.execute(updateSql, new SqlParameter("state", state).addValue("incidentId", incidentId));
|
|
String updateOrder = "UPDATE WORKFLOW_BASE SET WFSTATE = :orderState WHERE ID = :flowId ";
|
baseDao.execute(updateOrder, new SqlParameter("orderState", orderState).addValue("flowId", flowId));
|
}
|
|
}
|
|
private Map getHs(String incidentId, BaseDao baseDao, long resolveTime) {
|
String selectCreateTime = "SELECT CREATE_TIME,DEAL_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT WHERE ID = :id ";
|
Map map = baseDao.queryForMap(selectCreateTime, new SqlParameter("id", incidentId));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
long deal_timeout_time = ConvertUtil.obj2Long(map.get("DEAL_TIMEOUT_TIME"));
|
|
//计算第解决时间和创建事件的事件差 将时间差转化为小时
|
long jjSeconds = DateUtil.getSecondsFormDate2Date(create_time, resolveTime);
|
|
//将秒转化为小时
|
double sjjjsj = NumberUtil.div(ConvertUtil.obj2Double(jjSeconds), ConvertUtil.obj2Double(3600), 2);
|
|
Map result = new HashMap();
|
result.put("sjjjsj", sjjjsj);
|
|
if (resolveTime > deal_timeout_time) {
|
result.put("deal_timeout", 1);
|
|
} else {
|
result.put("deal_timeout", 2);
|
}
|
|
return result;
|
}
|
|
@Override
|
public String doOrderConfirm(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String flowId = request.getParameter("flowId");
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
NodeAnswerEntity answerEntity = new NodeAnswerEntity();
|
answerEntity.setUser_id(userId);
|
answerEntity.setUser_name(userName);
|
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
|
//判断该工单是否已经响应过
|
|
|
//工单响应
|
boolean result = workflowCoreService.answerNode(base, new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById(), answerEntity);
|
if (!result) {
|
return "2";
|
}
|
|
|
//判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
|
String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT WHERE ID = :incidentId";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("incidentId", incidentId));
|
String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
|
|
Map paramMap = new HashMap();
|
StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT SET STATE = STATE + 1");
|
|
if (!StringUtil.notEmpty(answerTime)) {
|
long answer_time = DateUtil.getCurrentDate14();
|
//判断是否响应超时
|
long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
|
|
String answer_timeout = "2";
|
if (answer_time > answer_timeout_time) {
|
answer_timeout = "1";
|
}
|
|
builder.append(",ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
|
paramMap.put("answerTime", answer_time);
|
paramMap.put("answer_timeout", answer_timeout);
|
|
//计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
|
long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
|
//将秒转化为分钟
|
double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
|
|
paramMap.put("answer_user_time", sjxysj);
|
|
|
//如果是第一次响应,则删除所有的响应通知
|
String deleteSql = "DELETE FROM SC_INCIDENT_SLA_NOTICE WHERE TYPE = 1 AND INCIDENT_ID = :incidentId";
|
baseDao.execute(deleteSql, new SqlParameter("incidentId", incidentId));
|
|
|
}
|
|
builder.append(" WHERE ID = :incidentId");
|
paramMap.put("incidentId", incidentId);
|
baseDao.execute(builder.toString(), paramMap);
|
return "1";
|
}
|
|
@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,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :groupId AND A.YHBH = B.ID ORDER BY B.ZSXM ";
|
List users = baseDao.queryForList(selectSql, new SqlParameter("groupId", current_deal_roleida));
|
if (users == null || users.size() == 0) {
|
String groupusersql = "SELECT B.ID ,B.ZSXM AS USER_NAME FROM AC_ROLE_GROUP_USER A,GG_USER B WHERE A.USER_ID = B.ID AND A.GROUP_ID = :groupId AND A.STATE = 1 ";
|
users = baseDao.queryForList(groupusersql, new SqlParameter("groupId", current_deal_roleida));
|
}
|
return users;
|
}
|
|
@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 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 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 ");
|
}
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
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 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 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 ");
|
}
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
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));
|
|
builder.append(" ORDER BY D.CREATETIME DESC ");
|
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
|
return result;
|
}
|
|
@Override
|
public int myincidentpoolCount(Map<String, String> params) {
|
|
String sql = new String();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
sql = "SELECT COUNT(D.ID) FROM SC_WORKFLOW_INCIDENT E,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 E.ID = D.BUSINESS_ID AND 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 E.STATE = :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 customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
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;
|
}
|
|
return 0;
|
}
|
|
@Override
|
public PageInfo myincidentpoolData(PageInfo pageInfo, Map<String, String> params) {
|
|
String sql = new String();
|
params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
sql = "SELECT D.* FROM SC_WORKFLOW_INCIDENT E,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 E.ID = D.BUSINESS_ID AND 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 E.STATE = :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 customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
builder.append(" ORDER BY D.CREATETIME DESC ");
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
|
return result;
|
}
|
return new PageInfo();
|
}
|
|
@Override
|
public Map queryClDetail(String id) {
|
Map record = recordService.getRecordById(id);
|
List<Map> files = fileService.getFileList(id);
|
|
if (null != files && files.size() > 0) {
|
for (Map file : files) {
|
double filesize = ConvertUtil.obj2Double(file.get("FILE_SIZE"));
|
file.put("FILE_SIZE", StringUtil.getFileSize(filesize));
|
String fileFormat = ConvertUtil.obj2StrBlank(file.get("FILE_FORMAT"));
|
String docSuffer = StringUtil.wechateDocSuffer(fileFormat);
|
file.put("SUFFER", docSuffer);
|
}
|
record.put("files", files);
|
}
|
return record;
|
}
|
|
@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 queryContactInfo(HttpServletRequest request) {
|
String customer_id = request.getParameter("customer_id");
|
String contactPhone = request.getParameter("contactPhone");
|
|
String selectSql = "SELECT CONTACT_NAME,YWKS,SUB_CUSTOMER_ID,SUB_CUSTOMER_NAME FROM CUSTOMER_CONTACTS WHERE CONTACTS_TYPE = :contactPhone AND CUSTOMER_ID = :customer_id ";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("contactPhone", contactPhone).addValue("customer_id", customer_id));
|
if (null != map && map.size() > 0) {
|
map.put("hasMsg", "1");
|
} else {
|
map.put("hasMsg", "2");
|
}
|
return map;
|
}
|
@Override
|
public Map queryContactNameInfo(Map param) {
|
|
|
String selectSql = "SELECT CONTACT_NAME,YWKS,SUB_CUSTOMER_ID,SUB_CUSTOMER_NAME,CONTACTS_TYPE FROM CUSTOMER_CONTACTS WHERE CONTACT_NAME = :contactName AND CUSTOMER_ID = :customer_id ";
|
Map map = baseDao.queryForMap(selectSql,param);
|
if (null != map && map.size() > 0) {
|
map.put("hasMsg", "1");
|
} else {
|
map.put("hasMsg", "2");
|
}
|
return map;
|
}
|
|
@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);
|
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) {
|
//查询流程所有的关联设备
|
String selectSql = "SELECT B.*,A.ID AS LINK_ID,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE C.ID = B.LV1_ID ) AS FIRST_NAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE D.ID = B.LV2_ID ) AS SECOND_NAME,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE E.ID = B.LV3_ID ) AS THIRD_NAME FROM CMDB_CI_REF_ORDER A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.FLOW_ID = :flowId";
|
return baseDao.queryForList(selectSql,new SqlParameter("flowId",flowId));
|
}
|
|
@Override
|
public List queryFiles(String flowId) {
|
List<Map> files = fileService.getFileList(flowId);
|
if (null != files && files.size() > 0) {
|
for (Map file : files) {
|
file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
|
|
String fileFormat = ConvertUtil.obj2StrBlank(file.get("FILE_FORMAT"));
|
String docSuffer = StringUtil.wechateDocSuffer(fileFormat);
|
file.put("SUFFER", docSuffer);
|
|
}
|
}
|
return files;
|
}
|
|
@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(ConvertUtil.obj2StrBlank(baseMap.get("FLOW_ID")));
|
baseMap.put("files", files);
|
}
|
return baseMap;
|
}
|
@Override
|
public Map queryIncidentBaseMsgLocal(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(ConvertUtil.obj2StrBlank(baseMap.get("FLOW_ID")));
|
baseMap.put("files", files);
|
}
|
return baseMap;
|
}
|
|
@Override
|
public Map queryIncidentCount(HttpServletRequest request) {
|
//初始化变量
|
//未完成
|
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;
|
|
|
StringBuilder selectSql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
|
Map paramMap = new HashMap();
|
selectSql.append("SELECT COUNT(*) AS NUM,A.STATE FROM SC_WORKFLOW_INCIDENT A GROUP BY A.STATE ");
|
sql.append("SELECT ANSWER_TIMEOUT,DEAL_TIMEOUT FROM SC_WORKFLOW_INCIDENT WHERE STATE != :yjj AND STATE!=:gb AND STATE != :ypj ");
|
|
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)) {
|
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;
|
}
|
|
}
|
}
|
|
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.toString(), 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;
|
}
|
}
|
|
}
|
|
|
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);
|
|
|
//查询该加盟商未完成的事件
|
|
|
map.put("wwc", wyc);
|
map.put("slaWillTimeOut", slaWillTimeOut);
|
map.put("slaTimeOut", slaTimeOut);
|
|
return map;
|
}
|
|
@Override
|
public int queryIncidentOrderCount(Map<String, String> params) {
|
|
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 ");
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
String customerid = params.get("customerId");
|
if (StringUtil.notEmpty(customerid)) {
|
sql.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
|
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sql.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
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 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 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 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 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) ");
|
paramMap.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
paramMap.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
paramMap.put("fpdycjszc", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC);
|
paramMap.put("ycjszcclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YCJSZCCLZ);*/
|
sql.append(" AND (B.STATE = :fpdfwt OR B.STATE=:fwtclz ) ");
|
params.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
params.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
} 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 )");
|
paramMap.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
paramMap.put("ygb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
paramMap.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);*/
|
sql.append(" AND (B.STATE = :yjj OR B.STATE = :ypj )");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
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 baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public PageInfo queryIncidentOrderList(PageInfo pageInfo, Map<String, String> params) {
|
|
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 ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
String customerid = params.get("customerId");
|
if (StringUtil.notEmpty(customerid)) {
|
sql.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
|
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sql.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
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 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 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 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 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) ");
|
paramMap.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
paramMap.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
paramMap.put("fpdycjszc", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC);
|
paramMap.put("ycjszcclz", Constants.SC_WORKFLOW_INCIDENT_STATE_YCJSZCCLZ);*/
|
sql.append(" AND (B.STATE = :fpdfwt OR B.STATE=:fwtclz ) ");
|
params.put("fpdfwt", Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT);
|
params.put("fwtclz", Constants.SC_WORKFLOW_INCIDENT_STATE_FWTCLZ);
|
} 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 )");
|
paramMap.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
paramMap.put("ygb", Constants.SC_WORKFLOW_INCIDENT_STATE_GB);
|
paramMap.put("ypj", Constants.SC_WORKFLOW_INCIDENT_STATE_YPJ);*/
|
sql.append(" AND (B.STATE = :yjj OR B.STATE = :ypj )");
|
params.put("yjj", Constants.SC_WORKFLOW_INCIDENT_STATE_YJJ);
|
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);
|
}
|
|
}
|
|
|
sql.append(" ORDER BY WB.CREATETIME DESC ");
|
PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
return info;
|
}
|
|
@Override
|
public List queryLinkDevice(HttpServletRequest request) {
|
String seachcode = request.getParameter("seachcode");
|
String categoryid = request.getParameter("categoryid");
|
String customerid = request.getParameter("customerid");
|
String ciids = request.getParameter("ciids");
|
String cmdbName = AjaxUtil.decode(request.getParameter("cmdbName"));
|
String subCustomerId = request.getParameter("subCustomerId");
|
String membercode = request.getParameter("membercode");
|
Map paramMap = new HashMap();
|
paramMap.put("customerId", customerid);
|
|
//查询关联设备
|
StringBuilder builder = new StringBuilder("SELECT A.* FROM CMDB_CI_BASE A LEFT JOIN CMDB_CI_FLOW B ON A.ID = B.CFG_ID WHERE A.STATE = 1 and (B.state = '4' OR B.id IS NULL) ");
|
|
String ciid[] = ciids.split("-");
|
if (!StringUtil.isEmpty(ciids)) {
|
String para = "";
|
for (int i = 0; i < ciid.length; i++) {
|
if (i < ciid.length - 1) {
|
para += ciid[i] + "','";
|
} else if (i == ciid.length - 1) {
|
para += ciid[i];
|
}
|
}
|
builder.append(" and A.ID NOT IN ('");
|
builder.append(para);
|
builder.append("') ");
|
}
|
|
|
if (StringUtil.notEmpty(cmdbName)) {
|
builder.append(" AND A.CINAME LIKE :ciName ");
|
paramMap.put("ciName", "%" + cmdbName + "%");
|
}
|
|
if (StringUtil.notEmpty(seachcode)) {
|
builder.append(" AND A.SEARCHCODE LIKE :seachcode ");
|
paramMap.put("seachcode", "%" + seachcode + "%");
|
}
|
|
if (StringUtil.notEmpty(membercode)) {
|
builder.append(" AND A.CODE = :membercode ");
|
paramMap.put("membercode", membercode);
|
}
|
|
if (StringUtil.notEmpty(subCustomerId)) {
|
if(customerid.equals(subCustomerId)){
|
builder.append(" AND A.CUS_ID = :customerid ");
|
paramMap.put("customerid", customerid);
|
}else{
|
builder.append(" AND A.SUB_CUS_ID = :subCustomerId ");
|
paramMap.put("subCustomerId", subCustomerId);
|
}
|
}else{
|
builder.append(" AND A.CUS_ID = :customerid ");
|
paramMap.put("customerid", customerid);
|
}
|
|
builder.append(" ORDER BY A.CODE ");
|
|
List<Map> devices = baseDao.queryForList(builder.toString(), paramMap);
|
|
for (Map device : devices) {
|
device.put("LASTUPDATETIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", device.get("LASTUPDATETIME")));
|
int i = device.get("STATE") == null ? 0 : ConvertUtil.obj2Int(device.get("STATE"));
|
device.put("STATE", Constants.getCMDB_CI_BASE_USINGSTATE_Label(i));
|
}
|
System.out.println(JsonUtil.list2Json(devices));
|
return devices;
|
}
|
|
@Override
|
public List queryLinkOrder(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String orderCode = request.getParameter("orderCode");
|
String businessType = request.getParameter("businessType");
|
String orderName = AjaxUtil.decode(request.getParameter("orderName"));
|
String customerid = request.getParameter("customerid");
|
String orderids = request.getParameter("orderids");
|
SqlParameter param = new SqlParameter();
|
StringBuilder sql = new StringBuilder("SELECT A.ID,A.WFNAME,A.BUSINESSTYPE,A.WFSTATE,A.BUSINESS_ID,A.ORDER_CODE,A.CUSTOMER_NAME,A.CREATETIME FROM WORKFLOW_BASE A WHERE A.WFSTATE != :wfstate AND A.WFSTATE != :wfstate1 ");
|
if (!StringUtil.isEmpty(customerid)) {
|
sql.append(" AND A.CUSTOMER_ID = :customerid ");
|
}
|
if (!StringUtil.isEmpty(flowId)) {
|
sql.append(" AND A.ID <> :flowid ");
|
param.addValue("flowid", flowId);
|
}
|
|
param.addValue("customerid", customerid);
|
param.addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
param.addValue("wfstate1", Constants.WORKFLOW_BASE_WFSTATE_CLOSE);
|
|
String flowid[] = orderids.split("-");
|
if (!StringUtil.isEmpty(orderids)) {
|
String para = "";
|
for (int i = 0; i < flowid.length; i++) {
|
if (i < flowid.length - 1) {
|
para += flowid[i] + "','";
|
} else if (i == flowid.length - 1) {
|
para += flowid[i];
|
}
|
}
|
sql.append(" AND A.ID NOT IN ('" + para + "') ");
|
}
|
|
if (StringUtils.isNotBlank(businessType)) {
|
sql.append("AND A.BUSINESSTYPE = :businessType ");
|
param.addValue("businessType", businessType);
|
}
|
|
if (StringUtils.isNotBlank(orderName)) {
|
sql.append("AND A.WFNAME like :wfname ");
|
param.addValue("wfname", "%" + orderName + "%");
|
}
|
|
if (StringUtils.isNotBlank(orderCode)) {
|
sql.append("AND A.ORDER_CODE like :orderCode ");
|
param.addValue("orderCode", "%" + orderCode + "%");
|
}
|
|
sql.append("ORDER BY A.WFSTATE ASC,A.CREATETIME DESC");
|
|
|
List<Map> list = baseDao.queryForList(sql.toString(), param);
|
|
for (Map map2 : list) {
|
map2.put("BUSINESSTYPE_TEXT", Constants.mapWORKFLOW_BUSINESS_TYPE_Label(ConvertUtil.obj2Str(map2.get("BUSINESSTYPE"))));
|
map2.put("WFSTATE_TEXT", Constants.getWORKFLOW_BASE_WFSTATE_Label(ConvertUtil.obj2Str(map2.get("WFSTATE"))));
|
map2.put("CREATE_TIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", map2.get("CREATE_TIME")));
|
}
|
return list;
|
}
|
|
@Override
|
public Map queryLzDetail(String id) {
|
String selectSql = "SELECT * FROM WORKFLOW_NODE WHERE ID = :id ";
|
Map record = baseDao.queryForMap(selectSql, new SqlParameter("id", id));
|
|
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());
|
}
|
|
|
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);
|
}
|
return record;
|
}
|
|
@Override
|
public int queryMyIncidentCount(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.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
}
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
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 contract = params.get("contract");
|
if (StringUtil.notEmpty(contract)) {
|
builder.append(" AND D.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) {
|
builder.append(" AND D.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
builder.append(" AND D.PRIORITY_ID IN (");
|
for (int i = 0; i < pris.length; i++) {
|
builder.append(" :pri" + i);
|
builder.append(",");
|
params.put("pri" + i, pris[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String dg = params.get("dg");
|
if (StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if (dgs.length == 1) {
|
builder.append(" AND D.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
builder.append(" AND D.INFLUENCE_ID IN (");
|
for (int i = 0; i < dgs.length; i++) {
|
builder.append(" :dg" + i);
|
builder.append(",");
|
params.put("dg" + i, dgs[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String type = params.get("type");
|
if (StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if (types.length == 1) {
|
builder.append(" AND D.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
builder.append(" AND D.TYPE_ID IN (");
|
for (int i = 0; i < types.length; i++) {
|
builder.append(" :type" + i);
|
builder.append(",");
|
params.put("type" + i, types[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if (StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if (sls.length == 1) {
|
builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
builder.append(" AND D.THIRD_CATEGORY_ID IN (");
|
for (int i = 0; i < sls.length; i++) {
|
builder.append(" :third_category_id" + i);
|
builder.append(",");
|
params.put("third_category_id" + i, sls[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
StringBuilder newBuild = new StringBuilder();
|
newBuild.append("SELECT COUNT(*) FROM ( ");
|
newBuild.append(builder.toString());
|
newBuild.append(") E");
|
|
return baseDao.queryForInteger(newBuild.toString(), params);
|
}
|
|
@Override
|
public PageInfo queryMyIncidentData(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,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.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,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" WHERE D.WFSTATE != :ysc ");
|
}
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
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 contract = params.get("contract");
|
if (StringUtil.notEmpty(contract)) {
|
builder.append(" AND D.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) {
|
builder.append(" AND D.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
builder.append(" AND D.PRIORITY_ID IN (");
|
for (int i = 0; i < pris.length; i++) {
|
builder.append(" :pri" + i);
|
builder.append(",");
|
params.put("pri" + i, pris[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String dg = params.get("dg");
|
if (StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if (dgs.length == 1) {
|
builder.append(" AND D.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
builder.append(" AND D.INFLUENCE_ID IN (");
|
for (int i = 0; i < dgs.length; i++) {
|
builder.append(" :dg" + i);
|
builder.append(",");
|
params.put("dg" + i, dgs[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String type = params.get("type");
|
if (StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if (types.length == 1) {
|
builder.append(" AND D.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
builder.append(" AND D.TYPE_ID IN (");
|
for (int i = 0; i < types.length; i++) {
|
builder.append(" :type" + i);
|
builder.append(",");
|
params.put("type" + i, types[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if (StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if (sls.length == 1) {
|
builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
builder.append(" AND D.THIRD_CATEGORY_ID IN (");
|
for (int i = 0; i < sls.length; i++) {
|
builder.append(" :third_category_id" + i);
|
builder.append(",");
|
params.put("third_category_id" + i, sls[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
builder.append(" AND D.BUSINESSTYPE = :businessType");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
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 PageInfo queryMyIncidentData1(PageInfo pageInfo, Map<String, String> params) {
|
String startTime = params.get("startTime");
|
String endTime = params.get("endTime");
|
String template_name = params.get("template_name");
|
String name = params.get("name");
|
String service = params.get("services");//服务目录的三级id数组
|
String source_id = params.get("source_id");//来源
|
String type_id = params.get("type_id");//事件类型
|
String pri = params.get("pri");//优先级
|
String dg = params.get("dg");//影响程度
|
StringBuffer sql = new StringBuffer("SELECT * FROM SC_WORKFLOW_INCIDENT_TEMPLATE WHERE 1=1 AND CREATE_USER_ID=:userId ");
|
if(StringUtil.isNotBlank(startTime)){
|
sql.append(" AND HAPPEN_TIME >=:startTime");
|
params.put("startTime", startTime+"000000");
|
}
|
if(StringUtil.isNotBlank(endTime)){
|
sql.append(" AND HAPPEN_TIME <=:endTime");
|
params.put("endTime", endTime+"000000");
|
}
|
if(StringUtil.isNotBlank(template_name)){
|
sql.append(" AND TEMPLATE_NAME like :template_name");
|
params.put("template_name", "%"+template_name+"%");
|
}
|
if(StringUtil.isNotBlank(name)){
|
sql.append(" AND NAME like :name");
|
params.put("name", "%"+name+"%");
|
}
|
if(StringUtil.isNotBlank(service)){
|
String[] services = service.split(",");
|
int len = services.length;
|
sql.append(" AND THIRD_CATEGORY_ID in ( ");
|
sql.append("'"+services[0]+"'");
|
for(int i=1;i<len;i++){
|
sql.append(",");
|
sql.append("'"+services[i]+"'");
|
}
|
sql.append(" )");
|
}
|
if(StringUtil.isNotBlank(source_id)){
|
sql.append(" AND SOURCE_ID =:source_id");
|
params.put("source_id", source_id);
|
}
|
if(StringUtil.isNotBlank(type_id)){
|
sql.append(" AND TYPE_ID =:type_id");
|
params.put("type_id", type_id);
|
}
|
//PRIORITY_ID INFLUENCE_ID SLA_NAME
|
if(StringUtil.isNotBlank(pri)){
|
String[] pris = pri.split(",");
|
sql.append(" AND PRIORITY_ID IN (");
|
sql.append("'"+pris[0]+"'");
|
for(int i=1;i<pris.length;i++){
|
sql.append(",");
|
sql.append("'"+pris[i]+"'");
|
}
|
sql.append(" )");
|
}
|
if(StringUtil.isNotBlank(dg)){
|
String[] dgs = dg.split(",");
|
sql.append(" AND INFLUENCE_ID IN (");
|
sql.append("'"+dgs[0]+"'");
|
for(int i=1;i<dgs.length;i++){
|
sql.append(",");
|
sql.append("'"+dgs[i]+"'");
|
}
|
sql.append(" )");
|
}
|
sql.append(" order by CREATE_TIME desc");
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
@Override
|
public int queryMyIncidentCount1(Map<String, String> params) {
|
String startTime = params.get("startTime");
|
String endTime = params.get("endTime");
|
String template_name = params.get("template_name");
|
String name = params.get("name");
|
String service = params.get("services");//服务目录的三级id数组
|
String source_id = params.get("source_id");//来源
|
String type_id = params.get("type_id");//事件类型
|
String pri = params.get("pri");//优先级
|
String dg = params.get("dg");//影响程度
|
StringBuffer sql = new StringBuffer("SELECT COUNT(ID) FROM SC_WORKFLOW_INCIDENT_TEMPLATE WHERE 1=1 AND CREATE_USER_ID=:userId ");
|
if(StringUtil.isNotBlank(startTime)){
|
sql.append(" AND HAPPEN_TIME >=:startTime");
|
params.put("startTime", startTime+"000000");
|
}
|
if(StringUtil.isNotBlank(endTime)){
|
sql.append(" AND HAPPEN_TIME <=:endTime");
|
params.put("endTime", endTime+"000000");
|
}
|
if(StringUtil.isNotBlank(template_name)){
|
sql.append(" AND TEMPLATE_NAME like :template_name");
|
params.put("template_name", "%"+template_name+"%");
|
}
|
if(StringUtil.isNotBlank(name)){
|
sql.append(" AND NAME like :name");
|
params.put("name", "%"+name+"%");
|
}
|
if(StringUtil.isNotBlank(service)){
|
String[] services = service.split(",");
|
int len = services.length;
|
sql.append(" AND THIRD_CATEGORY_ID in ( ");
|
sql.append("'"+services[0]+"'");
|
for(int i=1;i<len;i++){
|
sql.append(",");
|
sql.append("'"+services[i]+"'");
|
}
|
sql.append(" )");
|
}
|
if(StringUtil.isNotBlank(source_id)){
|
sql.append(" AND SOURCE_ID =:source_id");
|
params.put("source_id", source_id);
|
}
|
if(StringUtil.isNotBlank(type_id)){
|
sql.append(" AND TYPE_ID =:type_id");
|
params.put("type_id", type_id);
|
}
|
//PRIORITY_ID INFLUENCE_ID SLA_NAME
|
if(StringUtil.isNotBlank(pri)){
|
String[] pris = pri.split(",");
|
sql.append(" AND PRIORITY_ID IN (");
|
sql.append("'"+pris[0]+"'");
|
for(int i=1;i<pris.length;i++){
|
sql.append(",");
|
sql.append("'"+pris[i]+"'");
|
}
|
sql.append(" )");
|
}
|
if(StringUtil.isNotBlank(dg)){
|
String[] dgs = dg.split(",");
|
sql.append(" AND INFLUENCE_ID IN (");
|
sql.append("'"+dgs[0]+"'");
|
for(int i=1;i<dgs.length;i++){
|
sql.append(",");
|
sql.append("'"+dgs[i]+"'");
|
}
|
sql.append(" )");
|
}
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
public List queryOrders(String flowId) {
|
List<Map> orders = orderService.queryLinkOrders(flowId);
|
return orders;
|
}
|
|
@Override
|
public Map queryRecord(String recordId) {
|
Map record = recordService.getRecordById(recordId);
|
if (null != record && record.size() > 0) {
|
List files = fileService.getFileList(recordId);
|
record.put("files", files);
|
}
|
return record;
|
}
|
|
@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 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 customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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 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 = getJxzSql(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.* ,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 = getJxzSql(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 getJxzSql(StringBuilder sqlpart, Map<String, String> params) {
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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(HttpServletRequest request) {
|
//初始化变量
|
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();
|
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 ");
|
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
|
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 Map queryincidentNodeCount(HttpServletRequest request) {
|
//初始化变量
|
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();
|
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 ");
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
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 = getOrderNodeSql(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.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 = getOrderNodeSql(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 getOrderNodeSql(StringBuilder sqlpart, Map<String, String> params) {
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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 ");
|
}
|
return sqlpart;
|
}
|
|
@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_TIMEOUT = 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.*,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_TIMEOUT = 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 customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", 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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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 queryincidentpoolCount(HttpServletRequest request) {
|
//初始化变量
|
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);
|
//查询该人员所属的项目
|
sql.append("SELECT COUNT(*) AS NUM,E.STATE FROM SC_WORKFLOW_INCIDENT E,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) ");
|
sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.* FROM SC_WORKFLOW_INCIDENT E,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 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 = '' )");
|
|
sqlall.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 = '' )");
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
sqlall.append(" AND E.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND E.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
|
sql.append(" GROUP BY E.STATE ");
|
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 int querymyincidentEndCount(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.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
|
|
sqlpart.append(" AND WB.WFSTATE = :state ");
|
params.put("state", params.get("type"));
|
sqlpart = getMyOrderEndSql(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 querymyincidentEndList(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 C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
sqlpart = getMyOrderEndSql(sqlpart, params);
|
sqlpart.append(" AND WB.WFSTATE = :state ");
|
params.put("state", params.get("type"));
|
sql.append(sqlpart);
|
sql.append(" GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
public StringBuilder getMyOrderEndSql(StringBuilder sqlpart, Map<String, String> params) {
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
params.put("customerId", customerId);
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", 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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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 querymyincidentNodeCount(Map<String, String> params) {
|
String type = params.get("type");
|
|
//初始化变量
|
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("flowstate", type);
|
paramMap.put("userId", params.get("userId"));
|
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 = :flowstate AND C.CURRENT_DEALER_ID = :userId 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 = :flowstate AND C.CURRENT_DEALER_ID = :userId AND A.ID = B.BUSINESS_ID ");
|
|
String customer_Id = params.get("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
|
|
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) || 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 querymyincidentOrderNodeCount(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 = :flowstate AND C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
|
params.put("flowstate", params.get("type"));
|
sqlpart = getmyodernodeSql(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 querymyincidentOrderNodeList(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 ,C.FLOWSTATE, ");
|
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 = :flowstate AND C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
|
params.put("flowstate", params.get("type"));
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
sqlpart = getmyodernodeSql(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 getmyodernodeSql(StringBuilder sqlpart, Map<String, String> params) {
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", 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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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 int querymyincidentTimeoutCount(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_TIMEOUT = 1 OR B.DEAL_TIMEOUT = 1 ) AND WB.CURRENT_DEALER_ID = :current_dealer_id ");
|
params.put("current_dealer_id", params.get("userId"));
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
params.put("customerId", customerId);
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", 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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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));
|
|
}
|
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 querymyincidentTimeoutList(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.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
|
sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB WHERE WB.BUSINESS_ID = B.ID ");
|
sqlpart.append(" AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT = 1 ) AND WB.CURRENT_DEALER_ID = :current_dealer_id ");
|
params.put("current_dealer_id", params.get("userId"));
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
|
|
String customerId = params.get("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
params.put("customerId", customerId);
|
}
|
String subCustomerId = params.get("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
params.put("subCustomerId", 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 source = params.get("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
params.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
sqlpart.append(" :type" + i);
|
sqlpart.append(",");
|
params.put("type" + i, sources[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));
|
|
}
|
sql.append(sqlpart);
|
sql.append(" GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
|
|
return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
|
}
|
|
@Override
|
public Map querymyincidentpoolCount(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
//初始化变量
|
int ywc = 0;
|
//服务台
|
int fwt = 0;
|
|
//一线工程师
|
int yxgcs = 0;
|
|
//二线工程师
|
int exgcs = 0;
|
|
//三线工程师
|
int sxgcs = 0;
|
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlall = new StringBuilder();
|
Map paramMap = new HashMap();
|
paramMap.put("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
sql.append("SELECT COUNT(*) AS NUM,E.STATE FROM SC_WORKFLOW_INCIDENT E, 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 E.ID = D.BUSINESS_ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) AND D.BUSINESSTYPE = :businessType ");
|
sqlall.append("SELECT COUNT(G.ID) FROM (SELECT E.ID FROM SC_WORKFLOW_INCIDENT E, 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 E.ID = D.BUSINESS_ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' ) AND D.BUSINESSTYPE = :businessType ");
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
sqlall.append(" AND E.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND E.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
sql.append(" GROUP BY E.STATE");
|
sqlall.append(" GROUP BY E.ID) G ");
|
paramMap.put("userId", userId);
|
paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT);
|
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) || 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(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 saveDispatchTask(HttpServletRequest request) {
|
String type = new String();
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
String id = request.getParameter("id");
|
String selectUser = request.getParameter("userMsg");
|
|
|
String dealer_type = "1";
|
String dealUserId = new String();
|
String dealUserName = new String();
|
String state = new String();
|
|
String node_template_id = Constants.KFRY;
|
|
if (StringUtil.notEmpty(selectUser)) {
|
String[] userMsg = selectUser.split("-");
|
if (userMsg.length == 4) {
|
dealer_type = userMsg[0];
|
String userType = userMsg[1];
|
dealUserId = userMsg[2];
|
dealUserName = userMsg[3];
|
if (userType.equals(Constants.ROLE_SERVICE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
node_template_id = Constants.KFRY;
|
} else if (userType.equals(Constants.ROLE_OPERATION)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC;
|
node_template_id = Constants.YCJSZC;
|
} else if (userType.equals(Constants.ROLE_FLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX;
|
node_template_id = Constants.YXCL;
|
} else if (userType.equals(Constants.ROLE_SLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX;
|
node_template_id = Constants.EXCL;
|
} else if (userType.equals(Constants.ROLE_TLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX;
|
node_template_id = Constants.SXCL;
|
}
|
}
|
}
|
|
|
if (StringUtil.notEmpty(dealUserId) && StringUtil.notEmpty(dealUserName)) {
|
//执行分派任务
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById();
|
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
List<Map> dealerList = new ArrayList<Map>();
|
if (dealer_type.equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
Map map = new HashMap();
|
map.put("USER_ID", dealUserId);
|
map.put("USER_NAME", dealUserName);
|
map.put("IS_ADMIN", "1");
|
|
dealerList.add(map);
|
|
entity.setDealerList(dealerList);
|
type = "2";
|
} else {
|
if (dealer_type.equals("2")) {
|
type = "3";
|
} else {
|
type = "1";
|
}
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(dealUserId);
|
entity.setRoleName(dealUserName);
|
|
//查询改组下面的所有人员信息
|
String selectUserSql = "SELECT B.ID AS USER_ID,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :roleId AND A.YHBH = B.ID";
|
dealerList = baseDao.queryForList(selectUserSql, new SqlParameter("roleId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
String groupusersql = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_ROLE_GROUP_USER A,GG_USER B WHERE A.USER_ID = B.ID AND A.GROUP_ID = :groupId AND A.STATE = 1 ";
|
dealerList = baseDao.queryForList(groupusersql, new SqlParameter("groupId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
resultMap.put("result", 2);
|
resultMap.put("nouser", 1);
|
return resultMap;
|
}
|
}
|
}
|
|
|
String bz = request.getParameter("bz");
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
|
finishEntity.setDeal_note(bz);
|
|
|
WORKFLOW_NODE node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
|
boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
|
if (canFinish) {
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
}
|
|
|
//更新事件状态
|
String updateIncidentSql = "UPDATE SC_WORKFLOW_INCIDENT SET STATE = :state WHERE ID = :incidentId ";
|
baseDao.execute(updateIncidentSql, new SqlParameter("state", state).addValue("incidentId", base.getBusiness_id()));
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
|
String flowId = base.getId();
|
|
//增加事件处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("指派任务:" + userName + "将事件指派给了" + dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(base.getId());
|
|
recordService.addRecord(record);
|
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS + "?orderId=" + base.getBusiness_id() + "&orderType=" + Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT;
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(base.getWfname())
|
.setContent(base.getWfname())
|
.setSender_id(userId)
|
.setSender_name(userName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL + "?flowId=" + base.getId() + "&orderId=" + base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(base.getOrder_code())
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
resultMap.put("result", 1);
|
//type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
|
}
|
|
SysInfoMsg msg = new SysInfoMsg(type, dealUserName, Constants.incidentNode.get(node_template_id));
|
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
@Override
|
public boolean saveLinkOrders(String flowId, String[] orderIds,HttpServletRequest request) {
|
orderService.saveLinkOrders(flowId, orderIds,request);
|
return true;
|
}
|
|
@Override
|
public boolean saveRecord(HttpServletRequest request) {
|
String id = StringUtil.getUUID();
|
String flowId = request.getParameter("flowId");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
long createTime = DateUtil.getCurrentDate14();
|
String content = request.getParameter("content");
|
String folderId = request.getParameter("folderId");
|
|
|
//增加事件处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("增加记录:" + content);
|
record.setDeal_user_id(createUserId);
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setId(id);
|
recordService.addRecord(record);
|
|
fileService.uploadFile(request, id, flowId, null, null, folderId, Constants.FILE_STATE_SHTG, null);
|
|
return true;
|
}
|
|
@Override
|
public Map serviceListTree(HttpServletRequest request) {
|
String sql = "SELECT * FROM SC_SERVCE_CATEGORY WHERE STATE = 1 ORDER BY LEVEL,SERIAL ";
|
|
|
Map slMap = new HashMap();
|
String sl = request.getParameter("sl");
|
if (StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
for (String s : sls) {
|
slMap.put(s, s);
|
}
|
}
|
|
List<Map> categoryList = baseDao.queryForList(sql);
|
|
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") && null == map.get("P_ID")) {
|
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")) {
|
if (null != map.get("P_ID") && yjgnCache.containsKey(map.get("P_ID"))) {
|
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") && ejgnCache.containsKey(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 boolean updateRecord(HttpServletRequest request) {
|
String recordId = request.getParameter("recordId");
|
String flowId = request.getParameter("flowId");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String create_user_id = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String create_user_name = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
long create_time = DateUtil.getCurrentDate14();
|
String content = request.getParameter("content");
|
String folderId = request.getParameter("folderId");
|
|
|
//修改处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("增加记录:" + content);
|
record.setId(recordId);
|
record.update();
|
fileService.uploadFile(request, recordId, flowId, null, null, folderId, Constants.FILE_STATE_SHTG, null);
|
|
return true;
|
}
|
|
@Override
|
public Map queryincidentTimeoutNodeCount(HttpServletRequest request) {
|
//初始化变量
|
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();
|
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_TIMEOUT = 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_TIMEOUT = 1 OR A.DEAL_TIMEOUT = 1 ) ");
|
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
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 Map saveEngineerIncident(HttpServletRequest request,
|
SC_WORKFLOW_INCIDENT sc_workflow_incident) {
|
Map resultMap = new HashMap();
|
resultMap.put("result", "2");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
|
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("->");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
|
//查询当前项目的服务台组的编号
|
String selectSql = "SELECT A.* FROM AC_ROLE A WHERE A.IDENTIFY = :roleid ";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("roleid", Constants.ROLE_SERVICE));
|
|
|
String roleId = ConvertUtil.obj2StrBlank(map.get("ID"));
|
String roleName = ConvertUtil.obj2StrBlank(map.get("ROLENAME"));
|
|
List<Map> dealerList = new ArrayList<Map>();
|
//查询改组下面的所有人员信息
|
String selectUser = "SELECT B.ID AS USER_ID,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :roleId AND A.YHBH = B.ID ";
|
dealerList = baseDao.queryForList(selectUser, new SqlParameter("roleId", roleId));
|
|
if (dealerList == null || dealerList.size() == 0) {
|
resultMap.put("result", 2);
|
resultMap.put("nouser", 1);
|
return resultMap;
|
}
|
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
String node_template_id = Constants.KFRY;
|
|
|
String order_code = workOrderCodeService.getIncidentOrderCode();
|
|
|
//响应时间为分钟
|
Long requestAnswerTime = sc_workflow_incident.getRequest_answer_time();
|
Long dealTime = sc_workflow_incident.getRequest_deal_time();
|
if (null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if (null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
//处理时间为小时
|
long createTime = DateUtil.getCurrentDate14();
|
|
long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime), 2);
|
long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime), 1);
|
|
sc_workflow_incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
|
.setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name).setCreate_user_id(userId).setCreate_user_name(userName)
|
.setCreate_time(createTime);
|
String id = StringUtil.getUUID();
|
sc_workflow_incident.setId(id).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(sc_workflow_incident.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime).setCreate_type(2);
|
sc_workflow_incident.insert();
|
|
String bz = request.getParameter("bz");
|
//启动流程
|
WORKFLOW_BASE base = workflowBusinessService.startIncidentWorkflow(id, bz);
|
|
|
//启动流程
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(roleId);
|
entity.setRoleName(roleName);
|
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
|
String hasMsg = request.getParameter("hasMsg");
|
/*if (StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_incident.getCustomer_id())
|
.setContact_name(sc_workflow_incident.getContact_name()).setContacts_type(sc_workflow_incident.getContact_phone()).setYwks(sc_workflow_incident.getKeshi())
|
.setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_incident.getSub_customer_id()).setSub_customer_name(sc_workflow_incident.getSub_customer_name());
|
project_contacts.insert();
|
}*/
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS + "?orderId=" + base.getBusiness_id() + "&orderType=" + Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT;
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(sc_workflow_incident.getName())
|
.setContent(sc_workflow_incident.getName())
|
.setSender_id(userId)
|
.setSender_name(userName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL + "?flowId=" + base.getId() + "&orderId=" + base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(order_code)
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
|
|
//所有的业务主键都是flowId(即流程主表的id)
|
String flowId = base.getId();
|
|
//提交工单时添加关联工单
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId, orderId,request);
|
|
//提交工单时上传文档附件
|
fileService.uploadFile(request, flowId, flowId, null, null, Constants.GG_FOLDERS_SJFOLDERS, Constants.FILE_STATE_SHTG, null);
|
|
//提交工单时添加关联设备
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId, deviceId);
|
|
|
//添加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("创建事件:" + userName + "创建了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
|
resultMap.put("result", "1");
|
SysInfoMsg msg = new SysInfoMsg("1", roleName, Constants.incidentNode.get(node_template_id));
|
resultMap.put("msg", msg);
|
resultMap.put("incidentId", id);
|
|
|
//增加该事件的SLA通知信息
|
addSlaNoticeMsg(id, createTime, sc_workflow_incident.getSla_id(), sc_workflow_incident.getCustomer_id(), sc_workflow_incident.getThird_category_id(), answerTimeoutTime, dealTimeoutTime, dealerList);
|
//一键报修
|
String repair = request.getParameter("repair");
|
if (!StringUtil.isEmpty(repair)) {
|
REPAIR_RECORD repairrecord = new REPAIR_RECORD();
|
repairrecord.setId(repair).setIncident_id(sc_workflow_incident.getId()).setStatus(3).update();
|
}
|
return resultMap;
|
}
|
@Override
|
public Map saveTrafficIncident(HttpServletRequest request,
|
SC_WORKFLOW_INCIDENT sc_workflow_incident) {
|
Map resultMap = new HashMap();
|
resultMap.put("result", "2");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
|
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("->");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
|
//查询当前项目的服务台组的编号
|
String selectSql = "SELECT A.* FROM AC_ROLE A WHERE A.IDENTIFY = :roleid ";
|
Map map = baseDao.queryForMap(selectSql, new SqlParameter("roleid", Constants.ROLE_SERVICE));
|
|
|
String roleId = ConvertUtil.obj2StrBlank(map.get("ID"));
|
String roleName = ConvertUtil.obj2StrBlank(map.get("ROLENAME"));
|
|
List<Map> dealerList = new ArrayList<Map>();
|
//查询改组下面的所有人员信息
|
String selectUser = "SELECT B.ID AS USER_ID,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :roleId AND A.YHBH = B.ID ";
|
dealerList = baseDao.queryForList(selectUser, new SqlParameter("roleId", roleId));
|
|
if (dealerList == null || dealerList.size() == 0) {
|
resultMap.put("result", 2);
|
resultMap.put("nouser", 1);
|
return resultMap;
|
}
|
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
String node_template_id = Constants.KFRY;
|
|
|
String order_code = workOrderCodeService.getIncidentOrderCode();
|
|
|
//响应时间为分钟
|
Long requestAnswerTime = sc_workflow_incident.getRequest_answer_time();
|
Long dealTime = sc_workflow_incident.getRequest_deal_time();
|
if (null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if (null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
//处理时间为小时
|
long createTime = DateUtil.getCurrentDate14();
|
|
long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime), 2);
|
long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime), 1);
|
|
sc_workflow_incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
|
.setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name).setCreate_user_id(userId).setCreate_user_name(userName)
|
.setCreate_time(createTime);
|
String id = StringUtil.getUUID();
|
sc_workflow_incident.setId(id).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(sc_workflow_incident.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime).setCreate_type(2);
|
sc_workflow_incident.insert();
|
Map paramMAp=new HashMap();
|
paramMAp.put("rid", StringUtil.getUUID());
|
paramMAp.put("tra_id", request.getParameter("tra_id"));
|
paramMAp.put("order_id", sc_workflow_incident.getId());
|
paramMAp.put("order_code", sc_workflow_incident.getOrder_code());
|
paramMAp.put("mobile", sc_workflow_incident.getContact_phone());
|
String sqlb="insert into traffic_ref(ID,TRA_ID,ORDER_ID,ORDER_CODE,MOBILE) values(:rid,:tra_id,:order_id,:order_code,:mobile)";
|
baseDao.execute(sqlb, paramMAp);
|
String sqlc="update traffic set order_state=1 where id=:tra_id";
|
baseDao.execute(sqlc, paramMAp);
|
String bz = request.getParameter("bz");
|
//启动流程
|
WORKFLOW_BASE base = workflowBusinessService.startIncidentWorkflow(id, bz);
|
|
|
//启动流程
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(roleId);
|
entity.setRoleName(roleName);
|
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
|
String hasMsg = request.getParameter("hasMsg");
|
/*if (StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_incident.getCustomer_id())
|
.setContact_name(sc_workflow_incident.getContact_name()).setContacts_type(sc_workflow_incident.getContact_phone()).setYwks(sc_workflow_incident.getKeshi())
|
.setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_incident.getSub_customer_id()).setSub_customer_name(sc_workflow_incident.getSub_customer_name());
|
project_contacts.insert();
|
}*/
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS + "?orderId=" + base.getBusiness_id() + "&orderType=" + Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT;
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(sc_workflow_incident.getName())
|
.setContent(sc_workflow_incident.getName())
|
.setSender_id(userId)
|
.setSender_name(userName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL + "?flowId=" + base.getId() + "&orderId=" + base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(order_code)
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
|
|
//所有的业务主键都是flowId(即流程主表的id)
|
String flowId = base.getId();
|
|
//提交工单时添加关联工单
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId, orderId,request);
|
|
//提交工单时上传文档附件
|
fileService.uploadFile(request, flowId, flowId, null, null, Constants.GG_FOLDERS_SJFOLDERS, Constants.FILE_STATE_SHTG, null);
|
|
//提交工单时添加关联设备
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId, deviceId);
|
|
|
//添加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("创建事件:" + userName + "创建了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
|
resultMap.put("result", "1");
|
SysInfoMsg msg = new SysInfoMsg("1", roleName, Constants.incidentNode.get(node_template_id));
|
resultMap.put("msg", msg);
|
resultMap.put("incidentId", id);
|
|
|
//增加该事件的SLA通知信息
|
addSlaNoticeMsg(id, createTime, sc_workflow_incident.getSla_id(), sc_workflow_incident.getCustomer_id(), sc_workflow_incident.getThird_category_id(), answerTimeoutTime, dealTimeoutTime, dealerList);
|
//一键报修
|
String repair = request.getParameter("repair");
|
if (!StringUtil.isEmpty(repair)) {
|
REPAIR_RECORD repairrecord = new REPAIR_RECORD();
|
repairrecord.setId(repair).setIncident_id(sc_workflow_incident.getId()).setStatus(3).update();
|
}
|
return resultMap;
|
}
|
@Override
|
public void saveEngineerIncident1(HttpServletRequest request, SC_WORKFLOW_INCIDENT_TEMPLATE template) {
|
|
//模板名称
|
String template_name = request.getParameter("template_name");
|
template.setTemplate_name(template_name);
|
//事件名称
|
String name = request.getParameter("name");
|
template.setName(name);
|
//事件描述
|
String descrip = request.getParameter("descrip");
|
template.setDescrip(descrip);
|
//项目名称 客户名称
|
String customer_id = request.getParameter("customer_id");
|
template.setCustomer_id(customer_id);
|
//项目编号 客户编号
|
String customer_name = request.getParameter("customer_name");
|
template.setCustomer_name(customer_name);
|
//下级单位名称 子项目
|
String sub_customer_id = request.getParameter("sub_customer_id");
|
template.setSub_customer_id(sub_customer_id);
|
//下级单位编号 子项目
|
String sub_customer_name = request.getParameter("sub_customer_name");
|
template.setSub_customer_name(sub_customer_name);
|
//联系方式
|
String contact_phone = request.getParameter("contact_phone");
|
template.setContact_phone(contact_phone);
|
//联系人
|
String contact_name = request.getParameter("contact_name");
|
template.setContact_name(contact_name);
|
//业务科室
|
String keshi = request.getParameter("keshi");
|
template.setKeshi(keshi);
|
//申报方式
|
String apply_type_id = request.getParameter("apply_type_id");
|
String apply_type_name = request.getParameter("apply_type_name");
|
template.setApply_type_id(apply_type_id);
|
template.setApply_type_name(apply_type_name);
|
//事件类型
|
String type_id = request.getParameter("type_id");
|
template.setType_id(type_id);
|
String type_name = request.getParameter("type_name");
|
template.setType_name(type_name);
|
//事件来源
|
String source_id = request.getParameter("source_id");
|
String source_name = request.getParameter("source_name");
|
template.setSource_id(source_id);
|
template.setSource_name(source_name);
|
//发生时间
|
String happen_time = request.getParameter("happen_time");
|
template.setHappen_time(ConvertUtil.obj2Long(happen_time));
|
//服务目录编号
|
String serivceListId = request.getParameter("serivceListId");
|
String[] serviceId = serivceListId.split("-");
|
template.setFirst_category_id(serviceId[0]);
|
template.setSecond_category_id(serviceId[1]);
|
template.setThird_category_id(serviceId[2]);
|
//服务目录名称
|
String serivceList = request.getParameter("serivceList");
|
String[] serviceName = serivceList.split("-");
|
template.setFirst_category_name(serviceName[0]);
|
template.setSecond_category_name(serviceName[1]);
|
template.setThird_category_name(serviceName[2]);
|
//事件优先级编号
|
String priority_id=request.getParameter("priority_id");
|
template.setPriority_id(priority_id);
|
//事件优先级编号
|
String priority_name=request.getParameter("priority_name");
|
template.setPriority_name(priority_name);
|
//事件影响度编号
|
String influence_id=request.getParameter("influence_id");
|
template.setInfluence_id(influence_id);
|
//事件影响度名称
|
String influence_name=request.getParameter("influence_name");
|
template.setPriority_name(influence_name);
|
//SLA编号
|
String sla_id = request.getParameter("sla_id");
|
template.setSla_id(sla_id);
|
//SLA名称
|
String sla_name = request.getParameter("sla_name");
|
template.setSla_name(sla_name);
|
//要求响应时间
|
String request_answer_time = request.getParameter("request_answer_time");
|
template.setRequest_answer_time(ConvertUtil.obj2Long(request_answer_time));
|
//要求处理时间
|
String request_deal_time = request.getParameter("request_deal_time");
|
template.setRequest_deal_time(ConvertUtil.obj2Long(request_deal_time));
|
//创建人id
|
String temp_user_id = WebUtil.getLoginedUserId(request);
|
template.setCreate_user_id(temp_user_id);
|
//创建人姓名
|
String creater = WebUtil.getUserName(request);
|
template.setCreate_user_name(creater);
|
//创建时间
|
template.setCreate_time(DateUtil.getCurrentDate14());
|
|
String id = request.getParameter("ID");
|
if (StringUtil.isNotBlank(id)) {
|
template.setId(id);
|
}
|
template.insertOrUpdate();
|
}
|
|
@Override
|
public Map saveIncident(HttpServletRequest request,
|
SC_WORKFLOW_INCIDENT sc_workflow_incident) {
|
String dtype = new String();
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
System.out.println("selectUser-------------->" + request.getParameter("selectUser"));
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
|
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
String currentUserId = userId;
|
String currentUserName = userName;
|
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("->");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
String dealer_type = "1";
|
String dealUserId = userId;
|
String dealUserName = userName;
|
|
String type = request.getParameter("type");
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
String node_template_id = Constants.KFRY;
|
if (type.equals("1")) {
|
String selectUser = request.getParameter("selectUser");
|
if (StringUtil.notEmpty(selectUser)) {
|
String[] userMsg = selectUser.split("-");
|
if (userMsg.length == 4) {
|
dealer_type = userMsg[0];
|
String userType = userMsg[1];
|
dealUserId = userMsg[2];
|
dealUserName = userMsg[3];
|
if (userType.equals(Constants.ROLE_SERVICE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
node_template_id = Constants.KFRY;
|
} else if (userType.equals(Constants.ROLE_OPERATION)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC;
|
node_template_id = Constants.YCJSZC;
|
} else if (userType.equals(Constants.ROLE_FLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX;
|
node_template_id = Constants.YXCL;
|
} else if (userType.equals(Constants.ROLE_SLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX;
|
node_template_id = Constants.EXCL;
|
} else if (userType.equals(Constants.ROLE_TLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX;
|
node_template_id = Constants.SXCL;
|
}
|
}
|
}
|
|
}
|
|
String order_code = workOrderCodeService.getIncidentOrderCode();
|
|
//响应时间为分钟
|
Long requestAnswerTime = sc_workflow_incident.getRequest_answer_time();
|
Long dealTime = sc_workflow_incident.getRequest_deal_time();
|
if (null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if (null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
//处理时间为小时
|
long createTime = DateUtil.getCurrentDate14();
|
|
long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime), 2);
|
long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime), 1);
|
|
sc_workflow_incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
|
.setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name).setCreate_user_id(userId).setCreate_user_name(userName)
|
.setCreate_time(createTime);
|
String id = StringUtil.getUUID();
|
sc_workflow_incident.setId(id).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(sc_workflow_incident.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime).setCreate_type(1);
|
sc_workflow_incident.insert();
|
Map paramMAp=new HashMap();
|
paramMAp.put("rid", StringUtil.getUUID());
|
paramMAp.put("tra_id", request.getParameter("tra_id"));
|
paramMAp.put("order_id", sc_workflow_incident.getId());
|
paramMAp.put("order_code", sc_workflow_incident.getOrder_code());
|
paramMAp.put("mobile", sc_workflow_incident.getContact_phone());
|
if(StringUtil.notEmpty(request.getParameter("tra_id"))){
|
String sqlb="insert into traffic_ref(ID,TRA_ID,ORDER_ID,ORDER_CODE,MOBILE) values(:rid,:tra_id,:order_id,:order_code,:mobile)";
|
baseDao.execute(sqlb, paramMAp);
|
String sqlc="update traffic set order_state=1 where id=:tra_id";
|
baseDao.execute(sqlc, paramMAp);
|
}
|
String bz = request.getParameter("bz");
|
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
List<Map> dealerList = new ArrayList<Map>();
|
if (dealer_type.equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
Map map = new HashMap();
|
map.put("USER_ID", dealUserId);
|
map.put("USER_NAME", dealUserName);
|
map.put("IS_ADMIN", "1");
|
|
dealerList.add(map);
|
dtype = "2";
|
} else {
|
if (dealer_type.equals("2")) {
|
dtype = "3";
|
} else {
|
dtype = "1";
|
}
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(dealUserId);
|
entity.setRoleName(dealUserName);
|
|
//查询改角色/分组下面的所有人员信息
|
String usersql = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
|
dealerList = baseDao.queryForList(usersql, new SqlParameter("groupId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
String groupusersql = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_ROLE_GROUP_USER A,GG_USER B WHERE A.USER_ID = B.ID AND A.GROUP_ID = :groupId AND A.STATE = 1 ";
|
dealerList = baseDao.queryForList(groupusersql, new SqlParameter("groupId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
resultMap.put("result", 2);
|
resultMap.put("nouser", 1);
|
return resultMap;
|
}
|
}
|
|
}
|
|
//启动流程
|
WORKFLOW_BASE base = workflowBusinessService.startIncidentWorkflow(id, bz);
|
|
entity.setDealerList(dealerList);
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
|
|
String hasMsg = request.getParameter("hasMsg");
|
if (StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_incident.getCustomer_id())
|
.setContact_name(sc_workflow_incident.getContact_name()).setContacts_type(sc_workflow_incident.getContact_phone()).setYwks(sc_workflow_incident.getKeshi())
|
.setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_incident.getSub_customer_id()).setSub_customer_name(sc_workflow_incident.getSub_customer_name());
|
project_contacts.insert();
|
}
|
|
//dtype = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS + "?orderId=" + base.getBusiness_id() + "&orderType=" + Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT;
|
//System.out.println("wxUrl------------------------>"+wxUrl);
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(sc_workflow_incident.getName())
|
.setContent(sc_workflow_incident.getName())
|
.setSender_id(currentUserId)
|
.setSender_name(currentUserName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL + "?flowId=" + base.getId() + "&orderId=" + base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(order_code)
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
|
//所有的业务主键都是flowId(即流程主表的id)
|
String flowId = base.getId();
|
|
|
//提交工单时添加关联工单
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId, orderId,request);
|
|
//提交工单时上传文档附件
|
fileService.uploadFile(request, flowId, flowId, null, null, Constants.GG_FOLDERS_SJFOLDERS, Constants.FILE_STATE_SHTG, null);
|
|
//提交工单时添加关联设备
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId, deviceId);
|
|
|
//添加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("创建事件:" + userName + "创建了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
|
SysInfoMsg msg = new SysInfoMsg(dtype, dealUserName, Constants.incidentNode.get(node_template_id));
|
resultMap.put("msg", msg);
|
resultMap.put("incidentId", id);
|
resultMap.put("result", 1);
|
|
|
//增加该事件的SLA通知信息
|
addSlaNoticeMsg(id, createTime, sc_workflow_incident.getSla_id(), sc_workflow_incident.getCustomer_id(), sc_workflow_incident.getThird_category_id(), answerTimeoutTime, dealTimeoutTime, dealerList);
|
|
return resultMap;
|
}
|
@Override
|
public Map saveIncidentDesk(HttpServletRequest request,
|
SC_WORKFLOW_INCIDENT sc_workflow_incident) {
|
String dtype = new String();
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
System.out.println("selectUser-------------->" + request.getParameter("selectUser"));
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
|
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
String currentUserId = userId;
|
String currentUserName = userName;
|
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("-");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
String dealer_type = "1";
|
String dealUserId = userId;
|
String dealUserName = userName;
|
|
String type = request.getParameter("type");
|
String state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
String node_template_id = Constants.KFRY;
|
if (type.equals("1")) {
|
String selectUser = request.getParameter("selectUser");
|
if (StringUtil.notEmpty(selectUser)) {
|
String[] userMsg = selectUser.split("-");
|
if (userMsg.length == 4) {
|
dealer_type = userMsg[0];
|
String userType = userMsg[1];
|
dealUserId = userMsg[2];
|
dealUserName = userMsg[3];
|
if (userType.equals(Constants.ROLE_SERVICE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
|
node_template_id = Constants.KFRY;
|
} else if (userType.equals(Constants.ROLE_OPERATION)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYCJSZC;
|
node_template_id = Constants.YCJSZC;
|
} else if (userType.equals(Constants.ROLE_FLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDYX;
|
node_template_id = Constants.YXCL;
|
} else if (userType.equals(Constants.ROLE_SLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDEX;
|
node_template_id = Constants.EXCL;
|
} else if (userType.equals(Constants.ROLE_TLINE)) {
|
state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDSX;
|
node_template_id = Constants.SXCL;
|
}
|
}
|
}
|
|
}
|
|
String order_code = workOrderCodeService.getIncidentOrderCode();
|
|
//响应时间为分钟
|
Long requestAnswerTime = sc_workflow_incident.getRequest_answer_time();
|
Long dealTime = sc_workflow_incident.getRequest_deal_time();
|
if (null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if (null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
//处理时间为小时
|
long createTime = DateUtil.getCurrentDate14();
|
|
long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime), 2);
|
long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime), 1);
|
|
sc_workflow_incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
|
.setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name).setCreate_user_id(userId).setCreate_user_name(userName)
|
.setCreate_time(createTime);
|
String id = StringUtil.getUUID();
|
sc_workflow_incident.setId(id).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(sc_workflow_incident.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime).setCreate_type(1);
|
sc_workflow_incident.insert();
|
|
String bz = request.getParameter("bz");
|
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
List<Map> dealerList = new ArrayList<Map>();
|
if (dealer_type.equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
Map map = new HashMap();
|
map.put("USER_ID", dealUserId);
|
map.put("USER_NAME", dealUserName);
|
map.put("IS_ADMIN", "1");
|
|
dealerList.add(map);
|
dtype = "2";
|
} else {
|
if (dealer_type.equals("2")) {
|
dtype = "3";
|
} else {
|
dtype = "1";
|
}
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(dealUserId);
|
entity.setRoleName(dealUserName);
|
|
//查询改角色/分组下面的所有人员信息
|
String usersql = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
|
dealerList = baseDao.queryForList(usersql, new SqlParameter("groupId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
String groupusersql = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_ROLE_GROUP_USER A,GG_USER B WHERE A.USER_ID = B.ID AND A.GROUP_ID = :groupId AND A.STATE = 1 ";
|
dealerList = baseDao.queryForList(groupusersql, new SqlParameter("groupId", dealUserId));
|
if (dealerList == null || dealerList.size() == 0) {
|
resultMap.put("result", 2);
|
resultMap.put("nouser", 1);
|
return resultMap;
|
}
|
}
|
|
}
|
|
//启动流程
|
WORKFLOW_BASE base = workflowBusinessService.startIncidentWorkflow(id, bz);
|
|
entity.setDealerList(dealerList);
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
|
|
String hasMsg = request.getParameter("hasMsg");
|
if (StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_incident.getCustomer_id())
|
.setContact_name(sc_workflow_incident.getContact_name()).setContacts_type(sc_workflow_incident.getContact_phone()).setYwks(sc_workflow_incident.getKeshi())
|
.setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_incident.getSub_customer_id()).setSub_customer_name(sc_workflow_incident.getSub_customer_name());
|
project_contacts.insert();
|
}
|
|
//dtype = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS + "?orderId=" + base.getBusiness_id() + "&orderType=" + Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT;
|
//System.out.println("wxUrl------------------------>"+wxUrl);
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(sc_workflow_incident.getName())
|
.setContent(sc_workflow_incident.getName())
|
.setSender_id(currentUserId)
|
.setSender_name(currentUserName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL + "?flowId=" + base.getId() + "&orderId=" + base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(order_code)
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
|
//所有的业务主键都是flowId(即流程主表的id)
|
String flowId = base.getId();
|
|
|
//提交工单时添加关联工单
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId, orderId,request);
|
|
//提交工单时上传文档附件
|
fileService.uploadFile(request, flowId, flowId, null, null, Constants.GG_FOLDERS_SJFOLDERS, Constants.FILE_STATE_SHTG, null);
|
|
//提交工单时添加关联设备
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId, deviceId);
|
|
|
//添加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("创建事件:" + userName + "创建了事件");
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
|
SysInfoMsg msg = new SysInfoMsg(dtype, dealUserName, Constants.incidentNode.get(node_template_id));
|
resultMap.put("msg", msg);
|
resultMap.put("incidentId", id);
|
resultMap.put("result", 1);
|
|
|
//增加该事件的SLA通知信息
|
addSlaNoticeMsg(id, createTime, sc_workflow_incident.getSla_id(), sc_workflow_incident.getCustomer_id(), sc_workflow_incident.getThird_category_id(), answerTimeoutTime, dealTimeoutTime, dealerList);
|
|
return resultMap;
|
}
|
|
|
private void addSlaNoticeMsg(String id, long createTime, String levelId, String customer_id, String third_category_id, long answerTimeoutTime, long dealTimeoutTime, List<Map> dealLists) {
|
SLAEntity slaEntity = slaProjectService.getLevelMsg(customer_id, third_category_id);
|
if (null != slaEntity) {
|
Map<String, SLALevel> levelMap = slaEntity.getLevelMap();
|
if (null != levelMap && levelMap.size() > 0) {
|
SLALevel level = levelMap.get(levelId);
|
if (null != level) {
|
String insertSql = "INSERT INTO SC_INCIDENT_SLA_NOTICE (ID,INCIDENT_ID,TYPE,NOTICE_TIME,STATUS,NOTICE_USERS,OUT_TIME) VALUES (:id,:incidentId,:type,:noticeTime,1,:noticeUsers,:out_time)";
|
List<SqlParameter> params = new ArrayList<SqlParameter>();
|
|
String responseTime = level.getResponseTime();
|
String noticeUsers = level.getUserId();
|
if (StringUtil.notEmpty(responseTime)) {
|
//响应时间为分钟,将其转化为毫秒
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("incidentId", id);
|
sqlParameter.put("type", 1);
|
sqlParameter.put("noticeTime", answerTimeoutTime);
|
sqlParameter.put("noticeUsers", noticeUsers);
|
sqlParameter.put("out_time", "");
|
params.add(sqlParameter);
|
|
List<NoticeUser> noticeUser1 = level.getResponseNotices();
|
if (null != noticeUser1 && noticeUser1.size() > 0) {
|
for (NoticeUser noticeUser : noticeUser1) {
|
String overTime = noticeUser.getOverTime();
|
if (StringUtil.notEmpty(overTime)) {
|
SqlParameter sqlParameter1 = new SqlParameter();
|
sqlParameter1.put("id", StringUtil.getUUID());
|
sqlParameter1.put("incidentId", id);
|
sqlParameter1.put("type", 1);
|
|
sqlParameter1.put("noticeTime", DateUtil.getTimeAdd(answerTimeoutTime, ConvertUtil.obj2Int(overTime), 2));
|
|
StringBuffer bufferUser = new StringBuffer();
|
if (null != dealLists && dealLists.size() > 0) {
|
for (Map map : dealLists) {
|
String user_id = ConvertUtil.obj2StrBlank(map.get("USER_ID"));
|
bufferUser.append(user_id);
|
bufferUser.append(",");
|
}
|
bufferUser.deleteCharAt(bufferUser.lastIndexOf(","));
|
}
|
|
System.out.println("bufferUser---------->" + bufferUser);
|
sqlParameter1.put("noticeUsers", noticeUser.getUserId() + bufferUser.toString());
|
sqlParameter1.put("out_time", overTime);
|
params.add(sqlParameter1);
|
}
|
}
|
}
|
|
|
}
|
|
String resolveTime = level.getResolveTime();
|
if (StringUtil.notEmpty(resolveTime)) {
|
//解决时间为小时,将其转化为毫秒
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("incidentId", id);
|
sqlParameter.put("type", 2);
|
sqlParameter.put("noticeTime", dealTimeoutTime);
|
sqlParameter.put("noticeUsers", noticeUsers);
|
sqlParameter.put("out_time", "");
|
params.add(sqlParameter);
|
|
|
List<NoticeUser> noticeUser2 = level.getResolveNotices();
|
if (null != noticeUser2 && noticeUser2.size() > 0) {
|
for (NoticeUser noticeUser : noticeUser2) {
|
String overTime = noticeUser.getOverTime();
|
if (StringUtil.notEmpty(overTime)) {
|
SqlParameter sqlParameter1 = new SqlParameter();
|
sqlParameter1.put("id", StringUtil.getUUID());
|
sqlParameter1.put("incidentId", id);
|
sqlParameter1.put("type", 2);
|
sqlParameter1.put("noticeTime", DateUtil.getTimeAdd(dealTimeoutTime, ConvertUtil.obj2Int(overTime), 2));
|
sqlParameter1.put("noticeUsers", noticeUser.getUserId());
|
sqlParameter1.put("out_time", overTime);
|
params.add(sqlParameter1);
|
}
|
}
|
}
|
}
|
|
|
if (params.size() > 0) {
|
baseDao.executeBatch(insertSql, params);
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
}
|
|
@Override
|
public String updateIncidentMsg(HttpServletRequest request,
|
SC_WORKFLOW_INCIDENT incident) {
|
SC_WORKFLOW_INCIDENT sc_workflow_incident_old= new SC_WORKFLOW_INCIDENT(incident.getId()).getInstanceById();
|
String name_old= sc_workflow_incident_old.getName();
|
String descrip_old= sc_workflow_incident_old.getDescrip();
|
String name=request.getParameter("name");
|
String descrip=request.getParameter("descrip");
|
//当事件名称和事件备注改变时同时改变流程表里的信息
|
if(!name_old.equals(name) || !descrip.equals(descrip_old)){
|
String sql="update WORKFLOW_BASE set wfname=:name, wfnote=:descrip where BUSINESS_ID=:business_id";
|
Map map=new HashMap();
|
map.put("name",name);
|
map.put("descrip",descrip);
|
map.put("business_id",incident.getId());
|
baseDao.execute(sql,map);
|
}
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
if (StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("-");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
|
//响应时间为分钟
|
Long requestAnswerTime = incident.getRequest_answer_time();
|
//处理时间为小时
|
Long dealTime = incident.getRequest_deal_time();
|
if (null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if (null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
String selectCreateTimeSql = "SELECT CREATE_TIME,ANSWER_TIME,RESOLVE_TIME FROM SC_WORKFLOW_INCIDENT WHERE ID = :incidentId";
|
Map m = baseDao.queryForMap(selectCreateTimeSql, new SqlParameter("incidentId", incident.getId()));
|
long createTime = ConvertUtil.obj2Long(m.get("CREATE_TIME"));
|
long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime), 2);
|
long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime), 1);
|
|
long currentTime = DateUtil.getCurrentDate14();
|
//判断当前是否已经响应超时
|
String answer_time = ConvertUtil.obj2StrBlank(m.get("ANSWER_TIME"));
|
if (StringUtil.notEmpty(answer_time)) {
|
if (ConvertUtil.obj2Long(answer_time) > answerTimeoutTime) {
|
incident.setAnswer_timeout(1);
|
}
|
} else {
|
if (currentTime > answerTimeoutTime) {
|
incident.setAnswer_timeout(1);
|
}
|
}
|
|
//判断当前是否已经处理超时
|
String resolve_time = ConvertUtil.obj2StrBlank(m.get("RESOLVE_TIME"));
|
if (StringUtil.notEmpty(resolve_time)) {
|
if (ConvertUtil.obj2Long(resolve_time) > dealTimeoutTime) {
|
incident.setDeal_timeout(1);
|
}
|
} else {
|
if (currentTime > dealTimeoutTime) {
|
incident.setDeal_timeout(1);
|
}
|
}
|
|
incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id).setSecond_category_name(second_category_name)
|
.setThird_category_id(third_category_id).setThird_category_name(third_category_name).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout_time(dealTimeoutTime);
|
|
incident.update();
|
String id = incident.getFlow_id();
|
//定义参数Map
|
fileService.uploadFile(request, id, id, null, null, Constants.GG_FOLDERS_SJFOLDERS, Constants.FILE_STATE_SHTG, null);
|
return "1";
|
}
|
|
@Override
|
public List<Map> getCustomerList() {
|
String sql = "SELECT * FROM SC_PARTNER_CUSTOMER_INFO WHERE CUSTOMER_STATE = 1 ";
|
return baseDao.queryForList(sql);
|
}
|
|
@Override
|
public List<Map> getFlueNode(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String customer_id = request.getParameter("customer_id");
|
String currentNode = new String();
|
if (StringUtil.notEmpty(flowId)) {
|
Map node = getCurrentNode(flowId);
|
currentNode = ConvertUtil.obj2StrBlank(node.get("NODE_TEMPLATE_ID"));
|
} else {
|
currentNode = Constants.KFRY;
|
}
|
|
//查询当前节点能发送的节点
|
String selectSql = "SELECT * FROM SC_WORKFLOW_INCIDENT_FLOWRULE WHERE PROJECT_ID = :customer_id";
|
List<Map> list = baseDao.queryForList(selectSql, new SqlParameter("customer_id", customer_id));
|
Map prom = new HashMap();
|
if (null != list && list.size() > 0) {
|
prom = list.get(0);
|
String json = ConvertUtil.obj2StrBlank(prom.get(Constants.incidentNodeColunm.get(currentNode)));
|
List<Map> nodes = JsonUtil.json2List(json);
|
return nodes;
|
}
|
return new ArrayList<Map>();
|
}
|
|
@Override
|
public List<Map> getGroupUser(HttpServletRequest request) {
|
String customer_id = request.getParameter("customer_id");
|
SqlParameter param = new SqlParameter();
|
param.put("customer_id", customer_id);
|
StringBuilder sql = new StringBuilder();
|
List<Map> cateList = new ArrayList<Map>();
|
List<Map> userList = new ArrayList<Map>();
|
|
sql.setLength(0);
|
sql.append(" select g.ID,g.ROLENAME from ");
|
sql.append(" ( ");
|
sql.append(" select JSBH from AC_USER_REF_ROLE GROUP BY JSBH ");
|
sql.append(" ) u inner join AC_ROLE g ");
|
sql.append(" on g.ID = u.JSBH ");
|
sql.append(" where g.state=1 ");
|
if("3".equals(request.getParameter("type"))){
|
sql.append(" and g.IDENTIFY=:IDENTIFY ");
|
}
|
param.put("IDENTIFY", Constants.ROLE_KNOW);
|
cateList = baseDao.queryForList(sql.toString(), param);
|
|
sql.setLength(0);
|
sql.append(" select g.ID,g.ROLENAME,u.YHBH AS USER_ID,u.ZSXM AS USER_NAME from ");
|
sql.append(" ( ");
|
sql.append(" select A.JSBH,A.YHBH,B.ZSXM from AC_USER_REF_ROLE A,GG_USER B ");
|
sql.append(" where B.ZT=1 AND A.YHBH = B.ID ");
|
sql.append(" ) u inner join AC_ROLE g ");
|
sql.append(" on g.ID = u.JSBH ");
|
sql.append(" where g.state=1 ");
|
userList = baseDao.queryForList(sql.toString(), param);
|
List<Map> resList = new ArrayList<Map>();
|
for (Map cateMap : cateList) {
|
List<Map> tempList = new ArrayList<Map>();
|
Map tempMap = new HashMap();
|
tempMap.put("name", cateMap.get("ROLENAME").toString());
|
tempMap.put("id", cateMap.get("ID"));
|
for (Map userMap : userList) {
|
if (cateMap.get("ID").toString().equals(userMap.get("ID").toString())) {
|
tempList.add(userMap);
|
}
|
}
|
tempMap.put("dataList", tempList);
|
resList.add(tempMap);
|
}
|
return resList;
|
}
|
|
public Map getCurrentNode(String flowId) {
|
String selectSql = "SELECT B.NODE_TEMPLATE_ID FROM WORKFLOW_BASE A,WORKFLOW_NODE B WHERE A.CURRENT_NODE_ID = B.ID AND A.ID = :id";
|
return baseDao.queryForMap(selectSql, new SqlParameter("id", flowId));
|
}
|
|
@Override
|
public Map querymyincidentTimeoutNodeCount(HttpServletRequest request) {
|
//初始化变量
|
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("current_dealer_id", WebUtil.getLoginedUserId(request));
|
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_TIMEOUT = 1 OR A.DEAL_TIMEOUT = 1 ) AND B.CURRENT_DEALER_ID = :current_dealer_id ");
|
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_TIMEOUT = 1 OR A.DEAL_TIMEOUT = 1 ) AND B.CURRENT_DEALER_ID = :current_dealer_id ");
|
String customer_Id = request.getParameter("customerId");
|
if (!StringUtil.isEmpty(customer_Id)) {
|
selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
|
paramMap.put("customer_Id", customer_Id);
|
}
|
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 Map getOrderNum(Map<String, String> params) {
|
String type = params.get("type");
|
//事件池
|
int poolcount = 0;
|
//事件待响应
|
int dxycount = 0;
|
//事件已超时
|
int ycscount = 0;
|
//事件进行中
|
int jxzcount = 0;
|
if ("1".equals(type)) {
|
poolcount = incidentpoolCount(params);
|
|
dxycount = queryincidentOrderNodeCount(params);
|
|
jxzcount = queryincidentJxzCount(params);
|
|
ycscount = queryincidentTimeoutCount(params);
|
} else {
|
poolcount = myincidentpoolCount(params);
|
params.put("type", "1");
|
dxycount = querymyincidentOrderNodeCount(params);
|
params.put("type", "2");
|
jxzcount = querymyincidentOrderNodeCount(params);
|
|
ycscount = querymyincidentTimeoutCount(params);
|
}
|
|
Map map = new HashMap();
|
map.put("poolcount", poolcount);
|
map.put("dxycount", dxycount);
|
map.put("jxzcount", jxzcount);
|
map.put("ycscount", ycscount);
|
return map;
|
}
|
|
@Override
|
public Map getLastMonthIncidentEffect(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
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(), params);
|
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 getLastMonthIncidentCount(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
String userId = params.get("userId");
|
StringBuilder builder = new StringBuilder();
|
params.put("startTime", startDay + "000000");
|
params.put("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(), params);
|
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 Map getLastMonthIncidentLv(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
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(), params);
|
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 where state=1 order by SERIAL ");
|
List<Map> catelist = baseDao.queryForList(builder.toString(), params);
|
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(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
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(), params);
|
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 getLastMonthIncidentServer(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
String userId = params.get("userId");
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
StringBuilder builder = new StringBuilder();
|
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(), params);
|
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(), params);
|
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 String getCustomerName(String customerid, String subCustomerId) {
|
String subCustomerName = new String();
|
if (StringUtil.notEmpty(customerid)) {
|
if (StringUtil.notEmpty(subCustomerId)) {
|
if (customerid.equals(subCustomerId)) {
|
SC_PARTNER_CUSTOMER_INFO info = new SC_PARTNER_CUSTOMER_INFO(customerid).getInstanceById();
|
subCustomerName = info.getCustomer_name();
|
} else {
|
SC_PARTNER_CUSTOMER_SUB subInfo = new SC_PARTNER_CUSTOMER_SUB(subCustomerId).getInstanceById();
|
subCustomerName = subInfo.getCustomer_name();
|
}
|
} else {
|
SC_PARTNER_CUSTOMER_INFO info = new SC_PARTNER_CUSTOMER_INFO(customerid).getInstanceById();
|
subCustomerName = info.getCustomer_name();
|
}
|
|
}
|
|
return subCustomerName;
|
}
|
|
@Override
|
public Map getemplate(String id) {
|
Map map=baseDao.queryForMap("select * from sc_workflow_incident_template where id=:id",new SqlParameter("id",id));
|
if(map!=null){
|
|
Map param=new HashMap();
|
param.put("cid", map.get("CUSTOMER_ID"));
|
param.put("cate_id", map.get("THIRD_CATEGORY_ID"));
|
param.put("sub_customer_id", map.get("SUB_CUSTOMER_ID"));
|
param.put("customer_id", map.get("CUSTOMER_ID"));
|
boolean ifxmjy=true;
|
String sql_xm="SELECT CUSTOMER_STATE FROM SC_PARTNER_CUSTOMER_INFO WHERE id =:customer_id or ID=:sub_customer_id";
|
String customer_state=baseDao.queryForString(sql_xm,param);
|
if(StringUtil.isNotBlank(customer_state)) {
|
if (customer_state.equals("2")) {
|
ifxmjy = false;
|
map.put("customer_id", "");
|
map.put("customer_name", "");
|
map.put("sub_customer_id", "");
|
map.put("sub_customer_name", "");
|
map.put("priority_name", "");
|
map.put("priority_id", "");
|
map.put("influence_name", "");
|
map.put("influence_id", "");
|
map.put("sla_name", "");
|
map.put("sla_id", "");
|
map.put("request_answer_time", "");
|
map.put("request_deal_time", "");
|
map.put("first_category_name", "");
|
map.put("second_category_name", "");
|
map.put("third_category_name", "");
|
map.put("first_category_id", "");
|
map.put("second_category_id", "");
|
map.put("third_category_id", "");
|
map.put("xm", 1);
|
}
|
}
|
|
String sql_sub_xm=" SELECT DEL_FLAG FROM SC_PARTNER_CUSTOMER_SUB where id=:sub_customer_id";
|
String customer_state_SUB=baseDao.queryForString(sql_sub_xm,param);
|
if(StringUtil.isNotBlank(customer_state_SUB)) {
|
if (customer_state_SUB.equals("2")) {
|
ifxmjy = false;
|
map.put("sub_customer_id", "");
|
map.put("sub_customer_name", "");
|
map.put("customer_id", "");
|
map.put("customer_name", "");
|
map.put("priority_name", "");
|
map.put("priority_id", "");
|
map.put("influence_name", "");
|
map.put("influence_id", "");
|
map.put("sla_name", "");
|
map.put("sla_id", "");
|
map.put("request_answer_time", "");
|
map.put("request_deal_time", "");
|
map.put("first_category_name", "");
|
map.put("second_category_name", "");
|
map.put("third_category_name", "");
|
map.put("first_category_id", "");
|
map.put("second_category_id", "");
|
map.put("third_category_id", "");
|
map.put("xm", 1);
|
}
|
}
|
|
if(ifxmjy) {
|
String sql = "select A.ID,A.STATE ASTATE,B.STATE BSTATE from SC_SERVCE_CATEGORY_CUSTOMER A,SC_SERVCE_CATEGORY B WHERE A.CATEGORY_ID=B.ID AND A.CUSTOMER_ID=:cid AND A.CATEGORY_ID=:cate_id";
|
Map info = baseDao.queryForMap(sql, param);
|
String astate = ConvertUtil.obj2StrBlank(info.get("ASTATE"));
|
String bstate = ConvertUtil.obj2StrBlank(info.get("BSTATE"));
|
if (astate.equals("2") || bstate.equals("2")) {
|
map.put("first_category_name", "");
|
map.put("second_category_name", "");
|
map.put("third_category_name", "");
|
map.put("first_category_id", "");
|
map.put("second_category_id", "");
|
map.put("third_category_id", "");
|
}
|
}
|
}
|
|
return map;
|
|
}
|
|
@Override
|
public void doDelTemplate(String id) {
|
baseDao.execute("delete from sc_workflow_incident_template where id=:id",new SqlParameter("id",id));
|
}
|
|
@Override
|
public Map users(String threeServiceListId, String flowId, String customerId) {
|
Map cacheMap = new HashMap();
|
|
String currentNode = new String();
|
if (StringUtil.notEmpty(flowId)) {
|
Map node = getCurrentNode(flowId);
|
currentNode = ConvertUtil.obj2StrBlank(node.get("NODE_TEMPLATE_ID"));
|
} else {
|
currentNode = Constants.KFRY;
|
}
|
|
//查询当前节点能发送的节点
|
String selectSql = "SELECT * FROM SC_WORKFLOW_INCIDENT_FLOWRULE WHERE PROJECT_ID = :projectId";
|
List<Map> list = baseDao.queryForList(selectSql, new SqlParameter("projectId", customerId));
|
if (null != list && list.size() > 0) {
|
Map m = list.get(0);
|
String json = ConvertUtil.obj2StrBlank(m.get(Constants.incidentNodeColunm.get(currentNode)));
|
List<Map> nodes = JsonUtil.json2List(json);
|
if (null != nodes && nodes.size() > 0) {
|
for (Map n : nodes) {
|
cacheMap.put(n.get("nodeId"), n);
|
}
|
}
|
} else {
|
String gsSql = "SELECT * FROM SC_WORKFLOW_INCIDENT_FLOWRULE WHERE (PROJECT_ID IS NULL OR PROJECT_ID = '')";
|
List<Map> gslist = baseDao.queryForList(gsSql);
|
if (null != gslist && gslist.size() > 0) {
|
Map m = gslist.get(0);
|
String json = ConvertUtil.obj2StrBlank(m.get(Constants.incidentNodeColunm.get(currentNode)));
|
List<Map> nodes = JsonUtil.json2List(json);
|
if (null != nodes && nodes.size() > 0) {
|
for (Map n : nodes) {
|
cacheMap.put(n.get("nodeId"), n);
|
}
|
}
|
}
|
}
|
|
|
//查询该客户该项目对应的服务目录选择的服务目录人员
|
List<Map> serviceUsers = new ArrayList<Map>();
|
SC_SERVCE_CATEGORY cate = new SC_SERVCE_CATEGORY(threeServiceListId).getInstanceById();
|
Map serviceUserMap = slaPartnerFacade.querySlaUser(customerId, threeServiceListId, cate.getP_id(), 3);
|
if (serviceUserMap != null && serviceUserMap.size() > 0) {
|
Map yxMap = (Map) serviceUserMap.get("yxMap");
|
Map exMap = (Map) serviceUserMap.get("exMap");
|
Map sxMap = (Map) serviceUserMap.get("sxMap");
|
serviceUsers.add(yxMap);
|
serviceUsers.add(exMap);
|
serviceUsers.add(sxMap);
|
}
|
Map serviceUserCache = new HashMap();
|
Map serviceGroupCache = new HashMap();
|
String groupRole = "SELECT A.*,B.IDENTIFY FROM AC_ROLE_GROUP A,AC_ROLE B WHERE A.JSBH = B.ID ";
|
List<Map> groupList = baseDao.queryForList(groupRole);
|
String role = "SELECT * FROM AC_ROLE ";
|
List<Map> roleList = baseDao.queryForList(role);
|
Map cache = new HashMap();
|
for (Map map : groupList) {
|
cache.put(map.get("ID"), map.get("IDENTIFY"));
|
}
|
Map cacheRole = new HashMap();
|
for (Map map : roleList) {
|
cacheRole.put(map.get("ID"), map.get("IDENTIFY"));
|
}
|
|
for (Map serviceUser : serviceUsers) {
|
String userType = ConvertUtil.obj2StrBlank(serviceUser.get("USER_TYPE"));
|
if (userType.equals("1")) {
|
String group_id = ConvertUtil.obj2StrBlank(serviceUser.get("GROUP_ID"));
|
if (cache.containsKey(group_id)) {
|
serviceGroupCache.put(group_id + cache.get(group_id), serviceUser);
|
}
|
} else {
|
String user_id = ConvertUtil.obj2StrBlank(serviceUser.get("USER_ID"));
|
String group_id = ConvertUtil.obj2StrBlank(serviceUser.get("GROUP_ID"));
|
if (cacheRole.containsKey(group_id)) {
|
serviceUserCache.put(user_id + cacheRole.get(group_id), serviceUser);
|
}
|
}
|
}
|
|
List<Map> kfry = new ArrayList<Map>();
|
List<Map> yczc = new ArrayList<Map>();
|
List<Map> yxgcs = new ArrayList<Map>();
|
List<Map> exgcs = new ArrayList<Map>();
|
List<Map> sxgcs = new ArrayList<Map>();
|
|
|
Map removeUser = new HashMap();
|
//查询出该项目组下的所有的人员
|
String userSql = "SELECT A.*,C.IDENTIFY FROM GG_USER A,AC_USER_REF_ROLE B,AC_ROLE C WHERE A.ID = B.YHBH AND B.JSBH = C.ID AND A.ZT=1 ORDER BY C.IDENTIFY ASC ";
|
List<Map> users = baseDao.queryForList(userSql);
|
//运维经理
|
SC_PARTNER_CUSTOMER_INFO customer = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById();
|
for (Map user : users) {
|
String groupType = ConvertUtil.obj2StrBlank(user.get("IDENTIFY"));
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String unitKey = userId + groupType;
|
|
if (serviceUserCache.containsKey(unitKey) || unitKey.equals(customer.getYwjl_id() + Constants.ROLE_OPERATION)) {
|
user.put("type", 1);
|
} else {
|
user.put("type", 2);
|
}
|
|
|
if (groupType.equals(Constants.ROLE_SERVICE)) {
|
if (!removeUser.containsKey(unitKey)) {
|
if (!cacheMap.containsKey(Constants.KFRY)) {
|
user.put("usered", 1);
|
}
|
kfry.add(user);
|
removeUser.put(unitKey, user);
|
}
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_OPERATION)) {
|
if (!removeUser.containsKey(unitKey)) {
|
if (!cacheMap.containsKey(Constants.YCJSZC)) {
|
user.put("usered", 1);
|
}
|
yczc.add(user);
|
removeUser.put(unitKey, user);
|
}
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_FLINE)) {
|
if (!removeUser.containsKey(unitKey)) {
|
if (!cacheMap.containsKey(Constants.YXCL)) {
|
user.put("usered", 1);
|
}
|
yxgcs.add(user);
|
removeUser.put(unitKey, user);
|
}
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_SLINE)) {
|
if (!removeUser.containsKey(unitKey)) {
|
if (!cacheMap.containsKey(Constants.EXCL)) {
|
user.put("usered", 1);
|
}
|
exgcs.add(user);
|
removeUser.put(unitKey, user);
|
}
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_TLINE)) {
|
if (!removeUser.containsKey(unitKey)) {
|
if (!cacheMap.containsKey(Constants.SXCL)) {
|
user.put("usered", 1);
|
}
|
sxgcs.add(user);
|
removeUser.put(unitKey, user);
|
}
|
}
|
}
|
|
|
List<Map> zkfry = new ArrayList<Map>();
|
List<Map> zyczc = new ArrayList<Map>();
|
List<Map> zyxgcs = new ArrayList<Map>();
|
List<Map> zexgcs = new ArrayList<Map>();
|
List<Map> zsxgcs = new ArrayList<Map>();
|
|
for (Map group : groupList) {
|
String groupType = ConvertUtil.obj2StrBlank(group.get("IDENTIFY"));
|
|
|
String group_Id = ConvertUtil.obj2StrBlank(group.get("ID"));
|
if (serviceGroupCache.containsKey(group_Id + groupType)) {
|
group.put("type", 1);
|
} else {
|
group.put("type", 2);
|
}
|
|
if (groupType.equals(Constants.ROLE_FLINE)) {
|
if (!cacheMap.containsKey(Constants.YXCL)) {
|
group.put("usered", 1);
|
}
|
zyxgcs.add(group);
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_SLINE)) {
|
if (!cacheMap.containsKey(Constants.EXCL)) {
|
group.put("usered", 1);
|
}
|
zexgcs.add(group);
|
continue;
|
}
|
if (groupType.equals(Constants.ROLE_TLINE)) {
|
if (!cacheMap.containsKey(Constants.SXCL)) {
|
group.put("usered", 1);
|
}
|
zsxgcs.add(group);
|
}
|
}
|
|
Map jskfry = new HashMap();
|
Map jsyczc = new HashMap();
|
Map jsyxgcs = new HashMap();
|
Map jsexgcs = new HashMap();
|
Map jssxgcs = new HashMap();
|
Map param = new HashMap();
|
String rolesql = "SELECT ID,ROLENAME FROM AC_ROLE WHERE IDENTIFY = :identify";
|
param.put("identify", Constants.ROLE_SERVICE);
|
jskfry = baseDao.queryForMap(rolesql, param);
|
param.put("identify", Constants.ROLE_OPERATION);
|
jsyczc = baseDao.queryForMap(rolesql, param);
|
param.put("identify", Constants.ROLE_FLINE);
|
jsyxgcs = baseDao.queryForMap(rolesql, param);
|
param.put("identify", Constants.ROLE_SLINE);
|
jsexgcs = baseDao.queryForMap(rolesql, param);
|
param.put("identify", Constants.ROLE_TLINE);
|
jssxgcs = baseDao.queryForMap(rolesql, param);
|
|
Map resultMap = new HashMap();
|
resultMap.put("kfry", kfry);
|
resultMap.put("yczc", yczc);
|
resultMap.put("yxgcs", yxgcs);
|
resultMap.put("exgcs", exgcs);
|
resultMap.put("sxgcs", sxgcs);
|
|
resultMap.put("zkfry", zkfry);
|
resultMap.put("zyczc", zyczc);
|
resultMap.put("zyxgcs", zyxgcs);
|
resultMap.put("zexgcs", zexgcs);
|
resultMap.put("zsxgcs", zsxgcs);
|
|
resultMap.put("jskfry", jskfry);
|
resultMap.put("jsyczc", jsyczc);
|
resultMap.put("jsyxgcs", jsyxgcs);
|
resultMap.put("jsexgcs", jsexgcs);
|
resultMap.put("jssxgcs", jssxgcs);
|
|
int size = 1;
|
|
if (cacheMap.containsKey(Constants.KFRY)) {
|
resultMap.put("kf", 1);
|
size++;
|
} else {
|
resultMap.put("kf", 2);
|
}
|
if (cacheMap.containsKey(Constants.YCJSZC)) {
|
resultMap.put("sjjl", 1);
|
size++;
|
} else {
|
resultMap.put("sjjl", 2);
|
}
|
if (cacheMap.containsKey(Constants.YXCL)) {
|
resultMap.put("yx", 1);
|
size++;
|
} else {
|
resultMap.put("yx", 2);
|
}
|
if (cacheMap.containsKey(Constants.EXCL)) {
|
resultMap.put("ex", 1);
|
size++;
|
} else {
|
resultMap.put("ex", 2);
|
}
|
if (cacheMap.containsKey(Constants.SXCL)) {
|
resultMap.put("sx", 1);
|
size++;
|
} else {
|
resultMap.put("sx", 2);
|
}
|
|
resultMap.put("size", size);
|
|
return resultMap;
|
|
}
|
|
@Override
|
public Map getRepair(String repair) {
|
String sql="select BX_TITLE name,BX_CONTENT descrip,LX_PHONE contact_phone,CREATE_NAME contact_name from repair_record where id=:repair";
|
return baseDao.queryForMap(sql,new SqlParameter("repair", repair));
|
}
|
|
}
|