cy
2022-06-28 2ba5c891b24d4d0cd6ce7ef833592e4f576ee5e8
src/cn/ksource/web/facade/question/QuestionFacadeImpl.java
@@ -29,37 +29,37 @@
@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");
@@ -90,7 +90,7 @@
   @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();
@@ -102,7 +102,7 @@
      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();
@@ -111,7 +111,7 @@
      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("->");
@@ -135,7 +135,7 @@
            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)) {
@@ -151,7 +151,7 @@
            }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();
@@ -164,15 +164,15 @@
               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+"修改了问题信息");
@@ -183,9 +183,9 @@
               record.setNode_id(nodeid).setNode_name(nodeName);
               recordService.addRecord(record);
            }
            if(!"1".equals(sh)){
               WORKFLOW_BASE base = new WORKFLOW_BASE();
               if(!"2".equals(sh)){
@@ -202,9 +202,9 @@
                  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+"完成了节点");
@@ -212,10 +212,10 @@
                  WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
                  //关闭当前节点
                  workflowCoreService.finishNode(base, node, finishEntity);
               }
               NodeDealEntity entity = new NodeDealEntity();
               List<Map> userMap = new ArrayList();
               if("2".equals(sh)){
@@ -242,7 +242,7 @@
                  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")) {
                  //保存联系人的信息
@@ -267,8 +267,8 @@
               .setType(Constants.GG_MESSAGE_TYPE_WTGL);
               messageFacade.doSendMessage(message, userMap);
               resultMap.put("result", 1);
            }
            String usertype = "1";
            if("1".equals(dealer_type)){
@@ -284,7 +284,7 @@
            } 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);
            //提交工单时添加关联工单
@@ -292,11 +292,11 @@
            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);
@@ -315,19 +315,19 @@
               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<Map> 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);
@@ -350,7 +350,7 @@
               map.put("USER_ID", userList2[i]);
               map.put("USER_NAME", cacheuser.get(userList2[i]));
            }
            userMap.add(map);
         }
         dealer_type = "2";
@@ -365,7 +365,7 @@
         dealer_type = "1";
      }
      entity.setDealerList(userMap);
      baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", param);
      return dealer_type;
   }
@@ -373,46 +373,46 @@
   @Override
   public Map queryQuestionCount(HttpServletRequest request) {
        //初始化变量
      //问题受理响应中
      int wtsldxy = 0;
      //问题受理处理中
      int wtslclz = 0;
      //问题审核待响应
      int wtshdxy = 0;
      //问题审核处理中
      int wtshclz = 0;
      //问题诊断待响应
      int wtzddxy = 0;
      //问题诊断处理中
      int wtzdclz = 0;
      //方案审批待响应
      int faspdxy = 0;
      //方案审批处理中
      int faspclz = 0;
      //方案实施待响应
      int fassdxy = 0;
      //方案实施处理中
      int fassclz = 0;
      //问题回顾待响应
      int wthgdxy = 0;
      //问题回顾处理中
      int wthgclz = 0;
      //已完成
      int ywc = 0;
      //进行中
      int jxz = 0;
      StringBuffer selectSql = new StringBuffer();
      StringBuffer sql = new StringBuffer();
      Map paramMap = new HashMap();
      selectSql.append("SELECT COUNT(*) AS NUM,A.STATE,C.FLOWSTATE FROM SC_WORKFLOW_QUESTION A,WORKFLOW_BASE B LEFT JOIN WORKFLOW_NODE C ON B.ID = C.FLOWID AND B.CURRENT_NODE_ID = C.ID  WHERE A.ID = B.BUSINESS_ID  AND C.FLOWSTATE is not null   ");
      sql.append("SELECT COUNT(ID) FROM SC_WORKFLOW_QUESTION WHERE STATE != :yjj AND STATE !=:gb AND STATE != :ypj ");
@@ -422,9 +422,9 @@
         sql.append(" AND CUSTOMER_ID = :customerId ");
         paramMap.put("customerId", customerId);
       }
      paramMap.put("flowstate", 3);
      selectSql.append(" GROUP BY A.STATE,C.FLOWSTATE ");
      List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
      if(null!=list && list.size()>0) {
@@ -459,7 +459,7 @@
               }
               continue;
            }
            if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASP)) {
               if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){
                  faspdxy += num;
@@ -468,7 +468,7 @@
               }
               continue;
            }
            if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_FASS)) {
               if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){
                  fassdxy += num;
@@ -477,7 +477,7 @@
               }
               continue;
            }
            if(state.equals(Constants.SC_WORKFLOW_QUESTION_STATE_HG)) {
               if(flowstate == Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE){
                  wthgdxy += num;
@@ -486,51 +486,51 @@
               }
               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;
   }
@@ -538,21 +538,21 @@
   public int queryQuestionOrderCount(Map<String, String> 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<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE,C.FLOWSTATE , ");
@@ -561,45 +561,45 @@
      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<String, String> params){
      String customerid = params.get("customerId");
      if(StringUtil.notEmpty(customerid)) {
         sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
      }
      String subCustomerId = params.get("subCustomerId");
      if(StringUtil.notEmpty(subCustomerId)) {
         sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
         params.put("subCustomerId", subCustomerId);
      }
      String orderName = params.get("orderName");
      if(StringUtil.notEmpty(orderName)) {
         sqlpart.append(" AND B.NAME LIKE :orderName ");
         params.put("orderName", "%"+orderName+"%");
      }
      String orderCode = params.get("orderCode");
      if(StringUtil.notEmpty(orderCode)) {
         sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
         params.put("orderCode", "%"+orderCode+"%");
      }
      String contract = params.get("contract");
      if(StringUtil.notEmpty(contract)) {
         sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
         params.put("contract", "%"+contract+"%");
      }
      String pri = params.get("pri");
      if(StringUtil.notEmpty(pri)) {
         String[] pris = pri.split(",");
@@ -617,9 +617,9 @@
            sqlpart.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -637,8 +637,8 @@
            sqlpart.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -656,8 +656,8 @@
            sqlpart.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -694,10 +694,10 @@
               sqlpart.append( "  AND C.FLOWSTATE = :flowstate ");
               params.put("flowstate", state[1]);
            }
         }
      }
      return sqlpart;
   }
@@ -706,7 +706,7 @@
   public int queryMyQuestionCount(Map<String, String> params) {
      StringBuilder builder = new StringBuilder();
      params.put("ysc",ConvertUtil.obj2StrBlank( Constants.WORKFLOW_BASE_WFSTATE_DELETE));
      /**
       * 查询逻辑
       * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
@@ -715,7 +715,7 @@
       * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
       * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
       */
      String flowstate = params.get("flowstate");
      if(StringUtil.notEmpty(flowstate)) {
         if(flowstate.equals("1")) {
@@ -745,28 +745,28 @@
         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<String, String> params) {
      StringBuilder builder = new StringBuilder();
      params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
      /**
       * 查询逻辑
       * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
@@ -775,14 +775,14 @@
       * 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));
@@ -807,10 +807,10 @@
         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)){
@@ -821,7 +821,7 @@
      }
      int begin = Integer.valueOf(currPage);
      int size = Integer.valueOf(pageSize);
      if(!StringUtil.notEmpty(flowstate)) {
         builder.append( " ORDER BY D.FLOWSTATE,D.CREATETIME DESC" );
         List<Map> result = baseDao.queryForList(builder.toString(),params);
@@ -844,14 +844,14 @@
                  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;
@@ -868,7 +868,7 @@
         return result;
      }
   }
   public StringBuilder getMyquestionSql(StringBuilder builder,Map<String, String> params){
      String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
@@ -879,39 +879,39 @@
         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(",");
@@ -929,9 +929,9 @@
            builder.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -949,8 +949,8 @@
            builder.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -968,8 +968,8 @@
            builder.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -989,10 +989,10 @@
      }
      return builder;
   }
   @Override
   public Map queryLevel(String priority_id, String influence_id,String customerId) {
      String selectSql = "SELECT LEVEL_ID,LEVEL_NAME FROM SC_SLA_LEVEL_CONFIG WHERE INFLUENCE_ID = :influence_id AND PRIORITY_ID = :priority_id AND CUSTOMER_ID = :customerId";
      Map paramMap = new HashMap();
      paramMap.put("influence_id", influence_id);
@@ -1001,7 +1001,7 @@
      Map levelMap = baseDao.queryForMap(selectSql,paramMap);
      return levelMap;
   }
   @Override
   public List<Map> getFlueNode(HttpServletRequest request) {
      String flowId = request.getParameter("flowId");
@@ -1013,24 +1013,24 @@
      } else {
         currentNode = Constants.WTFQ;
      }
      //查询当前节点能发送的节点
      String selectSql = "SELECT * FROM QUESTION_FLOWRULE WHERE CUSTOMER_ID = :customer_id";
      List<Map> list = baseDao.queryForList(selectSql,new SqlParameter("customer_id",customer_id));
      Map prom = new HashMap();
      if(null!=list && list.size()>0) {
         prom = list.get(0);
         String json = ConvertUtil.obj2StrBlank(prom.get(Constants.questionNodeColunm.get(currentNode)));
         List<Map> nodes = JsonUtil.json2List(json);
         return nodes;
      }else{
         String gsSql = "SELECT * FROM QUESTION_FLOWRULE WHERE (CUSTOMER_ID IS NULL OR CUSTOMER_ID = '')";
         List<Map> 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<Map> nodes = JsonUtil.json2List(json);
            return nodes;
@@ -1038,12 +1038,12 @@
      }
      return new ArrayList<Map>();
   }
   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<Map> getZdyGroupList(HttpServletRequest request) {
      String customer_id = request.getParameter("customer_id");
@@ -1070,7 +1070,7 @@
            map.put("userlist", userName.deleteCharAt(userName.lastIndexOf(",")));
            map.put("useridlist", userId.deleteCharAt(userId.lastIndexOf(",")));
         }
      }
      return groupList;
   }
@@ -1079,13 +1079,13 @@
   public List<Map> groupuser(String groupId) {
      String usersql = "SELECT * FROM CUSTOM_GROUP WHERE GROUP_ID = :group_id";
      List<Map> groupuser = baseDao.queryForList(usersql, new SqlParameter("group_id",groupId));
      return groupuser;
   }
   @Override
   public Map usersbyGroup(HttpServletRequest request) {
      Map main = new HashMap();
      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";
@@ -1105,11 +1105,11 @@
      StringBuilder sql = new StringBuilder();
      List<Map> cateList = new ArrayList<Map>();
      List<Map> userList = new ArrayList<Map>();
      sql.setLength(0);
      sql.append(" select G.ID ,G.ROLENAME from 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);
@@ -1127,7 +1127,7 @@
               }
               tempList.add(userMap);
            }
         }
         tempMap.put("dataList", tempList);
         resList.add(tempMap);
@@ -1143,11 +1143,11 @@
      String groupId = request.getParameter("groupId");
      String customer_id = request.getParameter("customer_id");
      String groupname = request.getParameter("name");
      //人员
      String[] user = request.getParameterValues("users");
      //人员
      String[] user = request.getParameterValues("users");
      //主要负责人
      String userMain = request.getParameter("userid");
      String sqluser = "SELECT * FROM GG_USER  ";
      List<Map> userList = baseDao.queryForList(sqluser);
      Map cacheuser = new HashMap();
@@ -1155,9 +1155,9 @@
         cacheuser.put(users.get("ID"), users.get("ZSXM"));
      }
        List<Map> list = new ArrayList<Map>();
      Map cacheMap = new HashMap();
      for(int i=0;i<user.length;i++){
         String userId = user[i];
         if(!cacheMap.containsKey(userId)) {
@@ -1186,9 +1186,9 @@
         .setCreate_time(DateUtil.getCurrentDate14());
      }
      group.insertOrUpdate();
   }
   /**
    * 通过orderid获取流程信息
    */
@@ -1197,7 +1197,7 @@
      String selectSql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowId AND CURRENT_DEALER_ID = :userId AND FLOWSTATE <> 3 ";
      return baseDao.queryForMap(selectSql,new SqlParameter("flowId",flowId).addValue("userId", userId));
   }
   @Override
   public Map queryQuestionBaseMsg(String orderId) {
      String selectSql = "SELECT A.*,B.WFSTATE,N.ANSWER_TIME,B.BUSINESSTYPE,B.CURRENT_DEALER_ID clr FROM SC_WORKFLOW_QUESTION A LEFT JOIN  WORKFLOW_BASE B ON A.ID = B.BUSINESS_ID LEFT JOIN WORKFLOW_NODE N ON B.CURRENT_NODE_ID = N.ID  WHERE A.ID = :orderId  ";
@@ -1242,15 +1242,15 @@
      return baseMap;
   }
   @Override
   @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());
@@ -1263,34 +1263,34 @@
      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) {
@@ -1318,8 +1318,8 @@
      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();
@@ -1329,7 +1329,7 @@
      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+"修改了问题信息");
@@ -1339,13 +1339,13 @@
      record.setBusiness_id(flowId);
      record.setNode_id(nodeid).setNode_name(nodeName);
      recordService.addRecord(record);
   }
   @Override
   public List<Map> 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));
   }
@@ -1355,9 +1355,9 @@
      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());
@@ -1370,7 +1370,7 @@
         }else{
            zdMsg = new QUESTION_ZD_HISTORY(id).getBeanMapById();
         }
      }
      return zdMsg;
   }
@@ -1380,16 +1380,16 @@
      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)){
@@ -1405,11 +1405,11 @@
         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{
@@ -1418,9 +1418,9 @@
         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");
@@ -1450,7 +1450,7 @@
      }
      return result;
   }
   @Override
   public Map gettempMsg(String id,String userId) {
      //获取当前所处的节点
@@ -1461,7 +1461,7 @@
      Map msg = baseDao.queryForMap(sql, new SqlParameter("node_id",nodeid));
      return msg;
   }
   @Override
   public Map updateAssign(HttpServletRequest request) {
      Map resultMap = new HashMap();
@@ -1477,14 +1477,14 @@
      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"));
@@ -1497,14 +1497,14 @@
         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")){
@@ -1533,11 +1533,11 @@
               }else{
                  state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ;
               }
         }
         }
         if(StringUtil.notEmpty(selectUser)) {
            //执行分派任务
            NodeDealEntity entity = new NodeDealEntity();
            entity.setDealer_type(3);
            List<Map> dealerList = new ArrayList<Map>();
@@ -1563,44 +1563,44 @@
                     map.put("USER_NAME", cacheuser.get(userList2[i]));
                     dealUserName += cacheuser.get(userList2[i])+",";
                  }
                  dealerList.add(map);
               }
               dealUserName = dealUserName.substring(0, dealUserName.length()-1);
            } else {
               entity.setBefore_Dealer_type(1);
               entity.setRoleID(selectUser.split("&")[0]);
               entity.setRoleName(selectUser.split("&")[1]);
               //查询改组下面的所有人员信息
               String sqlUser = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
               dealerList = baseDao.queryForList(sqlUser,new SqlParameter("groupId",selectUser.split("&")[0]));
               dealUserName = entity.getRoleName();
            }
            entity.setDealerList(dealerList);
            NodeFinishEntity finishEntity = new NodeFinishEntity();
            finishEntity.setDeal_result(1);
            finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
            finishEntity.setDeal_note(bz);
            WORKFLOW_NODE node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
            boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
            if (canFinish) {
               workflowBusinessService.toNode(base, node_template_id, entity);
            }
            }
            //更新问题状态
            Map param = new HashMap();
            param.put("state", state);
            param.put("questionId", base.getBusiness_id());
            String updateIncidentSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state  ";
            if(curnodeId .equals(Constants.WTZD)){
               updateIncidentSql += " ,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,TRUE_REASON = :true_reason ,RESOLVE = :resolve ,SUGGEST = :suggest ";
               param.put("true_reason",true_reason );
               param.put("resolve", resolve);
@@ -1622,13 +1622,13 @@
               }
               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);
@@ -1654,15 +1654,15 @@
            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");
@@ -1677,7 +1677,7 @@
      //关闭当前节点
      workflowCoreService.finishNode(base, node, finishEntity);
   }
   @Override
   public Map getBeforeNodeMsg(String nodeId) {
      WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
@@ -1691,20 +1691,20 @@
      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+"回退了节点");
@@ -1712,7 +1712,7 @@
      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<Map> 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()));
      //回退时,关闭所有节点
@@ -1721,7 +1721,7 @@
         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;
@@ -1738,18 +1738,18 @@
      }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<Map> list = new ArrayList<Map>();
      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);
@@ -1777,7 +1777,7 @@
      resultMap.put("msg", msg);
      return resultMap;
   }
   @Override
   public Map updateApplyEnd(HttpServletRequest request) {
      Map resultMap = new HashMap();
@@ -1959,17 +1959,17 @@
      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");
@@ -1978,17 +1978,17 @@
      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;
@@ -1996,8 +1996,8 @@
         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())){
@@ -2016,10 +2016,10 @@
            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);
@@ -2043,18 +2043,18 @@
      record.setBusiness_id(flowId);
      record.setNode_id(nodeid).setNode_name(nodeName);
      recordService.addRecord(record);
      //结束工单
        WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
      List<Map> list = new ArrayList<Map>();
      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);
@@ -2062,7 +2062,7 @@
         workflowCoreService.closeWorkFlow(base);
      }
   }
   @Override
   public List queryLinkwtOrder(HttpServletRequest request) {
      String orderCode = request.getParameter("orderCode");
@@ -2077,27 +2077,27 @@
      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<Map> list = baseDao.queryForList(sql.toString(),param);
      for (Map map2 : list) {
         map2.put("BUSINESSTYPE_TEXT", Constants.mapWORKFLOW_BUSINESS_TYPE_Label(ConvertUtil.obj2Str(map2.get("BUSINESSTYPE"))));
         map2.put("WFSTATE_TEXT", Constants.getWORKFLOW_BASE_WFSTATE_Label(ConvertUtil.obj2Str(map2.get("WFSTATE"))));
@@ -2105,7 +2105,7 @@
      }
      return list;
   }
   @Override
   public String getIsOpenQuestion(HttpServletRequest request) {
      String orderId = request.getParameter("orderId");
@@ -2114,7 +2114,7 @@
      Map param = new HashMap();
      param.put("bus_id", orderId);
      param.put("userId", userId);
      int count = baseDao.queryForInteger(sql, param);
      if(count > 0){
         return "1";
@@ -2122,7 +2122,7 @@
         return "0";
      }
   }
   @Override
   public Map questionInfo(HttpServletRequest request) {
      String questionId=request.getParameter("orderId");
@@ -2168,7 +2168,7 @@
      map.put("fileList", fileList);
      return map;
   }
   @Override
   public void updateResolveType(HttpServletRequest request) {
      String orderId = request.getParameter("orderId");
@@ -2204,10 +2204,10 @@
      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+"结束节点");
@@ -2217,9 +2217,9 @@
      workflowCoreService.finishNode(base, node, finishEntity);
      //关闭工单
      workflowCoreService.closeWorkFlow(base);
   }
   @Override
   public void updateQuestiongq(HttpServletRequest request) {
      String orderId = request.getParameter("orderId");
@@ -2232,7 +2232,7 @@
      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());
@@ -2267,9 +2267,9 @@
      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");
@@ -2286,7 +2286,7 @@
      }
      return gqList;
   }
   @Override
   public void updateQuestionOpen(HttpServletRequest request) {
      Map user = WebUtil.getLoginUser(request).getLoginUser();
@@ -2305,7 +2305,7 @@
      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);
@@ -2313,19 +2313,19 @@
      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();
@@ -2334,7 +2334,7 @@
      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 ");
@@ -2362,57 +2362,57 @@
               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<String, String> params) {
      String sql = new String();
      params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
      sql = "SELECT COUNT(D.ID) FROM  SC_WORKFLOW_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;
      }
@@ -2422,19 +2422,19 @@
   @Override
   public PageInfo myquestionpoolData(PageInfo pageInfo,
         Map<String, String> params) {
      String sql = new String();
      params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
      sql = "SELECT D.* FROM SC_WORKFLOW_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();
@@ -2445,30 +2445,30 @@
      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 CREATEDAY ");
         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 CREATEDAY ");
         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<Map> dataList = baseDao.queryForList(builder.toString(),params);
      if(dataList!=null&&dataList.size()>0){
         List<String> categories = DateUtil.getDates(startDay ,endDay);
         categories.add(String.valueOf(DateUtil.getCurrentDate8()));
         List<String> categories_format = new ArrayList<String>();
         Map dataMap = new HashMap();
         Map tempMap = new HashMap();
         List<Map> series = new ArrayList<Map>();
@@ -2493,26 +2493,26 @@
      }
      return chartMap;
   }
   public StringBuilder getMypoolsql(StringBuilder builder,Map<String, String> 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 ");
@@ -2521,8 +2521,8 @@
      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;
@@ -2532,14 +2532,14 @@
   public Map getLastMonthQuestionLv(Map<String, String> 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 ");
@@ -2557,11 +2557,11 @@
         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<Map> catelist = baseDao.queryForList(builder.toString());
@@ -2585,11 +2585,11 @@
      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 ");
@@ -2601,7 +2601,7 @@
         builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
         builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime  group by q.PRIORITY_ID ");
      }
      List<Map> dataList = baseDao.queryForList(builder.toString(),params);
      if(dataList!=null&&dataList.size()>0){
         Map dataMap = new HashMap();
@@ -2631,11 +2631,11 @@
      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 ");
@@ -2647,7 +2647,7 @@
         builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
         builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime  group by q.INFLUENCE_ID ");
      }
      List<Map> dataList = baseDao.queryForList(builder.toString(),params);
      if(dataList!=null&&dataList.size()>0){
         Map dataMap = new HashMap();
@@ -2679,24 +2679,24 @@
      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 SERVER_ID ");
         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 SERVER_ID ");
         builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime  group by q.THIRD_CATEGORY_ID ");
      }
      List<Map> dataList = baseDao.queryForList(builder.toString(),params);
      if(dataList!=null&&dataList.size()>0){
         builder.setLength(0);
@@ -2740,9 +2740,9 @@
      int jxzcount = 0;
      if("1".equals(type)){
            poolcount = questionpoolCount(params);
         dxycount = queryQuestionOrderNodeCount(params);
         jxzcount = queryQuestionJxzCount(params);
      }else{
         poolcount = myquestionpoolCount(params);
@@ -2751,7 +2751,7 @@
         params.put("type", "2");
         jxzcount = querymyQuestionOrderNodeCount(params);
      }
      Map map = new HashMap();
      map.put("poolcount", poolcount);
      map.put("dxycount", dxycount);
@@ -2767,40 +2767,40 @@
      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.* 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.*  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 ");
      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) D  GROUP BY D.STATE ");
      selectSql.append(" GROUP BY A.ID,A.STATE) D  GROUP BY D.STATE ");
      sql.append(" GROUP BY A.ID) D ");
      List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
      if(null!=list && list.size()>0) {
         for(Map map : list) {
@@ -2818,40 +2818,40 @@
               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;
   }
@@ -2859,16 +2859,16 @@
   public int querymyQuestionEndCount(Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
      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);
   }
@@ -2877,24 +2877,24 @@
         Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
      sql.append("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 ORDER BY WB.CREATETIME DESC ");
      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<String, String> params){
      String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
         sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
@@ -2903,27 +2903,27 @@
      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(",");
@@ -2941,9 +2941,9 @@
            sqlpart.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -2961,8 +2961,8 @@
            sqlpart.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -2980,8 +2980,8 @@
            sqlpart.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -3006,15 +3006,15 @@
   public int querymyQuestionOrderNodeCount(Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
      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);
   }
@@ -3023,7 +3023,7 @@
         Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,C.FLOWSTATE, ");
      sql.append("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  ");
@@ -3031,11 +3031,11 @@
      params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION));
      sqlpart = getMyNodeSql(sqlpart,params);
      sql.append(sqlpart);
      sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
      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<String, String> params){
       String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
@@ -3045,27 +3045,27 @@
      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(",");
@@ -3083,9 +3083,9 @@
            sqlpart.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -3103,8 +3103,8 @@
            sqlpart.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -3122,8 +3122,8 @@
            sqlpart.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -3146,7 +3146,7 @@
         sqlpart.append( " AND B.STATE = :state  ");
         params.put("state", status);
      }
       return sqlpart;
    }
@@ -3156,19 +3156,19 @@
      int ywc = 0;
      //问题受理
      int wtsl = 0;
      //问题审核
      int wtsh = 0;
      //问题诊断
      int wtzd = 0;
      //方案审批
      int fasp = 0;
      //方案实施
      int fass = 0;
      //问题回顾
      int wthg = 0;
      StringBuffer sql = new StringBuffer();
@@ -3177,18 +3177,18 @@
      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 B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1   ");
      sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.* FROM SC_WORKFLOW_QUESTION E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1   ");
      sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.ID FROM SC_WORKFLOW_QUESTION E,WORKFLOW_BASE D,(SELECT B.ID,B.ROLENAME FROM AC_ROLE B WHERE B.STATE = 1   ");
      sql.append(") C WHERE E.ID = D.BUSINESS_ID AND D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' )");
      sqlall.append(") C WHERE E.ID = D.BUSINESS_ID AND D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' )");
      String customer_Id = request.getParameter("customerId");
      if(!StringUtil.isEmpty(customer_Id)){
         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) F ");
      List<Map> list = baseDao.queryForList(sql.toString(),paramMap);
@@ -3208,38 +3208,38 @@
               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;
   }
@@ -3253,25 +3253,25 @@
       * 如果是客户服务台,查询我的工单池  则查询工单表中分组是 (查询该客户下所有的项目的服务台分组)
       * 如果是总服务台,则查询所有客户下(加盟商下所有项目的服务台分组)
       */
      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;
   }
@@ -3280,16 +3280,16 @@
         Map<String, String> params) {
      /**
       * 查询我的工单池规则
       * 如果是项目服务台,则直接查询工单表
       * 如果是项目服务台,则直接查询工单表
       * 如果是客户服务台,查询我的工单池  则查询工单表中分组是 (查询该客户下所有的项目的分组)
       * 如果是总服务台,则查询所有客户下(加盟商下所有项目的分组)
       */
      StringBuffer sql = new StringBuffer();
      params.put("wfstate", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
      //查询该人员所属的项目
      sql.append("SELECT D.* FROM SC_WORKFLOW_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 ");
@@ -3297,16 +3297,16 @@
      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<String, String> params){
      String status = params.get("status");
      if(StringUtil.notEmpty(status)) {
@@ -3320,20 +3320,20 @@
      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 ");
@@ -3341,46 +3341,46 @@
      }
      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.* 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.*  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 ");
      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) D  GROUP BY D.STATE ");
      selectSql.append(" GROUP BY A.ID,a.STATE) D  GROUP BY D.STATE ");
      sql.append(" GROUP BY A.ID) D ");
      List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
      if(null!=list && list.size()>0) {
         for(Map map : list) {
@@ -3398,40 +3398,40 @@
               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;
   }
@@ -3439,14 +3439,14 @@
   public int queryQuestionOrderNodeCount(Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
      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);
   }
@@ -3455,19 +3455,19 @@
         Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
      sql.append("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 ORDER BY WB.CREATETIME DESC ");
      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<String, String> params){
      String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
@@ -3477,27 +3477,27 @@
      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(",");
@@ -3515,9 +3515,9 @@
            sqlpart.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -3535,8 +3535,8 @@
            sqlpart.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -3554,7 +3554,7 @@
            sqlpart.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -3576,16 +3576,16 @@
      if(StringUtil.notEmpty(status)) {
         sqlpart.append( " AND B.STATE = :state  ");
         params.put("state", status);
      }
      return sqlpart;
   }
   @Override
   public int queryQuestionJxzCount(Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB   ");
      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" +
@@ -3595,7 +3595,7 @@
      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);
   }
@@ -3604,7 +3604,7 @@
         Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT WB.* ,B.STATE ,B.NAME ");
      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" +
@@ -3615,11 +3615,11 @@
      params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION));
      sqlpart = getJxzSql(sqlpart,params);
      sql.append(sqlpart);
      sql.append( " GROUP BY WB.ID ORDER BY WB.CREATETIME DESC ");
      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<String, String> params){
      String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
@@ -3629,27 +3629,27 @@
      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(",");
@@ -3667,9 +3667,9 @@
            sqlpart.append(")");
         }
      }
      String dg = params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -3687,8 +3687,8 @@
            sqlpart.append(")");
         }
      }
      String source = params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -3706,8 +3706,8 @@
            sqlpart.append(")");
         }
      }
      String sl = params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -3739,33 +3739,33 @@
      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,A.STATE FROM  SC_WORKFLOW_QUESTION A,WORKFLOW_BASE B  LEFT JOIN WORKFLOW_NODE C ON B.ID = C.FLOWID\n" +
            "AND B.CURRENT_NODE_ID = C.ID\n" +
            "AND C.FLOWSTATE <> 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 ");
@@ -3773,7 +3773,7 @@
         paramMap.put("customer_Id", customer_Id);
      }
      selectSql.append("  GROUP BY A.STATE ");
      List<Map> list = baseDao.queryForList(selectSql.toString(),paramMap);
      if(null!=list && list.size()>0) {
         for(Map map : list) {
@@ -3791,58 +3791,58 @@
               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<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_QUESTION B,WORKFLOW_BASE WB   ");
      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);
   }
@@ -3851,22 +3851,23 @@
         Map<String, String> params) {
      StringBuilder sql = new StringBuilder();
      StringBuilder sqlpart = new StringBuilder();
      sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
      sql.append("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 ORDER BY WB.CREATETIME DESC ");
      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<String, String> params){
      String customerId = params.get("customerId");
      if(StringUtil.notEmpty(customerId)) {
@@ -3876,27 +3877,27 @@
      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(",");
@@ -3914,9 +3915,9 @@
            sqlpart.append(")");
         }
      }
      String dg =  params.get("dg");
      if(StringUtil.notEmpty(dg)) {
         String[] dgs = dg.split(",");
@@ -3934,8 +3935,8 @@
            sqlpart.append(")");
         }
      }
      String source =  params.get("source");
      if(StringUtil.notEmpty(source)) {
         String[] sources = source.split(",");
@@ -3953,8 +3954,8 @@
            sqlpart.append(")");
         }
      }
      String sl =  params.get("sl");
      if(StringUtil.notEmpty(sl)) {
         String[] sls = sl.split(",");
@@ -3979,7 +3980,7 @@
      }
      return sqlpart;
   }
   @Override
   public String queryQuestionGroupDealer(HttpServletRequest request) {
      String group_Id = request.getParameter("group_id");
@@ -4003,7 +4004,7 @@
      }
      return userName.toString();
   }
   @Override
   public String queryQuestionDealer(HttpServletRequest request) {
      StringBuffer userName = new StringBuffer();
@@ -4022,6 +4023,6 @@
      return userName.toString();
   }
}