package cn.ksource.web.facade.question; 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.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 org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service("questionFacade") public class QuestionFacadeImpl implements QuestionFacade { @Autowired private BaseDao baseDao; @Autowired private FileService fileService; @Autowired private RecordService recordService; @Autowired private OrderService orderService; @Autowired private DeviceService deviceService; @Autowired private WorkOrderCodeService workOrderCodeService; @Autowired private WorkflowBusinessService workflowBusinessService; @Autowired private WorkflowCoreService workflowCoreService; @Autowired private MessageFacade messageFacade; @Autowired private DataDictionaryService dataDictionaryService; @Override public Map getQuestionMsgByOrderId(HttpServletRequest request) { String orderId = request.getParameter("changeId"); String bustype = request.getParameter("bustype"); Map questionmsg = new HashMap(); Map ordermsg = new HashMap(); Map param = new HashMap(); param.put("orderId", orderId); if(!StringUtil.isEmpty(bustype)&&!StringUtil.isEmpty(orderId)){ if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT == ConvertUtil.obj2Int(bustype)){ questionmsg = baseDao.queryForMap("SELECT A.*,B.WFSTATE FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND A.ID = :orderId ", param); }else if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL == ConvertUtil.obj2Int(bustype)){ questionmsg = baseDao.queryForMap("SELECT A.*,B.WFSTATE FROM SC_WORKFLOW_INCIDENT_LOCAL A,WORKFLOW_BASE B WHERE A.ID = B.BUSINESS_ID AND A.ID = :orderId ", param); } List cilist = deviceService.queryLinkDevices(ConvertUtil.obj2StrBlank(questionmsg.get("FLOW_ID"))); List orderlist = orderService.queryLinkOrders(ConvertUtil.obj2StrBlank(questionmsg.get("FLOW_ID"))); List filelist = fileService.getFileList(ConvertUtil.obj2StrBlank(questionmsg.get("FLOW_ID"))); questionmsg.put("ciList", cilist); questionmsg.put("orderList", orderlist); for(Map file:filelist){ file.put("ID", ""); } questionmsg.put("filelist", filelist); } return questionmsg; } @Override public Map saveQuestion(HttpServletRequest request, SC_WORKFLOW_QUESTION sc_workflow_question) { String changeId = request.getParameter("changeId"); String bustype = request.getParameter("bustype"); Map resultMap = new HashMap(); resultMap.put("result", 2); Map user = WebUtil.getLoginUser(request).getLoginUser(); String sh = request.getParameter("sh"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String bz = request.getParameter("bz"); 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 selectUser = request.getParameter("selectUser"); if(StringUtil.notEmpty(selectUser)) { String[] userMsg = selectUser.split("&"); String state = Constants.SC_WORKFLOW_QUESTION_STATE_SL; String dealer_type = "1"; String dealUserId = userId; String dealUserName = userName; String nextnodeid = ""; if(userMsg.length==4) { dealer_type = userMsg[0]; nextnodeid = userMsg[1]; dealUserId = userMsg[2]; dealUserName = userMsg[3]; if(nextnodeid.equals(Constants.WTSL)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SL; } else if(nextnodeid.equals(Constants.WTSH)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SH; } else if(nextnodeid.equals(Constants.WTZD)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD; } else if(nextnodeid.equals(Constants.WTFASP)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP; } else if(nextnodeid.equals(Constants.WTFASS)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS; } else if(nextnodeid.equals(Constants.WTHG)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_HG; }else{ state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ; } String sla_id = request.getParameter("sla_id"); String sla_name = request.getParameter("sla_name"); String order_code = workOrderCodeService.getQuestionOrderCode(); long createTime = DateUtil.getCurrentDate14(); sc_workflow_question.setPri_level_id(sla_id).setPri_level(sla_name) .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); if(StringUtil.isBlank(sc_workflow_question.getId())){ sc_workflow_question.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(createTime); sc_workflow_question.setOrder_code(order_code); } sc_workflow_question.setState(ConvertUtil.obj2Integer(state)).setFlow_name(sc_workflow_question.getName()).insertOrUpdate(); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,userId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); if("1".equals(sh)){ //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("修改问题:"+userName+"修改了问题信息"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(userName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); } if(!"1".equals(sh)){ WORKFLOW_BASE base = new WORKFLOW_BASE(); if(!"2".equals(sh)){ //发起流程 base = workflowBusinessService.startQuestionWorkflow(sc_workflow_question.getId(),bz); //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("创建问题:"+userName+"创建了问题"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(userName); record.setBusiness_id(base.getId()); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); flowId = base.getId(); }else{ base = new WORKFLOW_BASE(flowId).getInstanceById(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName+"完成了节点"); finishEntity.setDeal_note(userName+"完成了节点"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); } NodeDealEntity entity = new NodeDealEntity(); List userMap = new ArrayList(); if("2".equals(sh)){ dealer_type = "2"; entity.setBefore_Dealer_type(2); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById(); String node_template_id = beforenode.getNode_template_id(); nextnodeid = node_template_id; String sql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :node_template_id AND IS_ADMIN = :is_admin "; Map param = new HashMap(); param.put("flowid", beforenode.getFlowid()); param.put("node_template_id", node_template_id); param.put("is_admin", "1"); Map nodeMap = baseDao.queryForMap(sql, param); Map map = new HashMap(); map.put("USER_ID", nodeMap.get("CURRENT_DEALER_ID")); map.put("USER_NAME", nodeMap.get("CURRENT_DEALER_NAME")); map.put("IS_ADMIN", "1"); userMap.add(map); entity.setDealerList(userMap); dealUserName = ConvertUtil.obj2StrBlank(nodeMap.get("CURRENT_DEALER_NAME")); }else{ dealer_type = getDealUser(entity,flowId,dealer_type,userMap,dealUserId,dealUserName); } workflowCoreService.toNode(base,nextnodeid , 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_question.getCustomer_id()) .setContact_name(sc_workflow_question.getContact_name()).setContacts_type(sc_workflow_question.getContact_phone()).setYwks(sc_workflow_question.getKeshi()) .setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_question.getSub_customer_id()).setSub_customer_name(sc_workflow_question.getSub_customer_name()); project_contacts.insert(); }*/ String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION; //发送消息 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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id()) .setWx_url(wxUrl) .setOrder_code(sc_workflow_question.getOrder_code()) .setType(Constants.GG_MESSAGE_TYPE_WTGL); messageFacade.doSendMessage(message, userMap); resultMap.put("result", 1); } String usertype = "1"; if("1".equals(dealer_type)){ usertype = "2"; } Map paramuser = new HashMap(); paramuser.put("ID", StringUtil.getUUID()); paramuser.put("WORKFLOWID", sc_workflow_question.getFlow_id()); paramuser.put("PNAME", "处理人"); paramuser.put("PVALUE", usertype+"@"+selectUser); if(nextnodeid.equals(Constants.WTSL)) { baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", paramuser); } else if(nextnodeid.equals(Constants.WTSH)) { baseDao.execute("UPDATE WORKFLOW_PARAMETER SET PVALUE=:PVALUE WHERE WORKFLOWID = :WORKFLOWID AND PNAME = :PNAME ", paramuser); } Map paramrecord = new HashMap(); paramrecord.put("flowId", flowId); //提交工单时添加关联工单 //先删除已存在的工单 baseDao.execute("DELETE FROM ORDER_REF_ORDER WHERE BUSINESS_ID = :flowId ", paramrecord); String[] orderId = request.getParameterValues("orderId"); orderService.saveLinkOrders(flowId,orderId,request); //提交工单时上传文档附件 fileService.uploadFile(request,flowId,flowId,null,null,Constants.GG_FOLDERS_WTFOLDERS,Constants.FILE_STATE_SHTG,null); //提交工单时添加关联设备 //先删除已存在的设备 baseDao.execute("DELETE FROM CMDB_CI_REF_ORDER WHERE FLOW_ID = :flowId ", paramrecord); String[] deviceId = request.getParameterValues("deviceId"); deviceService.saveLinkDevices(flowId,deviceId); SysInfoMsg msg = new SysInfoMsg(dealer_type,dealUserName,Constants.questionNode.get(nextnodeid)); resultMap.put("msg", msg); } //事件转问题 if(!StringUtil.isEmpty(changeId)){ if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT == ConvertUtil.obj2Int(bustype)){ SC_WORKFLOW_INCIDENT incident = new SC_WORKFLOW_INCIDENT(changeId); incident.setQuestionid(sc_workflow_question.getId()).update(); }else if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL == ConvertUtil.obj2Int(bustype)){ SC_WORKFLOW_INCIDENT_LOCAL zcyw = new SC_WORKFLOW_INCIDENT_LOCAL(changeId); zcyw.setQuestionid(sc_workflow_question.getId()).update(); } } }else{ resultMap.put("nouser", "1"); } return resultMap; } public String getDealUser(NodeDealEntity entity,String flowId,String dealer_type,List userMap,String dealUserId,String dealUserName) { Map param = new HashMap(); param.put("ID", StringUtil.getUUID()); param.put("WORKFLOWID", flowId); param.put("PNAME", "处理人"); entity.setDealer_type(3); if(dealer_type.equals("1")||dealer_type.equals("3")) { entity.setBefore_Dealer_type(2); String sqluser = "select * from gg_user "; List userList = baseDao.queryForList(sqluser); Map cacheuser = new HashMap(); for(Map users:userList){ cacheuser.put(users.get("ID"), users.get("ZSXM")); } String[] userList2 = dealUserId.split(","); String[] userNameList2 = dealUserName.split(","); for(int i=0;i list = baseDao.queryForList(selectSql.toString(),paramMap); if(null!=list && list.size()>0) { for(Map map : list) { String state = ConvertUtil.obj2StrBlank(map.get("STATE")); int flowstate = 0; if(StringUtil.isNotBlank(ConvertUtil.obj2StrBlank(map.get("FLOWSTATE")))){ flowstate = ConvertUtil.obj2Integer(map.get("FLOWSTATE")); } int num = ConvertUtil.obj2Int(map.get("NUM")); if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SL)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ wtsldxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ wtslclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ wtshdxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ wtshclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ wtzddxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ wtzdclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ faspdxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ faspclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ fassdxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ fassclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){ wthgdxy += num; }else if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_DOING){ wthgclz += num; } continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_YWC)) { ywc += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_YPJ)) { ywc += num; continue; } } } Map map = new HashMap(); map.put("wtsldxy", wtsldxy); map.put("wtslclz", wtslclz); map.put("wtshdxy", wtshdxy); map.put("wtshclz", wtshclz); map.put("wtzddxy", wtzddxy); map.put("wtzdclz", wtzdclz); map.put("faspdxy", faspdxy); map.put("faspclz", faspclz); map.put("fassdxy", fassdxy); map.put("fassclz", fassclz); map.put("wthgdxy", wthgdxy); map.put("wthgclz", wthgclz); //查询该加盟商未完成的事件 paramMap.put("yjj", Constants.SC_WORKFLOW_QUESTION_STATE_YWC); paramMap.put("gb", Constants.SC_WORKFLOW_QUESTION_STATE_YGB); paramMap.put("ypj", Constants.SC_WORKFLOW_QUESTION_STATE_YPJ); jxz = baseDao.queryForInteger(sql.toString(),paramMap); map.put("ywc", ywc); map.put("jxz", jxz); return map; } @Override public int queryQuestionOrderCount(Map params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(WB.ID) FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID AND WB.CURRENT_NODE_ID = C.ID AND C.FLOWSTATE <> 3 "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType "); sqlpart = getOrderSql(sqlpart,params); sql.append(sqlpart); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryQuestionOrderList(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,WB.WFNOTE,C.FLOWSTATE , "); sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME "); sql.append("FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID AND WB.CURRENT_NODE_ID = C.ID AND C.FLOWSTATE <> 3 "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType "); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); sqlpart = getOrderSql(sqlpart,params); sql.append(sqlpart); sql.append( " ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getOrderSql(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 params) { StringBuilder builder = new StringBuilder(); params.put("ysc",ConvertUtil.obj2StrBlank( Constants.WORKFLOW_BASE_WFSTATE_DELETE)); /** * 查询逻辑 * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的, * 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的) * 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个) * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个) * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复) */ String flowstate = params.get("flowstate"); if(StringUtil.notEmpty(flowstate)) { if(flowstate.equals("1")) { builder.append(" SELECT DISTINCT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT B.WFSTATE,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_ID,B.SUB_CUSTOMER_ID,C.NAME,B.BUSINESSTYPE,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl "); builder.append(")D"); builder.append(" WHERE 1 = 1 "); params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE)); } else if(flowstate.equals("2")) { builder.append(" SELECT DISTINCT D.* FROM ( "); builder.append(" SELECT B.WFSTATE,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_ID,B.SUB_CUSTOMER_ID,C.NAME,B.BUSINESSTYPE,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz"); builder.append(")D"); builder.append(" WHERE 1 = 1 "); params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING)); }else { builder.append(" SELECT DISTINCT D.* FROM ( "); builder.append(" SELECT B.WFSTATE,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_ID,B.SUB_CUSTOMER_ID,C.NAME,B.BUSINESSTYPE,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc "); builder.append(")D"); builder.append(" WHERE 1 = 1 "); params.put("jdywc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_FINISH)); } } else { builder.append(" SELECT DISTINCT D.* FROM ( "); //查询处理人是我的 builder.append(" SELECT B.WFSTATE,B.CURRENT_NODE_NAME,B.ORDER_CODE,B.CUSTOMER_ID,B.SUB_CUSTOMER_ID,C.NAME,B.BUSINESSTYPE,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION 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 "); } builder = getMyquestionSql(builder,params); builder.append(" AND D.BUSINESSTYPE = :businessType"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); 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 queryMyQuestionData(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.THIRD_CATEGORY_ID,C.SOURCE_ID,C.STATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION 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.THIRD_CATEGORY_ID,C.SOURCE_ID,C.STATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION 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.THIRD_CATEGORY_ID,C.SOURCE_ID,C.STATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION 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.THIRD_CATEGORY_ID,C.SOURCE_ID,C.STATE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_QUESTION 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 "); } builder = getMyquestionSql(builder,params); builder.append(" AND D.BUSINESSTYPE = :businessType"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); 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 result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params); return result; } } public StringBuilder getMyquestionSql(StringBuilder builder,Map params){ 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 "); params.put("subCustomerId", subCustomerId); } String status = params.get("status"); if(StringUtil.notEmpty(status)) { builder.append(" AND D.WFSTATE = :status "); params.put("status", status); } String orderName = params.get("orderName"); if(StringUtil.notEmpty(orderName)) { builder.append(" AND D.NAME 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 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.WTFQ; } //查询当前节点能发送的节点 String selectSql = "SELECT * FROM QUESTION_FLOWRULE WHERE CUSTOMER_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.questionNodeColunm.get(currentNode))); List nodes = JsonUtil.json2List(json); return nodes; }else{ String gsSql = "SELECT * FROM QUESTION_FLOWRULE WHERE (CUSTOMER_ID IS NULL OR CUSTOMER_ID = '')"; List gslist = baseDao.queryForList(gsSql); if(null!=gslist && gslist.size()>0){ prom = gslist.get(0); String json = ConvertUtil.obj2StrBlank(prom.get(Constants.questionNodeColunm.get(currentNode))); List nodes = JsonUtil.json2List(json); return nodes; } } return new ArrayList(); } 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 List getZdyGroupList(HttpServletRequest request) { String customer_id = request.getParameter("customer_id"); String user_Id = WebUtil.getLoginedUserId(request); String sql = "SELECT * FROM CUSTOM_GROUP WHERE CUSTOMER_ID = :customer_id AND CREATE_USER_ID = :create_user_id "; Map paramMap = new HashMap(); paramMap.put("customer_id", customer_id); paramMap.put("create_user_id", user_Id); List groupList = baseDao.queryForList(sql, paramMap); for(Map map:groupList){ if(!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(map.get("USER_JSON")))){ List userList = JsonUtil.json2List(ConvertUtil.obj2StrBlank(map.get("USER_JSON"))); StringBuffer userId = new StringBuffer(); StringBuffer userName = new StringBuffer(); for(Map map1:userList){ if("1".equals(map1.get("IS_MASTER"))){ userId.append(map1.get("userid")+"-1,") ; userName.append(map1.get("username")+"(主负责人),") ; }else{ userId.append(map1.get("userid")+",") ; userName.append(map1.get("username")+",") ; } } map.put("userlist", userName.deleteCharAt(userName.lastIndexOf(","))); map.put("useridlist", userId.deleteCharAt(userId.lastIndexOf(","))); } } return groupList; } @Override public List groupuser(String groupId) { String usersql = "SELECT * FROM CUSTOM_GROUP WHERE GROUP_ID = :group_id"; List groupuser = baseDao.queryForList(usersql, new SqlParameter("group_id",groupId)); return groupuser; } @Override public Map usersbyGroup(HttpServletRequest request) { Map main = new HashMap(); String groupId = request.getParameter("groupId"); String customer_id = request.getParameter("customer_id"); String usersql = "SELECT * FROM CUSTOM_GROUP WHERE ID = :group_id"; Map group = baseDao.queryForMap(usersql, new SqlParameter("group_id",groupId)); List groupuser = JsonUtil.json2List(ConvertUtil.obj2StrBlank(group.get("USER_JSON"))); Map cacheuser = new HashMap(); for(Map users:groupuser){ cacheuser.put(users.get("roleid")+"_"+users.get("userid"), users.get("username")); users.put("userid",users.get("roleid")+"_"+users.get("userid")); if("1".equals(users.get("IS_MASTER"))){ main.put("userid", users.get("userid")); main.put("username", users.get("username")); } } 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 AC_USER_REF_ROLE U,AC_ROLE G WHERE G.ID = U.JSBH AND G.STATE=1 GROUP BY G.ID ORDER BY G.ID"); cateList = baseDao.queryForList(sql.toString(),param); sql.setLength(0); sql.append(" select U.JSBH,G.ROLENAME,D.ID,D.ZSXM from AC_USER_REF_ROLE U,AC_ROLE G,GG_USER D WHERE G.ID = U.JSBH AND U.YHBH = D.ID AND D.ZT = 1 AND G.STATE=1 ORDER BY D.ID"); 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")); tempMap.put("id", cateMap.get("ID")); for(Map userMap:userList){ if(cateMap.get("ID").equals(userMap.get("JSBH"))){ if(cacheuser.containsKey(cateMap.get("ID")+"_"+userMap.get("ID"))){ userMap.put("check", 1); } tempList.add(userMap); } } tempMap.put("dataList", tempList); resList.add(tempMap); } main.put("resList", resList); main.put("groupuser", groupuser); return main; } @Override public void addGroupUser(HttpServletRequest request) { String userid = WebUtil.getLoginedUserId(request); String groupId = request.getParameter("groupId"); String customer_id = request.getParameter("customer_id"); String groupname = request.getParameter("name"); //人员 String[] user = request.getParameterValues("users"); //主要负责人 String userMain = request.getParameter("userid"); String sqluser = "SELECT * FROM GG_USER "; List userList = baseDao.queryForList(sqluser); Map cacheuser = new HashMap(); for(Map users:userList){ cacheuser.put(users.get("ID"), users.get("ZSXM")); } List list = new ArrayList(); Map cacheMap = new HashMap(); for(int i=0;i0) { baseMap.put("closejd", jd.get("CLOSEJD")); baseMap.put("backjd", jd.get("GOBACKJD")); }else{ String gsSql = "SELECT CLOSEJD,GOBACKJD FROM QUESTION_FLOWRULE WHERE (CUSTOMER_ID IS NULL OR CUSTOMER_ID = '')"; Map gsmap = baseDao.queryForMap(gsSql); if(null!=gsmap && gsmap.size()>0){ baseMap.put("closejd", gsmap.get("CLOSEJD")); baseMap.put("backjd", gsmap.get("GOBACKJD")); } } String gsSql = "select * from GG_FILES where DEL_FLAG =1 AND BUSINESS_ID=(select Id from WORKFLOW_BASE WHERE BUSINESS_ID=:orderId) order by ORDERNUM"; Map fjList = baseDao.queryForMap(gsSql,new SqlParameter("orderId",orderId)); if(null!=fjList && fjList.size()>0){ baseMap.put("files", fjList); } return baseMap; } @Override public String anwerSubmit(HttpServletRequest request){ WORKFLOW_BASE base = new WORKFLOW_BASE(request.getParameter("flowId")).getInstanceById(); WORKFLOW_NODE node = new WORKFLOW_NODE(request.getParameter("nodeId")).getInstanceById(); NodeAnswerEntity entity = new NodeAnswerEntity(); Map user = WebUtil.getLoginUser(request).getLoginUser(); entity.setUser_id(user.get("ID").toString()); entity.setUser_name(user.get("ZSXM").toString()); boolean result = workflowCoreService.answerNode(base, node, entity); if(!result) { return "2"; } //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间) String selectSql = "SELECT SHOULI_TIME,CREATE_TIME FROM SC_WORKFLOW_QUESTION WHERE ID = :questionid"; Map map = baseDao.queryForMap(selectSql,new SqlParameter("questionid",base.getBusiness_id())); String shouli_time = ConvertUtil.obj2StrBlank(map.get("SHOULI_TIME")); long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME")); Map paramMap = new HashMap(); if(!StringUtil.notEmpty(shouli_time)) { StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_QUESTION SET "); long answer_time = DateUtil.getCurrentDate14(); builder.append(" SHOULI_USERID = :shouli_userid,SHOULI_USERNAME = :shouli_username,SHOULI_TIME = :answerTime,SHOULI_USE_TIME = :answer_user_time "); paramMap.put("answerTime",answer_time); paramMap.put("shouli_userid",user.get("ID")); paramMap.put("shouli_username",user.get("ZSXM")); //计算第一次响应时间和创建问题的时间差 将时间差转化为分钟 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 = :questionid"); paramMap.put("questionid", base.getBusiness_id()); baseDao.execute(builder.toString(), paramMap); } return "1"; } @Override public void updateQuestion(HttpServletRequest request, SC_WORKFLOW_QUESTION sc_workflow_question) { String flowId = request.getParameter("flowId"); 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 sla_id = request.getParameter("sla_id"); String sla_name = request.getParameter("sla_name"); sc_workflow_question.setPri_level_id(sla_id).setPri_level(sla_name); sc_workflow_question.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); sc_workflow_question.update(); //添加处理记录 Map userlogin = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(userlogin.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(userlogin.get("ZSXM")); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,createUserId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("修改问题:"+createUserName+"修改了问题信息"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); } @Override public List getZdMsgList(String flowId) { String sql = "SELECT * FROM QUESTION_ZD_HISTORY WHERE FLOWID = :flowid ORDER BY CREATE_TIME DESC"; return baseDao.queryForList(sql, new SqlParameter("flowid",flowId)); } @Override public Map getzdmsgbyId(HttpServletRequest request) { String id = request.getParameter("id"); String type = request.getParameter("type"); String flowId = request.getParameter("flowId"); Map zdMsg = new HashMap(); if(!StringUtil.isEmpty(type)){ if("1".equals(type)){ SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(id).getInstanceById(); zdMsg.put("ID", question.getId()); zdMsg.put("REASON", question.getTrue_reason()); zdMsg.put("RESOLVE", question.getResolve()); zdMsg.put("SUGGEST", question.getSuggest()); String selsql = "SELECT ID FROM QUESTION_ZD_HISTORY WHERE FLOWID = :flowid AND ISTHEEND = 1 "; String zdid = baseDao.queryForString(selsql, new SqlParameter("flowid",flowId)); zdMsg.put("ZDID", zdid); }else{ zdMsg = new QUESTION_ZD_HISTORY(id).getBeanMapById(); } } return zdMsg; } @Override public void updateZdMsg(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String id = request.getParameter("id"); String type = request.getParameter("type"); String resolve = request.getParameter("resolve"); String suggest = request.getParameter("suggest"); String reason = request.getParameter("reason"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); long resolveTime = DateUtil.getCurrentDate14(); QUESTION_ZD_HISTORY zd = new QUESTION_ZD_HISTORY(); if("1".equals(type)){ Map param = new HashMap(); param.put("reason", reason); param.put("resolve", resolve); param.put("suggest", suggest); param.put("flowid", flowId); param.put("istheend", 1); SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(id); question.setTrue_reason(reason).setResolve(resolve).setSuggest(suggest).update(); String selsql = "SELECT ID FROM QUESTION_ZD_HISTORY WHERE FLOWID = :flowid AND ISTHEEND = :istheend "; String zdid = baseDao.queryForString(selsql, param); zd.setId(zdid); String sql = "UPDATE QUESTION_ZD_HISTORY SET REASON = :reason ,RESOLVE = :resolve,SUGGEST = :suggest WHERE FLOWID = :flowid AND ISTHEEND = :istheend "; baseDao.execute(sql, param); }else{ if(!StringUtil.isEmpty(id)){ zd.setId(id); }else{ zd.setFlowid(flowId).setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(DateUtil.getCurrentDate14()); } zd.setReason(reason).setResolve(resolve).setSuggest(suggest).insertOrUpdate(); } fileService.uploadFile(request, zd.getId(), flowId, null, null); } @Override public String issave(HttpServletRequest request) { String nodeId = request.getParameter("nodeId"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); List nodeList = baseDao.queryForList("select * from WORKFLOW_NODE where FLOWID=:FLOWID and NODE_TEMPLATE_ID=:NODE_TEMPLATE_ID and FLOWSTATE <> 3 and ID <> :NODEID", new SqlParameter("FLOWID",node.getFlowid()).addValue("NODEID", nodeId).addValue("NODE_TEMPLATE_ID", node.getNode_template_id())); String result=""; //如果存在其他环节,且当前环节是主负责人,不可以关闭 if (nodeList.size() > 0 && node.getIs_admin() != null) { for(Map map:nodeList){ String flowstate=ConvertUtil.obj2StrBlank(map.get("FLOWSTATE")); String CURRENT_DEALER_NAME=ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")); if(StringUtil.isNotBlank(flowstate)) { if (flowstate.equals("1")) { result=result+CURRENT_DEALER_NAME+"待响应!"; }else if(flowstate.equals("2")){ result=result+CURRENT_DEALER_NAME+"进行中!"; } } } result =result; }else if(nodeList.size() == 0 && node.getIs_admin() == 1){ result = "0"; }else { result = "2"; } return result; } @Override public Map gettempMsg(String id,String userId) { //获取当前所处的节点 Map flowMsg = getFlowMsg(id,userId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); String sql = "SELECT * FROM ORDER_ASSIGN_TEMP WHERE NODE_ID = :node_id "; Map msg = baseDao.queryForMap(sql, new SqlParameter("node_id",nodeid)); return msg; } @Override public Map updateAssign(HttpServletRequest request) { Map resultMap = new HashMap(); resultMap.put("result", 2); String savetype = request.getParameter("savetype"); String id = request.getParameter("flowId"); String selectUser = request.getParameter("alluserid"); String saveusername = request.getParameter("saveusername"); String usertype = request.getParameter("type"); String nextnodeid = request.getParameter("node"); String curnodeId = request.getParameter("curnodeId"); String true_reason = request.getParameter("reason"); String resolve = request.getParameter("resolve"); String suggest = request.getParameter("suggest"); String bz = request.getParameter("bz"); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById(); SC_WORKFLOW_QUESTION myQuestion = new SC_WORKFLOW_QUESTION(base.getBusiness_id()).getInstanceById(); //获取当前所处的节点 Map flowMsg = getFlowMsg(id,userId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); if("1".equals(savetype)){ Map dealuser = new HashMap(); dealuser.put("userid", selectUser); dealuser.put("username", saveusername); baseDao.execute("DELETE FROM ORDER_ASSIGN_TEMP WHERE NODE_ID = :node_id ", new SqlParameter("node_id",nodeid)); ORDER_ASSIGN_TEMP temp = new ORDER_ASSIGN_TEMP(); temp.setDealer(JsonUtil.map2Json(dealuser)).setNode_id(nodeid) .setExtend1(usertype).setExtend2(true_reason).setExtend3(resolve).setExtend4(suggest).setExtend5(bz).insert(); }else{ String dealUserId = new String(); String dealUserName = new String(); String state = new String(); String type = new String(); String node_template_id = Constants.WTFQ; if(StringUtil.notEmpty(selectUser)) { if(usertype.equals("3")){ usertype = "1"; } node_template_id = nextnodeid; Map param = new HashMap(); param.put("ID", StringUtil.getUUID()); param.put("WORKFLOWID", id); param.put("PNAME", "处理人"); param.put("PVALUE", usertype+"@"+selectUser); if(nextnodeid.equals(Constants.WTSL)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SL; baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", param); } else if(nextnodeid.equals(Constants.WTSH)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SH; baseDao.execute("UPDATE WORKFLOW_PARAMETER SET PVALUE=:PVALUE WHERE WORKFLOWID = :WORKFLOWID AND PNAME = :PNAME ", param); } else if(nextnodeid.equals(Constants.WTZD)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD; } else if(nextnodeid.equals(Constants.WTFASP)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP; } else if(nextnodeid.equals(Constants.WTFASS)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS; } else if(nextnodeid.equals(Constants.WTHG)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_HG; }else{ state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ; } } if(StringUtil.notEmpty(selectUser)) { //执行分派任务 NodeDealEntity entity = new NodeDealEntity(); entity.setDealer_type(3); List dealerList = new ArrayList(); if(usertype.equals("1")) { entity.setBefore_Dealer_type(2); String sqluser = "select * from gg_user "; List userList = baseDao.queryForList(sqluser); Map cacheuser = new HashMap(); for(Map users:userList){ cacheuser.put(users.get("ID"), users.get("ZSXM")); } String[] userIdList2 = selectUser.split("&"); String[] userList2 = userIdList2[0].split(","); for(int i=0;i list= baseDao.queryForList(sql,map); String businessid=""; if(list!=null && list.size()>0){ businessid=ConvertUtil.obj2StrBlank(list.get(0).get("ID")); }else{ QUESTION_ZD_HISTORY zd = new QUESTION_ZD_HISTORY(); zd.setFlowid(id).setIstheend(1).setReason(true_reason).setResolve(resolve).setSuggest(suggest) .setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(DateUtil.getCurrentDate14()).insert(); businessid=zd.getId(); } fileService.uploadFile(request,businessid, id, null, null); } updateIncidentSql += " WHERE ID = :questionId "; baseDao.execute(updateIncidentSql, param); baseDao.execute("DELETE FROM ORDER_ASSIGN_TEMP WHERE NODE_ID = :node_id ", new SqlParameter("node_id",nodeid)); //增加问题处理记录 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(id); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION; //发送消息 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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id()) .setWx_url(wxUrl) .setOrder_code(base.getOrder_code()) .setType(Constants.GG_MESSAGE_TYPE_WTGL); messageFacade.doSendMessage(message, dealerList); resultMap.put("result", 1); type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type()); } SysInfoMsg msg = new SysInfoMsg(type,dealUserName,Constants.questionNode.get(node_template_id)); resultMap.put("msg", msg); } return resultMap; } @Override public void updatefinishnode(HttpServletRequest request) { String nodeId = request.getParameter("nodeId"); String note = request.getParameter("note"); String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM")); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName+"完成了节点"); finishEntity.setDeal_note(note); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_BASE base = new WORKFLOW_BASE(node.getFlowid()).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); } @Override public Map getBeforeNodeMsg(String nodeId) { WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById(); String node_template_id = beforenode.getNode_template_id(); String sql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :node_template_id AND IS_ADMIN = :is_admin "; Map param = new HashMap(); param.put("flowid", beforenode.getFlowid()); param.put("node_template_id", node_template_id); param.put("is_admin", "1"); Map nodeMap = baseDao.queryForMap(sql, param); return nodeMap; } @Override public Map gobackNodeSubmit(HttpServletRequest request) { String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String orderId = request.getParameter("orderId"); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); Map user = WebUtil.getLoginUser(request).getLoginUser(); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(3); finishEntity.setDeal_note_title(userName+"回退了节点"); finishEntity.setDeal_note(request.getParameter("backReason")); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById(); String node_template_id = beforenode.getNode_template_id(); Map nodeMap = getBeforeNodeMsg(nodeId); List nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key())); //回退时,关闭所有节点 for(Map nodes:nodesList){ WORKFLOW_NODE nodeid = new WORKFLOW_NODE(ConvertUtil.obj2StrBlank(nodes.get("ID"))); nodeid.setDealtime(ConvertUtil.obj2Long(nodes.get("DEALTIME"))).setAnswer_time(ConvertUtil.obj2Long(nodes.get("ANSWER_TIME"))); workflowCoreService.finishNode(base,nodeid , finishEntity); } String state = ""; if(node_template_id.equals(Constants.WTSL)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SL; } else if(node_template_id.equals(Constants.WTSH)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_SH; } else if(node_template_id.equals(Constants.WTZD)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD; } else if(node_template_id.equals(Constants.WTFASP)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP; } else if(node_template_id.equals(Constants.WTFASS)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS; } else if(node_template_id.equals(Constants.WTHG)) { state = Constants.SC_WORKFLOW_QUESTION_STATE_HG; }else{ state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ; } //更新问题状态 String updateSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state WHERE ID = :questionId "; baseDao.execute(updateSql, new SqlParameter("state",state).addValue("questionId", orderId)); List list = new ArrayList(); Map map = new HashMap(); map.put("USER_ID", nodeMap.get("CURRENT_DEALER_ID")); map.put("USER_NAME", nodeMap.get("CURRENT_DEALER_NAME")); map.put("IS_ADMIN", "1"); list.add(map); NodeDealEntity entity = new NodeDealEntity(); entity.setBefore_Dealer_type(2); entity.setDealer_type(2); entity.setDealerList(list); entity.setFlow_type(2); entity.setSource_node_instance_id(node.getId()); //回退到上一节点 workflowCoreService.toNode(base, ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID")), entity); String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION; //发送消息 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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id()) .setWx_url(wxUrl) .setOrder_code(base.getOrder_code()) .setType(Constants.GG_MESSAGE_TYPE_WTGL); messageFacade.doSendMessage(message, list); Map resultMap = new HashMap(); SysInfoMsg msg = new SysInfoMsg("2",ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME")),Constants.questionNode.get(ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID")))); resultMap.put("msg", msg); return resultMap; } @Override public Map updateApplyEnd(HttpServletRequest request) { Map resultMap = new HashMap(); resultMap.put("result", 2); String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String ssbz = request.getParameter("ssbz"); String ssjg = request.getParameter("ssjg"); String ssnote = request.getParameter("ssnote"); 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 updateSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,FINISH_USE_TIME = :resolve_hs,SSBZ = :ssbz,SSJG = :ssjg,SSNOTE = :ssnote WHERE ID = :questionId "; //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间) String selectSql = "SELECT SHOULI_TIME,CREATE_TIME FROM SC_WORKFLOW_QUESTION WHERE ID = :questionid"; Map map = baseDao.queryForMap(selectSql,new SqlParameter("questionid",orderId)); long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME")); //计算第一次响应时间和创建问题的时间差 将时间差转化为分钟 long seconds = DateUtil.getSecondsFormDate2Date(create_time, resolveTime); //将秒转化为分钟 double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1); Map paramMap = new HashMap(); paramMap.put("state", Constants.SC_WORKFLOW_QUESTION_STATE_HG); paramMap.put("userId", userId); paramMap.put("userName", userName); paramMap.put("resolveTime", resolveTime); paramMap.put("ssbz", ssbz); paramMap.put("ssjg", ssjg); paramMap.put("ssnote", ssnote); paramMap.put("questionId", orderId); paramMap.put("resolve_hs", sjxysj); baseDao.execute(updateSql, paramMap); String dealUserName =""; NodeDealEntity entity = new NodeDealEntity(); entity.setDealer_type(2); List dealerList = new ArrayList(); ///问题回顾处理人发给问题受理阶段 entity.setBefore_Dealer_type(2); String sql="select * from WORKFLOW_node where FLOWID=:flowid and NODE_TEMPLATE_ID=:node_template_id order by CREATETIME desc limit 0,1"; List xxList = baseDao.queryForList(sql,new SqlParameter("flowid",flowId).addValue("node_template_id",Constants.WTSL)); if(xxList!=null && xxList.size()>0){ entity.setRoleID(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID"))); entity.setRoleName(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME"))); Map dealer = new HashMap(); dealer.put("USER_ID", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID"))); dealer.put("USER_NAME", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME"))); dealer.put("IS_ADMIN", "1"); dealerList.add(dealer); dealUserName= ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME")); }else{ //如果问题受理阶段为空就发给创建人 String sql_cj="select * from WORKFLOW_node where FLOWID=:flowid and NODE_TEMPLATE_ID=:node_template_id order by CREATETIME desc limit 0,1"; List cjList = baseDao.queryForList(sql_cj,new SqlParameter("flowid",flowId).addValue("node_template_id",Constants.WTFQ)); entity.setRoleID(ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_ID"))); entity.setRoleName(ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME"))); Map dealer = new HashMap(); dealer.put("USER_ID", ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_ID"))); dealer.put("USER_NAME", ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME"))); dealer.put("IS_ADMIN", "1"); dealerList.add(dealer); dealUserName= ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME")); } /*Map value = baseDao.queryForMap("SELECT * FROM WORKFLOW_PARAMETER WHERE WORKFLOWID = :ID ORDER by pvalue desc limit 0,1", new SqlParameter("ID",flowId)); String[] uservalues = ConvertUtil.obj2StrBlank(value.get("PVALUE")).split("@"); if(uservalues[0].equals("1")) { entity.setBefore_Dealer_type(2); String sqluser = "select * from gg_user "; List userList = baseDao.queryForList(sqluser); Map cacheuser = new HashMap(); for(Map users:userList){ cacheuser.put(users.get("ID"), users.get("ZSXM")); } String[] userIdList2 = uservalues[1].split("&"); String[] userList2 = userIdList2[0].split(","); for(int i=0;i xxList = baseDao.queryForList(sql,new SqlParameter("flowid",flowId).addValue("node_template_id",Constants.WTSL)); if(xxList!=null && xxList.size()>0){ entity.setRoleID(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID"))); entity.setRoleName(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME"))); Map dealer = new HashMap(); dealer.put("USER_ID", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID"))); dealer.put("USER_NAME", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME"))); dealer.put("IS_ADMIN", "1"); dealerList.add(dealer); dealUserName= ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME")); } } }*/ entity.setDealerList(dealerList); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title("节点转至 :" + dealUserName); finishEntity.setDeal_note("实施结束"); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity); if (canFinish) { workflowBusinessService.toNode(base, Constants.WTHG, entity); } //添加处理记录 //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,userId); String curnodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //添加修改信息处理记录 String id = StringUtil.getUUID(); GG_RECORD record = new GG_RECORD(); record.setDeal_content(userName+"完善处理步骤和结果"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(userName); record.setBusiness_id(flowId); record.setNode_id(curnodeid).setNode_name(nodeName); recordService.addRecord(record); fileService.uploadFile(request, id, flowId, null, null); String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION; //发送消息 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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id()) .setWx_url(wxUrl) .setOrder_code(base.getOrder_code()) .setType(Constants.GG_MESSAGE_TYPE_WTGL); messageFacade.doSendMessage(message, dealerList); String type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type()); resultMap.put("result", 1); SysInfoMsg msg = new SysInfoMsg(type,dealUserName,Constants.questionNode.get(Constants.WTHG)); resultMap.put("msg", msg); return resultMap; } @Override public Map getEndMsgById(String orderId) { String sql ="SELECT RESOLVE_TYPE_ID,TRUE_REASON,RESOLVE,SUGGEST FROM SC_WORKFLOW_QUESTION WHERE ID = :id "; Map faMap = baseDao.queryForMap(sql, new SqlParameter("id",orderId)); return faMap; } @Override public void updateEndQuestion(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String solveWay = request.getParameter("solveWay"); String solveWayName = request.getParameter("solveWayName"); String solve = request.getParameter("solve"); String reason = request.getParameter("reason"); 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 = ""; if("1".equals(solve)){ state = Constants.SC_WORKFLOW_QUESTION_STATE_YWC; }else{ state = Constants.SC_WORKFLOW_QUESTION_STATE_YGB; } SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(orderId).getInstanceById(); StringBuffer updateSql = new StringBuffer("UPDATE SC_WORKFLOW_QUESTION SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName "); Map paramMap = new HashMap(); if(StringUtil.isEmpty(question.getResolve_user_id())){ paramMap.put("userId", userId); paramMap.put("userName", userName); }else{ paramMap.put("userId", question.getResolve_user_id()); paramMap.put("userName", question.getResolve_user_name()); } if(StringUtil.isEmpty(question.getResolve())){ List zdList = getZdMsgList(flowId); if(zdList.size() > 0){ Map map = zdList.get(0); updateSql.append(" ,TRUE_REASON = :true_reason ,RESOLVE = :resolve ,SUGGEST = :suggest "); paramMap.put("true_reason", map.get("REASON")); paramMap.put("resolve", map.get("RESOLVE")); paramMap.put("suggest", map.get("SUGGEST")); } } paramMap.put("state", state); paramMap.put("resolveTime", resolveTime); paramMap.put("solveWay", solveWay); paramMap.put("solveWayName", solveWayName); paramMap.put("questionId", orderId); updateSql.append(" WHERE ID = :questionId"); baseDao.execute(updateSql.toString(), paramMap); //添加处理记录 Map userlogin = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(userlogin.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(userlogin.get("ZSXM")); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,createUserId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("结束问题:"+createUserName+"结束了问题工单"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); recordService.addRecord(record); //结束工单 WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); List list = new ArrayList(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(userName+"处理完成"); finishEntity.setDeal_note(reason); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); workflowCoreService.finishNode(base, node, finishEntity); if("1".equals(solve)){ workflowCoreService.finishWorkFlow(base); }else{ workflowCoreService.closeWorkFlow(base); } } @Override public List queryLinkwtOrder(HttpServletRequest request) { String orderCode = request.getParameter("orderCode"); String orderName = AjaxUtil.decode(request.getParameter("orderName")); String customerid = request.getParameter("customerid"); String orderid = request.getParameter("orderid"); String reordercode = request.getParameter("reordercode"); StringBuilder sql = new StringBuilder("SELECT A.ID,A.WFNAME,A.BUSINESSTYPE,A.WFSTATE,A.BUSINESS_ID,A.ORDER_CODE,A.CUSTOMER_NAME,A.CREATETIME ,B.NAME FROM WORKFLOW_BASE A,SC_WORKFLOW_QUESTION B WHERE A.BUSINESS_ID = B.ID AND A.WFSTATE != :wfstate AND A.CUSTOMER_ID = :customerid AND A.BUSINESSTYPE = :businesstype "); sql.append(" AND B.ID <> :orderid "); SqlParameter param = new SqlParameter(); param.addValue("customerid", customerid); param.addValue("orderid", orderid); param.addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE); param.addValue("businesstype", Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION); if (StringUtils.isNotBlank(reordercode)) { sql.append("AND A.ORDER_CODE != :reordercode "); param.addValue("reordercode", reordercode); } if (StringUtils.isNotBlank(orderName)) { sql.append("AND B.NAME 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("CREATETIME"))); } return list; } @Override public String getIsOpenQuestion(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String userId = WebUtil.getLoginedUserId(request); String sql = "SELECT COUNT(ID) FROM HANG_UP_INFO WHERE BUS_ID = :bus_id AND STATE = 1 AND HANG_UP_USERID = :userId "; Map param = new HashMap(); param.put("bus_id", orderId); param.put("userId", userId); int count = baseDao.queryForInteger(sql, param); if(count > 0){ return "1"; }else{ return "0"; } } @Override public Map questionInfo(HttpServletRequest request) { String questionId=request.getParameter("orderId"); String flowId=request.getParameter("flowId"); Map param =new HashMap(); param.put("questionId", questionId); param.put("flowId", flowId); StringBuilder sql=new StringBuilder(); sql.append("SELECT c.*,u.SJHM FROM SC_WORKFLOW_QUESTION c,gg_user u WHERE c.CREATE_USER_ID=u.id AND c.ID=:questionId "); Map questionMap=baseDao.queryForMap(sql.toString(), param); questionMap.put("STATE", Constants.getmapSC_WORKFLOW_QUESTION_STATE_Label(questionMap.get("STATE").toString())); String sql_base="select WFSTATE from WORKFLOW_BASE where id=:flowId"; String WFSTATE=baseDao.queryForString(sql_base,param); questionMap.put("WFSTATE",WFSTATE); String note="select deal_note from WORKFLOW_NODE where FLOWID=:flowId order by DEALTIME desc"; String deal_note=baseDao.queryForString(note,param); questionMap.put("DEAL_NOTE",deal_note); Map map = new HashMap(); map.put("questionMap", questionMap); //关联工单 List orderList=orderService.queryLinkOrders(flowId); if(orderList!=null && orderList.size()>0){ for(Map orderMap:orderList){ orderMap.put("WFSTATE", Constants.getWORKFLOW_BASE_WFSTATE_Label(orderMap.get("WFSTATE").toString())); orderMap.put("BUSINESSTYPE", Constants.mapWORKFLOW_BUSINESS_TYPE_Label(orderMap.get("BUSINESSTYPE").toString())); } } map.put("orderList", orderList); //关联设备 sql.setLength(0); sql.append("SELECT * FROM cmdb_ci_ref_order r,cmdb_ci_base b WHERE r.CI_ID=b.ID"); sql.append(" AND r.FLOW_ID=:flowId"); List ciList=baseDao.queryForList(sql.toString(),param); map.put("ciList", ciList); //关联文档 List fileList=fileService.getFileList(flowId); if(fileList!=null && fileList.size()>0){ for(Map fileMap:fileList){ fileMap.put("FILE_SIZE", ConvertUtil.byte2KM(Double.parseDouble(fileMap.get("FILE_SIZE").toString()), 2)); } } map.put("fileList", fileList); return map; } @Override public void updateResolveType(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String solveWay = request.getParameter("solveWay"); String solveWayName = request.getParameter("solveWayName"); String repeat_order = request.getParameter("repeat_order"); String content = request.getParameter("content"); String bz = request.getParameter("bz"); //修改问题信息的解决方式 SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(); question.setResolve_type_id(solveWay).setResolve_type_name(solveWayName); if("WTCF".equals(solveWay)){ question.setRepeat_order(repeat_order).setRepeat_mark("1"); } question.setId(orderId).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_QUESTION_STATE_YGB)).update(); //添加处理记录 Map user = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(user.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,createUserId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("取消问题:"+createUserName+"取消了问题"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); record = recordService.addRecord(record); fileService.uploadFile(request, record.getId(), flowId, null, null); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); NodeFinishEntity finishEntity = new NodeFinishEntity(); finishEntity.setDeal_result(1); finishEntity.setDeal_note_title(createUserName+"结束节点"); finishEntity.setDeal_note(bz); WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById(); //关闭当前节点 workflowCoreService.finishNode(base, node, finishEntity); //关闭工单 workflowCoreService.closeWorkFlow(base); } @Override public void updateQuestiongq(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String flowId = request.getParameter("flowId"); String nodeId = request.getParameter("nodeId"); String solveWay = request.getParameter("solveWay"); String solveWayName = request.getParameter("solveWayName"); String content = request.getParameter("content"); //添加处理记录 Map user = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(user.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); String sql = "INSERT INTO HANG_UP_INFO(ID,BUS_ID,BUS_STATE,STATE,HANG_UP_USERID,HANG_UP_USERNAME,HANG_UP_TIME,HANG_UP_REASONID,HANG_UP_REASON,HANG_UP_NOTE) VALUES(:id,:bus_id,:bus_state,:state,:hang_up_userid,:hang_up_username,:hang_up_time,:hang_up_reasonid,:hang_up_reason,:hang_up_note)"; Map param = new HashMap(); param.put("id", StringUtil.getUUID()); param.put("bus_id", orderId); String bus_state = baseDao.queryForString("SELECT STATE FROM SC_WORKFLOW_QUESTION WHERE ID = :id ", new SqlParameter("id",orderId)); param.put("bus_state", bus_state); param.put("state", "1"); param.put("hang_up_userid", createUserId); param.put("hang_up_username", createUserName); param.put("hang_up_time", DateUtil.getCurrentDate14()); param.put("hang_up_reasonid", solveWay); param.put("hang_up_reason", solveWayName); param.put("hang_up_note", content); baseDao.execute(sql, param); //修改问题信息的状态 SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(); question.setId(orderId).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_QUESTION_STATE_GQ)).update(); //修改问题流程信息的状态 WORKFLOW_BASE base = new WORKFLOW_BASE(); base.setId(flowId).setWfstate(ConvertUtil.obj2Integer(Constants.WORKFLOW_BASE_WFSTATE_UP)).update(); //获取当前所处的节点 Map flowMsg = getFlowMsg(flowId,createUserId); String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID")); String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME")); //增加问题处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("挂起问题:"+createUserName+"挂起了问题"); record.setDeal_time(DateUtil.getCurrentDate14()); record.setDeal_user_id("1"); record.setDeal_user_name(createUserName); record.setBusiness_id(flowId); record.setNode_id(nodeid).setNode_name(nodeName); record = recordService.addRecord(record); fileService.uploadFile(request, record.getId(), flowId, null, null); } @Override public List queryGqhistoryData(HttpServletRequest request) { String orderId = request.getParameter("orderId"); String sql = "SELECT * FROM HANG_UP_INFO WHERE BUS_ID = :bus_id ORDER BY HANG_UP_TIME DESC "; List gqList = baseDao.queryForList(sql, new SqlParameter("bus_id",orderId)); for(Map gq:gqList){ gq.put("BUS_STATE", Constants.getmapSC_WORKFLOW_QUESTION_STATE_Label(ConvertUtil.obj2StrBlank(gq.get("BUS_STATE")))); gq.put("HANG_UP_TIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", gq.get("HANG_UP_TIME"))); if(ConvertUtil.obj2Integer(gq.get("STATE")) == 1){ gq.put("STATE", "挂起"); }else{ gq.put("STATE", "开启"); } } return gqList; } @Override public void updateQuestionOpen(HttpServletRequest request) { Map user = WebUtil.getLoginUser(request).getLoginUser(); String createUserId = ConvertUtil.obj2StrBlank(user.get("ID")); String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); String orderId = request.getParameter("orderId"); String note = request.getParameter("note"); Map param = new HashMap(); param.put("bus_id", orderId); String sql = "SELECT * FROM HANG_UP_INFO WHERE STATE = 1 AND BUS_ID = :bus_id "; Map qgMap = baseDao.queryForMap(sql, param); SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(); question.setId(orderId).setState(ConvertUtil.obj2Integer(qgMap.get("BUS_STATE"))).update(); String basesql = "UPDATE WORKFLOW_BASE SET WFSTATE = 1 WHERE BUSINESS_ID = :bus_id "; baseDao.execute(basesql, param); HANG_UP_INFO qg = new HANG_UP_INFO(ConvertUtil.obj2StrBlank(qgMap.get("ID"))); qg.setState(2).setHang_down_reason(note).update(); } @Override public Map querymyQuestionpoolCount(HttpServletRequest request) { String userId = WebUtil.getLoginedUserId(request); //初始化变量 int ywc = 0; //问题受理 int wtsl = 0; //问题审核 int wtsh = 0; //问题诊断 int wtzd = 0; //方案审批 int fasp = 0; //方案实施 int fass = 0; //问题回顾 int wthg = 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_QUESTION E, WORKFLOW_BASE D,(SELECT DISTINCT B.JSBH FROM GG_USER A,AC_USER_REF_ROLE B WHERE A.ID = B.YHBH AND A.ID = :userId) 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_QUESTION E, WORKFLOW_BASE D,(SELECT DISTINCT B.JSBH FROM GG_USER A,AC_USER_REF_ROLE B WHERE A.ID = B.YHBH AND A.ID = :userId) 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)){ sql.append(" AND E.CUSTOMER_ID = :customer_Id "); sqlall.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_QUESTION); 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_QUESTION_STATE_SL)) { wtsl += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { wtsh += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { wtzd += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { fasp += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { fass += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { wthg += num; continue; } } } int all = baseDao.queryForInteger(sqlall.toString(), paramMap); Map map = new HashMap(); map.put("wtsl", wtsl); map.put("wtsh", wtsh); map.put("wtzd", wtzd); map.put("fasp", fasp); map.put("fass", fass); map.put("wthg", wthg); map.put("all", all); return map; } @Override public int myquestionpoolCount(Map params) { String sql = new String(); params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE)); sql = "SELECT COUNT(D.ID) FROM SC_WORKFLOW_QUESTION E,WORKFLOW_BASE D,(SELECT DISTINCT B.JSBH FROM GG_USER A,AC_USER_REF_ROLE B WHERE A.ID = B.YHBH AND A.ID = :userId) 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); builder = getMypoolsql(builder,params); int count = baseDao.queryForInteger(builder.toString(),params); return count; } return 0; } @Override public PageInfo myquestionpoolData(PageInfo pageInfo, Map params) { String sql = new String(); params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE)); sql = "SELECT D.* FROM SC_WORKFLOW_QUESTION E,WORKFLOW_BASE D,(SELECT DISTINCT B.JSBH FROM GG_USER A,AC_USER_REF_ROLE B WHERE A.ID = B.YHBH AND A.ID = :userId) 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); builder = getMypoolsql(builder,params); builder.append(" ORDER BY D.CREATETIME DESC "); PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params); return result; } return new PageInfo(); } @Override public Map getLastMonthQuestionCount(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,DATE_FORMAT(CREATE_TIME,'%Y%m%d') CREATEDAY from SC_WORKFLOW_QUESTION 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_QUESTION 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; } public StringBuilder getMypoolsql(StringBuilder builder,Map params){ 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_QUESTION)); return builder; } @Override public Map getLastMonthQuestionLv(Map params) { //dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI,WebUtil.getLoginedPartnerId(request)); 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,PRI_LEVEL_ID FROM SC_WORKFLOW_QUESTION WHERE "); builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime "); builder.append(" GROUP BY PRI_LEVEL_ID "); }else{ builder.append(" SELECT count(q.ID) NUM,q.PRI_LEVEL_ID FROM SC_WORKFLOW_QUESTION 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.PRI_LEVEL_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("PRI_LEVEL_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()); 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 getLastMonthQuestionPri(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,PRIORITY_ID FROM SC_WORKFLOW_QUESTION 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_QUESTION 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 getLastMonthQuestionEffect(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,INFLUENCE_ID FROM SC_WORKFLOW_QUESTION 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_QUESTION 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 getLastMonthQuestionServer(Map params) { Map chartMap = new HashMap(); Long endDay = DateUtil.getCurrentDate8(); Long startDay = DateUtil.getDateAdd(endDay,-30,8); StringBuilder builder = new StringBuilder(); String userId = params.get("userId"); params.put("startTime", startDay+"000000"); params.put("endTime", endDay + "600000"); if(StringUtil.isBlank(userId)){ builder.append(" select count(ID) NUM,THIRD_CATEGORY_ID SERVER_ID from SC_WORKFLOW_QUESTION 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_QUESTION 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 Map getOrderNum(Map params) { String type = params.get("type"); //问题池 int poolcount = 0; //问题待响应 int dxycount = 0; //问题进行中 int jxzcount = 0; if("1".equals(type)){ poolcount = questionpoolCount(params); dxycount = queryQuestionOrderNodeCount(params); jxzcount = queryQuestionJxzCount(params); }else{ poolcount = myquestionpoolCount(params); params.put("type", "1"); dxycount = querymyQuestionOrderNodeCount(params); params.put("type", "2"); jxzcount = querymyQuestionOrderNodeCount(params); } Map map = new HashMap(); map.put("poolcount", poolcount); map.put("dxycount", dxycount); map.put("jxzcount", jxzcount); return map; } @Override public Map querymyQuestionNodeCount(Map params ) { String type = params.get("type"); String customerId = params.get("customerId"); //初始化变量 int ywc = 0; //问题受理 int wtsl = 0; //问题审核 int wtsh = 0; //问题诊断 int wtzd = 0; //方案审批 int fasp = 0; //方案实施 int fass = 0; //问题回顾 int wthg = 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_QUESTION 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_QUESTION 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 "); if(!StringUtil.isEmpty(customerId)){ selectSql.append(" AND A.CUSTOMER_ID = :customerId "); sql.append(" AND A.CUSTOMER_ID = :customerId "); paramMap.put("customerId", customerId); } 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_QUESTION_STATE_SL)) { wtsl += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { wtsh += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { wtzd += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { fasp += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { fass += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { wthg += num; continue; } } } int all = baseDao.queryForInteger(sql.toString(), paramMap); Map map = new HashMap(); map.put("wtsl", wtsl); map.put("wtsh", wtsh); map.put("wtzd", wtzd); map.put("fasp", fasp); map.put("fass", fass); map.put("wthg", wthg); map.put("all", all); return map; } @Override public int querymyQuestionEndCount(Map params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_QUESTION 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")); sql.append(sqlpart); sql.append( " GROUP BY B.ID ) D"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo querymyQuestionEndList(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("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 "); sql.append("FROM (SELECT F.* FROM WORKFLOW_BASE F WHERE F.BUSINESSTYPE = :businessType ) WB , WORKFLOW_NODE C ,SC_WORKFLOW_QUESTION 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_QUESTION)); sqlpart = getMyEndSql(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 ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params); } public StringBuilder getMyEndSql(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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_QUESTION 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 = getMyNodeSql(sqlpart,params); sql.append(sqlpart); sql.append( " GROUP BY B.ID ) D"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo querymyQuestionOrderNodeList(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_QUESTION 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_QUESTION)); sqlpart = getMyNodeSql(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 getMyNodeSql(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 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_QUESTION_STATE_SL)) { wtsl += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { wtsh += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { wtzd += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { fasp += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { fass += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { wthg += num; continue; } } } int all = baseDao.queryForInteger(sqlall.toString(), paramMap); Map map = new HashMap(); map.put("wtsl", wtsl); map.put("wtsh", wtsh); map.put("wtzd", wtzd); map.put("fasp", fasp); map.put("fass", fass); map.put("wthg", wthg); map.put("all", all); return map; } @Override public int questionpoolCount(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_QUESTION E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1 "); String customer_Id = params.get("customer_Id"); if(!StringUtil.isEmpty(customer_Id)){ sql.append(" AND B.CUSTOMER_ID = :customer_Id "); } 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); builder = getPoolSql(builder,params); builder.append(" AND D.BUSINESSTYPE = :businessType"); params.put("businessType",ConvertUtil.obj2StrBlank( Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); int count = baseDao.queryForInteger(builder.toString(),params); return count; } @Override public PageInfo questionpoolData(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_QUESTION E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1 "); String customer_Id = params.get("customer_Id"); if(!StringUtil.isEmpty(customer_Id)){ sql.append(" AND B.CUSTOMER_ID = :customer_Id "); } 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); builder = getPoolSql(builder,params); builder.append(" AND D.BUSINESSTYPE = :businessType"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); builder.append(" ORDER BY D.CREATETIME DESC "); PageInfo result = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params); return result; } public StringBuilder getPoolSql(StringBuilder builder,Map params){ 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+"%"); } return builder; } @Override public Map queryQuestionNodeCount(HttpServletRequest request) { //初始化变量 int ywc = 0; //问题受理 int wtsl = 0; //问题审核 int wtsh = 0; //问题诊断 int wtzd = 0; //方案审批 int fasp = 0; //方案实施 int fass = 0; //问题回顾 int wthg = 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_QUESTION 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_QUESTION 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_QUESTION_STATE_SL)) { wtsl += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { wtsh += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { wtzd += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { fasp += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { fass += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { wthg += num; continue; } } } int all = baseDao.queryForInteger(sql.toString(), paramMap); Map map = new HashMap(); map.put("wtsl", wtsl); map.put("wtsh", wtsh); map.put("wtzd", wtzd); map.put("fasp", fasp); map.put("fass", fass); map.put("wthg", wthg); map.put("all", all); return map; } @Override public int queryQuestionOrderNodeCount(Map params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_QUESTION 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 = getNodeSql(sqlpart,params); sql.append(sqlpart); sql.append( " GROUP BY B.ID ) D"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryQuestionOrderNodeList(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.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME "); sql.append("FROM SC_WORKFLOW_QUESTION 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_QUESTION)); sqlpart = getNodeSql(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.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 getNodeSql(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 params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND (\n" + "\tB.STATE != '9'\n" + "\tAND B.STATE != '10'\n" + "\tAND B.STATE != '7'\n" + ") "); sqlpart = getJxzSql(sqlpart,params); sql.append(sqlpart); sql.append( " GROUP BY B.ID ) D"); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryQuestionJxzList(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_QUESTION B,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID\n" + "AND WB.CURRENT_NODE_ID = C.ID "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND (\n" + "\tB.STATE != '9'\n" + "\tAND B.STATE != '10'\n" + "\tAND B.STATE != '7'\n" + ") "); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); 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 3 WHERE A.ID = B.BUSINESS_ID AND B.WFSTATE = 1 AND C.FLOWSTATE is not null"); sql.append( "SELECT COUNT(A.ID) FROM SC_WORKFLOW_QUESTION A,WORKFLOW_BASE B WHERE 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.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_QUESTION_STATE_SL)) { wtsl += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_SH)) { wtsh += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_WTZD)) { wtzd += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) { fasp += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) { fass += num; continue; } if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) { wthg += num; continue; } } } sql.append(" AND A.STATE != '9' AND A.STATE !='7' AND A.STATE != '10'"); int all = baseDao.queryForInteger(sql.toString(), paramMap); Map map = new HashMap(); map.put("wtsl", wtsl); map.put("wtsh", wtsh); map.put("wtzd", wtzd); map.put("fasp", fasp); map.put("fass", fass); map.put("wthg", wthg); map.put("all", all); return map; } @Override public int queryQuestionEndCount(Map params) { StringBuilder sql = new StringBuilder(); StringBuilder sqlpart = new StringBuilder(); sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB "); sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = :type "); params.put("type", params.get("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_QUESTION)); return baseDao.queryForInteger(sql.toString(),params); } @Override public PageInfo queryQuestionEndList(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.WFNOTE ,WB.ENDTIME , "); sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ,"); sql.append(" D.HANG_UP_USERNAME,D.HANG_UP_TIME,D.HANG_UP_REASON ,WB.SCORE "); sql.append("FROM (SELECT F.*,E.SCORE FROM WORKFLOW_BASE F LEFT JOIN ORDER_SATIS_INFO E ON F.ID = E.BUSINESS_ID WHERE F.BUSINESSTYPE = :businessType ) WB, WORKFLOW_NODE C ,SC_WORKFLOW_QUESTION 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("type", params.get("type")); params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)); 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.ID, 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 userList = baseDao.queryForList(sql, new SqlParameter("group_id",group_Id)); StringBuffer userName = new StringBuffer(); if(userList.size() > 0){ for(Map map1:userList){ userName.append(map1.get("ZSXM")); userName.append(","); } userName.deleteCharAt(userName.lastIndexOf(",")); }else{ String groupusersql = "SELECT B.ZSXM FROM AC_ROLE_GROUP_USER A,GG_USER B WHERE A.USER_ID = B.ID AND A.GROUP_ID = :groupId AND A.STATE = 1 "; userList = baseDao.queryForList(groupusersql,new SqlParameter("groupId",group_Id)); for(Map map1:userList){ userName.append(map1.get("ZSXM")); userName.append(","); } userName.deleteCharAt(userName.lastIndexOf(",")); } return userName.toString(); } @Override public String queryQuestionDealer(HttpServletRequest request) { StringBuffer userName = new StringBuffer(); String node_Id = request.getParameter("node_id"); WORKFLOW_NODE node = new WORKFLOW_NODE(node_Id).getInstanceById(); String sql = "SELECT * FROM WORKFLOW_NODE WHERE SAME_NODE_KEY = :same_node_key ORDER BY IS_ADMIN DESC"; List userList = baseDao.queryForList(sql,new SqlParameter("same_node_key",node.getSame_node_key())); for(Map map1:userList){ userName.append(map1.get("CURRENT_DEALER_NAME")); if(!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(map1.get("IS_ADMIN")))){ userName.append("(主负责人)"); } userName.append(","); } userName.deleteCharAt(userName.lastIndexOf(",")); return userName.toString(); } }