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 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 records = baseDao.queryForList(nodeSql, new SqlParameter("flowId", flowId)); if (null != records && records.size() > 0) { List list = new ArrayList(); Map cacheMap = new HashMap(); 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 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 result = new ArrayList(); for (String key : list) { Map map = new HashMap(); map.put("node_template_id", key); map.put("node_template_name", cacheName.get(key)); List 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 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 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 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 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 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 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 list = recordService.queryRecord(flowId); if (null != list && list.size() > 0) { Map cacheFile = new HashMap(); //查询所有该事件工单下的文档 List 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 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 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 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 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 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 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 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 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 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 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 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 ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( "); //查询处理人是我的 builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,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 ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( "); builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,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 ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( "); builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,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 ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( "); //查询处理人是我的 builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,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 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 result = baseDao.queryForList(builder.toString(), params); List resultList = new ArrayList(); List list = new ArrayList(); 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 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 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 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 orders = queryOrders(flowId); List devices = queryDevices(flowId); List 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 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("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.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,B.RESOLVE_TYPE_NAME, B.CREATE_TIME, B.CREATE_USER_NAME, WB.ORDER_CODE, WB.WFNAME, WB.BUSINESSTYPE, WB.CREATERNAME, WB.CREATETIME, WB.ENDTIME , 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 , D.HANG_UP_USERNAME, D.HANG_UP_TIME, D.HANG_UP_REASON , WB.SCORE ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getEndSql(StringBuilder sqlpart, Map 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT WB.ID,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID ,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,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID ,B.STATE ,B.NAME ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getJxzSql(StringBuilder sqlpart, Map 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 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.ID, A.STATE 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.ID 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, A.STATE) D GROUP BY D.STATE "); sql.append(" GROUP BY A.ID) D "); List 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 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,"); 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,WB.ORDER_CODE, WB.WFNAME, WB.BUSINESSTYPE, WB.CREATERNAME, WB.CREATETIME, 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 ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getOrderNodeSql(StringBuilder sqlpart, Map 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT WB.ID,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID,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,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID,B.STATE ,B.NAME ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getincidentTimeOutSql(StringBuilder sqlpart, Map 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.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 = '' )"); 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 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 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.ENDTIME , "); 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.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, B.RESOLVE_TYPE_NAME, B.CREATE_TIME, B.CREATE_USER_NAME, WB.ORDER_CODE, WB.WFNAME, WB.BUSINESSTYPE, WB.CREATERNAME, WB.CREATETIME , WB.ENDTIME , 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, D.HANG_UP_USERNAME, D.HANG_UP_TIME, D.HANG_UP_REASON , WB.SCORE ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getMyOrderEndSql(StringBuilder sqlpart, Map 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 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.ID,A.STATE 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.ID 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,A.STATE) D GROUP BY D.STATE "); sql.append(" GROUP BY A.ID) D "); List 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 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,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, WB.ORDER_CODE, WB.WFNAME, WB.BUSINESSTYPE, WB.CREATERNAME, WB.CREATETIME, C.FLOWSTATE, 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 ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getmyodernodeSql(StringBuilder sqlpart, Map 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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID 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 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, "); // 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, WB.ORDER_CODE, WB.WFNAME, WB.BUSINESSTYPE, WB.CREATERNAME, 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,WB.CREATETIME 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 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 dealerList = new ArrayList(); 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 categoryList = baseDao.queryForList(sql); Map result = new HashMap(); List resultList = new LinkedList(); Map yjgnCache = new HashMap(); Map ejgnCache = new HashMap(); Map sjgnCache = new HashMap(); for (Map map : categoryList) { //一级树 if (map.get("LEVEL").toString().equalsIgnoreCase("1") && null == map.get("P_ID")) { yjgnCache.put(map.get("ID").toString(), map); List ejgnList = new LinkedList(); 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 list = (List) yjgnMap.get("ejTree"); map.put("sjTree", new LinkedList()); 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 list = (List) 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 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 dealerList = new ArrayList(); //查询改组下面的所有人员信息 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 dealerList = new ArrayList(); //查询改组下面的所有人员信息 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 dealerList = new ArrayList(); 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 dealerList = new ArrayList(); 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 dealLists) { SLAEntity slaEntity = slaProjectService.getLevelMsg(customer_id, third_category_id); if (null != slaEntity) { Map 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 params = new ArrayList(); 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 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 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 getCustomerList() { String sql = "SELECT * FROM SC_PARTNER_CUSTOMER_INFO WHERE CUSTOMER_STATE = 1 "; return baseDao.queryForList(sql); } @Override public List 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 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 nodes = JsonUtil.json2List(json); return nodes; } return new ArrayList(); } @Override public List 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 cateList = new ArrayList(); List userList = new ArrayList(); 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 resList = new ArrayList(); for (Map cateMap : cateList) { List tempList = new ArrayList(); 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 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 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 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 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 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 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 DATE_FORMAT(CREATE_TIME,'%Y%m%d') "); } 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 DATE_FORMAT(q.CREATE_TIME,'%Y%m%d') "); } List dataList = baseDao.queryForList(builder.toString(), params); if (dataList != null && dataList.size() > 0) { List categories = DateUtil.getDates(startDay, endDay); categories.add(String.valueOf(DateUtil.getCurrentDate8())); List categories_format = new ArrayList(); Map dataMap = new HashMap(); Map tempMap = new HashMap(); List series = new ArrayList(); 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 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 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 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 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 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 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 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 THIRD_CATEGORY_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 q.THIRD_CATEGORY_ID "); } List 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 categoriesList = baseDao.queryForList(builder.toString(), params); List categories = new ArrayList(); Map dataMap = new HashMap(); Map tempMap = new HashMap(); List series = new ArrayList(); 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 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 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 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 nodes = JsonUtil.json2List(json); if (null != nodes && nodes.size() > 0) { for (Map n : nodes) { cacheMap.put(n.get("nodeId"), n); } } } } //查询该客户该项目对应的服务目录选择的服务目录人员 List serviceUsers = new ArrayList(); 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 groupList = baseDao.queryForList(groupRole); String role = "SELECT * FROM AC_ROLE "; List 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 kfry = new ArrayList(); List yczc = new ArrayList(); List yxgcs = new ArrayList(); List exgcs = new ArrayList(); List sxgcs = new ArrayList(); 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 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 zkfry = new ArrayList(); List zyczc = new ArrayList(); List zyxgcs = new ArrayList(); List zexgcs = new ArrayList(); List zsxgcs = new ArrayList(); 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)); } }