cy
2022-06-22 425675051e544cf29b2132615cfbf7a93dc5e51f
fix(dm): MySQL=》DMSQL
16个文件已修改
4936 ■■■■ 已修改文件
core/cn/ksource/core/util/ConvertUtil.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/controller/business/pages/incident/IncidentController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/controller/business/pages/question/QuestionController.java 523 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/change/ChangeFacadeImpl.java 198 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/ciremind/CiRemindFacadeImpl.java 452 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/dsl/DSLFacadeImpl.java 543 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/fileManage/DocFacadeImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/health/HealthFacadeImpl.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/incident/IncidentFacadeImpl.java 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/knowledge/KmLibraryFacadeImpl.java 248 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/question/QuestionFacadeImpl.java 1081 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/releaseManage/ReleaseFacadeImpl.java 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/servicelist/SlaProjectFacadeImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/workReport/WorkReportFacadeImpl.java 587 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/facade/zc/ZcywFacadeImpl.java 686 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/cn/ksource/web/service/knowledge/KmServiceImpl.java 171 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/cn/ksource/core/util/ConvertUtil.java
@@ -1,5 +1,8 @@
package cn.ksource.core.util;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -7,29 +10,26 @@
import java.net.URLEncoder;
import java.util.*;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
public class ConvertUtil {
    public static Boolean obj2Boolean(Object obj){
        return obj == null ? false : Boolean.getBoolean(obj.toString());
    }
    public static Double obj2Double(Object obj){
        if (obj == null) {
            return null;
        }
        return StringUtil.isBlank(obj2Str(obj)) ? null : Double.valueOf(obj.toString());
    }
    public static void main(String[] args) {
        String str = "0.123";
        System.out.println(obj2Double(str));
    }
    /**
     * List转Map
     * @param dataList
@@ -48,7 +48,7 @@
        }
        return resultMap;
    }
    /**
     * List转Map
     * @param dataList
@@ -66,8 +66,8 @@
        }
        return resultMap;
    }
    /**
     * 如果为空,使用提供的值替换
     * @param obj
@@ -78,7 +78,7 @@
    public static Object defaultIfEmpty(Object obj,Object o){
        return obj == null || StringUtils.isBlank(obj.toString()) || StringUtils.equalsIgnoreCase(obj.toString(), "null") ? o : obj;
    }
    /**將GBK转化为GBK
     * @param str
     * @return
@@ -95,11 +95,11 @@
        }
        return str;
    }
    public static String html2Text(String html){
        return html.replaceAll("<[^>]+>", "").replaceAll("&nbsp;","");
    }
    /**
     * 功能描述:Object类转换为String,避免在Object为null时,直接toString()出错<BR>
     * @param obj
@@ -114,28 +114,25 @@
        return obj == null ? "" : obj.toString();
    }
    public static Integer obj2Integer(Object obj){
        return obj == null || obj.toString().trim().equals("")  ? null : Integer.parseInt(obj.toString());
        return obj == null || obj.toString().trim().equals("")  ? null : Integer.parseInt(obj.toString());
    }
    public static int obj2Int(Object obj){
        if(null==obj) {
            System.out.println("1121313");
        }
        return obj == null || obj.toString().trim().equals("")  ? null : Double.valueOf(obj.toString()).intValue();
        return obj == null || obj.toString().trim().equals("")  ? 0 : Double.valueOf(obj.toString()).intValue();
    }
    public static Long obj2Long(Object obj){
        return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString());
        return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString());
    }
    public static Long obj2Long(Object obj,boolean filter){
        if (!filter) {
            return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString());
            return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString());
        } else {
            return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString().replaceAll("[^0-9]", ""));
            return obj == null || obj.toString().trim().equals("") ? null : Long.parseLong(obj.toString().replaceAll("[^0-9]", ""));
        }
    }
    /**
     * 功能描述:过滤用户输入的html、sql、javascript脚本<BR>
     * @param map
@@ -199,7 +196,7 @@
        }
        return resultMap;
    }
    /**
     * 将byte转化为K或M,大于1024K的按M计算,返回*K或*M
     * @param byteSize
@@ -210,15 +207,15 @@
        BigDecimal b1 = new BigDecimal(byteSize);
        BigDecimal b2 = new BigDecimal(1024);
        double k = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
        //大于1024,转化为M
        if (k > 1024) {
            b2 = new BigDecimal(1024*1024);
            k = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
            return k + "M";
        }
        return k + "K";
    }
}
src/cn/ksource/web/controller/business/pages/incident/IncidentController.java
@@ -1,14 +1,19 @@
package cn.ksource.web.controller.business.pages.incident;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.ksource.beans.SC_PARTNER_CUSTOMER_INFO;
import cn.ksource.beans.SC_SERVCE_CATEGORY;
import cn.ksource.beans.SC_WORKFLOW_INCIDENT;
import cn.ksource.beans.WORKFLOW_BASE;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.*;
import cn.ksource.core.web.SysInfo;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.facade.customermanage.CustomerManageFacade;
import cn.ksource.web.facade.incident.IncidentFacade;
import cn.ksource.web.facade.order.OrderFacade;
import cn.ksource.web.service.DataDictionaryService;
import cn.ksource.web.service.message.MessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -18,25 +23,13 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import cn.ksource.beans.SC_PARTNER_CUSTOMER_INFO;
import cn.ksource.beans.SC_SERVCE_CATEGORY;
import cn.ksource.beans.SC_WORKFLOW_INCIDENT;
import cn.ksource.beans.WORKFLOW_BASE;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.NumberUtil;
import cn.ksource.core.util.ParamsMapUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.SysInfo;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.facade.customermanage.CustomerManageFacade;
import cn.ksource.web.facade.incident.IncidentFacade;
import cn.ksource.web.facade.order.OrderFacade;
import cn.ksource.web.service.DataDictionaryService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 日常运维--事件管理控制器
 * @note:
@@ -1216,8 +1209,8 @@
            baseMsg.put("jjWidth", 150);
        }
        /*List<Map> lzs = incidentFacade.incidentLzRecord(flowId);
        modelAndView.addObject("lzs", lzs);*/
@@ -1465,7 +1458,9 @@
        String CUSTOMER_ID =ConvertUtil.obj2Str(report.get("CUSTOMER_ID"));
        if(StringUtil.notEmpty(CUSTOMER_ID)){
            SC_PARTNER_CUSTOMER_INFO customer_INFO=new SC_PARTNER_CUSTOMER_INFO(CUSTOMER_ID).getInstanceById();
            report.put("customer_code", customer_INFO.getCustomer_code());
            if (customer_INFO != null){
                report.put("customer_code", customer_INFO.getCustomer_code());
            }
        }
        String FIRST_CATEGORY_ID=ConvertUtil.obj2Str(report.get("FIRST_CATEGORY_ID"));
        if(StringUtil.notEmpty(FIRST_CATEGORY_ID)){
src/cn/ksource/web/controller/business/pages/question/QuestionController.java
@@ -47,31 +47,31 @@
@Controller
@RequestMapping("/business/pages/question")
public class QuestionController {
    @Autowired
    private QuestionFacade questionFacade;
    @Autowired
    private IncidentFacade incidentFacade;
    @Autowired
    private DataDictionaryService dataDictionaryService;
    @Autowired
    private FileService fileService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private OrderFacade orderFacade;
    @Resource
    private CustomerManageFacade customerFacade;
    @Autowired
    private MessageService messageService;
@@ -129,40 +129,40 @@
    @RequestMapping(value="questionList.html", method=RequestMethod.GET)
    public ModelAndView questionList(HttpServletRequest request, HttpServletResponse response) {
        ModelAndView view = new ModelAndView("/business/pages/question/questionList");
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.queryQuestionCount(request);
        System.out.println(JsonUtil.map2Json(msgCount));
        view.addObject("c", msgCount);
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
        params.put("type","1");
        Map map = questionFacade.getOrderNum(params);
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单列表数据
     */
@@ -175,9 +175,9 @@
        modelAndView.addObject("orderList", list);
        return modelAndView;
    }
    /**
     * 查询问题工单总数量
     */
@@ -188,24 +188,24 @@
        int count = questionFacade.queryQuestionOrderCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 跳转到我的问题工单列表
     */
    @RequestMapping("myQuestion.html")
    public ModelAndView myIncident(HttpServletRequest request) {
        ModelAndView view = new ModelAndView("/business/pages/question/myQuestion");
        Map num = orderFacade.queryOrderCountByCate(request, Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION.toString());
        view.addObject("num", num);
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
@@ -213,11 +213,11 @@
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
@@ -226,8 +226,8 @@
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询我的问题列表
     */
@@ -241,7 +241,7 @@
        modelAndView.addObject("orders", question);
        return modelAndView;
    }
    /**
     * 查询我的问题数量
     */
@@ -253,7 +253,7 @@
        int count = questionFacade.queryMyQuestionCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 服务台创建问题页面
     * @param request
@@ -265,8 +265,8 @@
        ModelAndView view = new ModelAndView("/business/pages/question/addquestion");
        //来源于事件升级
        Map questionMsg = questionFacade.getQuestionMsgByOrderId(request);
        //查询问题来源数据字典
        List<Map> froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        //取得问题来源的第一条数据
@@ -275,21 +275,21 @@
            view.addObject("fromId", from.get("DATAKEY"));
            view.addObject("fromName", from.get("DATAVALUE"));
        }
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        view.addObject("froms", froms);
        view.addObject("questionMsg", questionMsg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
@@ -299,7 +299,7 @@
        view.addObject("gnmark", GnConstants.ADDWT);
        return view;
    }
    /**
     * 服务台创建问题页面
     * @param request
@@ -311,8 +311,8 @@
        ModelAndView view = new ModelAndView("/business/pages/question/addquestion");
        //来源于事件升级
        Map questionMsg = questionFacade.getQuestionMsgByOrderId(request);
        //查询问题来源数据字典
        List<Map> froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        //取得问题来源的第一条数据
@@ -321,21 +321,21 @@
            view.addObject("fromId", from.get("DATAKEY"));
            view.addObject("fromName", from.get("DATAVALUE"));
        }
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        view.addObject("froms", froms);
        view.addObject("questionMsg", questionMsg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
@@ -345,7 +345,7 @@
        view.addObject("gnmark", GnConstants.FWTADDWT);
        return view;
    }
    /**
     * 服务台创建问题页面
     * @param request
@@ -357,29 +357,29 @@
        ModelAndView view = new ModelAndView("/business/pages/question/addchangequestion");
        //来源于事件升级
        Map questionMsg = questionFacade.getQuestionMsgByOrderId(request);
        //查询问题来源数据字典
        List froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        view.addObject("froms", froms);
        view.addObject("questionMsg", questionMsg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        return view;
    }
    /**
     * 创建问题提交
     * @param request
@@ -406,10 +406,10 @@
                            "",
                            SysInfo.Error,"");
                }
            }
    }
    /**
     * 通过优先级和影响度查询对应的级别
     */
@@ -419,10 +419,10 @@
        String influence_id = request.getParameter("influence_id");
        String customerId = request.getParameter("customer_id");
        Map levelMap = questionFacade.queryLevel(priority_id,influence_id,customerId);
        WebUtil.write(response, JsonUtil.map2Json(levelMap));
    }
    /**
     * 分配人员
     */
@@ -436,7 +436,7 @@
        modelAndView.addObject("curnodeId", curnodeId);
        return modelAndView;
    }
    /**
     * 查询所有的分配人员
     */
@@ -447,7 +447,7 @@
        modelAndView.addObject("groupList", groupList);
        return modelAndView;
    }
    /**
     * 查询所有的分配人员
     */
@@ -458,7 +458,7 @@
        modelAndView.addObject("groupList", groupList);
        return modelAndView;
    }
    /**
     * 查询角色
     */
@@ -469,7 +469,7 @@
        modelAndView.addObject("groupList", groupList);
        return modelAndView;
    }
    /**
     * 查询客户自定义组
     */
@@ -480,7 +480,7 @@
        modelAndView.addObject("groupList", groupList);
        return modelAndView;
    }
    /**
     * 查询客户自定义组
     */
@@ -491,7 +491,7 @@
        modelAndView.addObject("groupList", groupList);
        return modelAndView;
    }
    /**
     * 添加客户自定义组下的人员
     */
@@ -500,21 +500,21 @@
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/addzdyGroupUser");
        String groupId = request.getParameter("groupId");
        if(!StringUtil.isEmpty(groupId)){
            modelAndView.addObject("group", new CUSTOM_GROUP(groupId).getBeanMapById());
        }else{
            modelAndView.addObject("group", new HashMap());
        }
        Map users = questionFacade.usersbyGroup(request);
        modelAndView.addObject("users", users.get("resList"));
        modelAndView.addObject("groupuser", users.get("groupuser"));
        modelAndView.addObject("main", users);
        return modelAndView;
    }
    /**
     * 添加客户自定义组下的人员
     */
@@ -523,12 +523,12 @@
        String groupId = request.getParameter("groupId");
        String customerId = request.getParameter("customerId");
        questionFacade.addGroupUser(request);
        return WebUtil.sysInfoPage(request, "操作成功!",
                "window.top.hideDialog('zdyadd');window.top.document.getElementById('dialogIframedealer').contentWindow.loadGroup();",
                SysInfo.Success,"");
    }
    /**
     * 删除客户自定义分组
     */
@@ -539,7 +539,7 @@
        group.setId(id).deleteById();
        WebUtil.write(response, "1");
    }
    /**
     * 跳转到工单处理页面
     * @param request
@@ -548,7 +548,7 @@
    @RequestMapping("questionDeal.html")
    public ModelAndView questionDeal(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/questionDeal");
        //查询问题基本信息
        String orderId = request.getParameter("orderId");
        String flowId = request.getParameter("flowId");
@@ -569,20 +569,20 @@
        //查询问题来源数据字典
        List froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
        Map node = questionFacade.getFlowMsg(flowId, WebUtil.getLoginedUserId(request));
        //node为空,则为分派到组
        if(StringUtil.isEmpty(ConvertUtil.obj2StrBlank(node.get("ID")))){
            node = new WORKFLOW_NODE(base.getCurrent_node_id()).getBeanMapById();
        }
        String isclose = "";
        List<Map> closejd = JsonUtil.json2List(ConvertUtil.obj2Str(questionMap.get("closejd")));
        for(Map map:closejd){
@@ -624,7 +624,7 @@
        modelAndView.addObject("repeat_mark", questionMap.get("REPEAT_MARK"));
        return modelAndView;
    }
    @RequestMapping("anwer.html")
    public ModelAndView anwer(HttpServletRequest request, HttpServletResponse response) {
        ModelAndView view = new ModelAndView("/business/pages/question/anwer");
@@ -647,22 +647,22 @@
        }else{
            view.addObject("nodeMsg", question);
        }
        view.addObject("flowId", flowId);
        view.addObject("nodeId", nodeId);
        view.addObject("orderId", orderId);
        return view;
    }
    @RequestMapping(value="answer.html", method=RequestMethod.POST)
    public void anwerSubmit(HttpServletRequest request, HttpServletResponse response) {
        String result = questionFacade.anwerSubmit(request);
        WebUtil.write(response, result);
    }
    /**
     * 查询问题基本信息
     */
@@ -675,7 +675,7 @@
        modelAndView.addObject("baseMsg", baseMsg);
        return modelAndView;
    }
    /**
     * 问题修改页面
     * @param request
@@ -691,25 +691,25 @@
        List<Map> fileList = fileService.getFileList(flowId);
        questionMap.put("fileList", fileList);
        view.addObject("question", questionMap);
        //查询问题来源数据字典
        List froms = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        view.addObject("eventPri", eventPri);
        view.addObject("froms", froms);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        return view;
    }
    /**
     * 修改问题提交
     * @param request
@@ -719,12 +719,12 @@
    @RequestMapping(value="editQuestion.html", method=RequestMethod.POST)
    public ModelAndView editQuestionSubmit(HttpServletRequest request, HttpServletResponse response,SC_WORKFLOW_QUESTION sc_workflow_question) {
        questionFacade.updateQuestion(request,sc_workflow_question);
        return WebUtil.sysInfoPage(request, "操作成功!",
                "window.top.location.reload(true);",
                SysInfo.Success,"",null);
    }
    /**
     * 诊断报告历史
     */
@@ -737,10 +737,10 @@
        Map baseMsg = new SC_WORKFLOW_QUESTION(orderId).getBeanMapById();
        modelAndView.addObject("curnodeId", curnodeId);
        modelAndView.addObject("baseMsg", baseMsg);
        return modelAndView;
    }
    /**
     * 诊断报告历史数据
     */
@@ -755,7 +755,7 @@
        modelAndView.addObject("orderMsg", new SC_WORKFLOW_QUESTION(orderId).getBeanMapById());
        return modelAndView;
    }
    /**
     * 诊断报告历史
     */
@@ -772,7 +772,7 @@
        modelAndView.addObject("orderMsg", new SC_WORKFLOW_QUESTION(orderId).getBeanMapById());
        return modelAndView;
    }
    /**
     * 跳转到填写结局方案页面
     */
@@ -784,23 +784,23 @@
        Map zdMsg = questionFacade.getzdmsgbyId(request);
        List<Map> fileList = new ArrayList<Map>();
        if(!StringUtil.isEmpty(type)){
            if("1".equals(type)){
                fileList=fileService.getFileList(ConvertUtil.obj2StrBlank(zdMsg.get("ZDID")));
            }else{
                fileList=fileService.getFileList(ConvertUtil.obj2StrBlank(zdMsg.get("ID")));
            }
        }
        modelAndView.addObject("zdMsg", zdMsg);
        modelAndView.addObject("type", type);
        modelAndView.addObject("fileList", fileList);
        return modelAndView;
    }
    /**
     * 结果方案提交
     */
@@ -810,9 +810,9 @@
        return WebUtil.sysInfoPage(request, "操作成功!",
                "window.top.document.getElementById('zdReportIframe').contentWindow.queryRecord();window.top.hideDialog('2');",
                SysInfo.Success,"",null);
    }
    /**
     * 诊断报告历史数据
     */
@@ -823,7 +823,7 @@
        zd.deleteById();
        WebUtil.write(response, "1");
    }
    /**
     * 查询是否可以进入下一个节点
     */
@@ -832,7 +832,7 @@
        String issave = questionFacade.issave(request);
        WebUtil.write(response, issave);
    }
    /**
     * 分配人员
     */
@@ -863,7 +863,7 @@
        modelAndView.addObject("tempMsg", tempMsg);
        return modelAndView;
    }
    /**
     * 分派人员
     */
@@ -886,12 +886,12 @@
                return WebUtil.sysInfoPage(request, "操作失败!",
                        "",
                        SysInfo.Error,"");
            }
         }
    }
    /**
     * 流转备注
     */
@@ -900,7 +900,7 @@
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/lzbz");
        return modelAndView;
    }
    /**
     * 流转备注
     */
@@ -911,7 +911,7 @@
                    "window.top.hideDialog('2');",
                    SysInfo.Success,"/business/pages/question/myQuestion.html");
    }
    /**
     * 工单审核中回退
     */
@@ -925,7 +925,7 @@
        modelAndView.addObject("nodeMap", nodeMap);
        return modelAndView;
    }
    /**
     * 工单审核中回退
     */
@@ -937,17 +937,17 @@
                    "window.top.hideDialog('2');",
                    SysInfo.Success,"/business/pages/question/myQuestion.html",msg);
    }
    /**
     * 跳转到填写申请工单结束方案页面
     */
    @RequestMapping(value="adminEndQuestion.html",method=RequestMethod.GET)
    public ModelAndView adminEndQuestion(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/adminEndQuestion");
        return modelAndView;
    }
    /**
     * 申请工单结束方案提交
     */
@@ -959,7 +959,7 @@
                "window.top.hideDialog('10');",
                SysInfo.Success,"/business/pages/question/myQuestion.html",msg);
    }
    /**
     * 跳转到填写结局方案页面
     */
@@ -977,10 +977,10 @@
        modelAndView.addObject("ways", ways);
        modelAndView.addObject("endMsg", endMsg);
        modelAndView.addObject("question", question);
        return modelAndView;
    }
    /**
     * 结果方案提交
     */
@@ -988,24 +988,24 @@
    public ModelAndView endQuestionsubmit(HttpServletRequest request,HttpServletResponse response) {
        questionFacade.updateEndQuestion(request);
        String orderId = request.getParameter("orderId");
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/rechange");
        modelAndView.addObject("orderId", orderId);
        modelAndView.addObject("bustype", Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION);
        return modelAndView;
    }
    /**
     * 查询重复问题工单
     */
    @RequestMapping("linkwtOrder.html")
    public ModelAndView linkwtOrder(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/linkwtOrder");
        return modelAndView;
    }
    /**
     * 查询关联工单
     */
@@ -1016,7 +1016,7 @@
        modelAndView.addObject("orders", orders);
        return modelAndView;
    }
    /**
     * 问题回退信息提交
     * @param request
@@ -1032,7 +1032,7 @@
                    "",
                    SysInfo.Success,"/business/pages/question/myQuestion.html",msg);
    }
    /**
     * 工单审核中关闭
     */
@@ -1047,30 +1047,30 @@
        modelAndView.addObject("question", question);
        return modelAndView;
    }
    /**
     * 工单审核中关闭
     */
    @RequestMapping(value="closequestion.html", method=RequestMethod.POST)
    public ModelAndView closequestionsubmit(HttpServletRequest request,HttpServletResponse response) {
        questionFacade.updateResolveType(request);
        return WebUtil.sysInfoPage(request, "操作成功!",
                "window.top.hideDialog('3');",
                SysInfo.Success,"/business/pages/question/myQuestion.html",null);
    }
    /**
     * 跳转到订单查看页面
     */
    @RequestMapping("questionDetail.html")
    public ModelAndView incidentDetail(HttpServletRequest request,HttpServletResponse response) {
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/questionDetail");
        //查询问题基本信息
        String orderId = request.getParameter("orderId");
        String flowId = request.getParameter("flowId");
        //通过工单编号查询工单基本信息
        Map baseMsg = questionFacade.queryQuestionBaseMsg(orderId);
        String isopen = questionFacade.getIsOpenQuestion(request);
@@ -1079,10 +1079,10 @@
        modelAndView.addObject("orderId", orderId);
        modelAndView.addObject("flowId", flowId);
        modelAndView.addObject("isopen", isopen);
        return modelAndView;
    }
    /**
     * 问题处理服务报告
     * @param request
@@ -1098,6 +1098,7 @@
            String CUSTOMER_ID =ConvertUtil.obj2Str(report.get("CUSTOMER_ID"));
            if(StringUtil.notEmpty(CUSTOMER_ID)){
                SC_PARTNER_CUSTOMER_INFO customer_INFO=new SC_PARTNER_CUSTOMER_INFO(CUSTOMER_ID).getInstanceById();
                if (customer_INFO !=null)
                report.put("customer_code", customer_INFO.getCustomer_code());
            }
            String FIRST_CATEGORY_ID=ConvertUtil.obj2Str(report.get("FIRST_CATEGORY_ID"));
@@ -1122,7 +1123,7 @@
        view.addObject("fileList", map.get("fileList"));
        return view;
    }
    /**
     * 退回信息
     */
@@ -1133,13 +1134,13 @@
        String nodeId = request.getParameter("nodeId");
        Map question = new SC_WORKFLOW_QUESTION(orderId).getBeanMapById();
        WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
        Map nodeMsgMap = new WORKFLOW_NODE(node.getSource_node_instance_id()).getBeanMapById();
        nodeMsgMap.put("NAME", question.get("NAME"));
        modelAndView.addObject("nodeMsg", nodeMsgMap);
        return modelAndView;
    }
    /**
     * 工单挂起
     */
@@ -1151,29 +1152,29 @@
        modelAndView.addObject("ways", ways);
        return modelAndView;
    }
    /**
     * 工单挂起
     */
    @RequestMapping(value="questiongq.html", method=RequestMethod.POST)
    public ModelAndView questiongqsubmit(HttpServletRequest request,HttpServletResponse response) {
        questionFacade.updateQuestiongq(request);
        return WebUtil.sysInfoPage(request, "操作成功!",
                "window.top.hideDialog('3');",
                SysInfo.Success,"/business/pages/question/myQuestion.html",null);
    }
    /**
     * 查询挂起历史
     */
    @RequestMapping("gqhistoryList.html")
    public ModelAndView gqhistoryList(HttpServletRequest request) {
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/gqhistoryList");
        return modelAndView;
    }
    /**
     * 查询挂起历史数据
     */
@@ -1184,7 +1185,7 @@
        modelAndView.addObject("gqList", gqList);
        return modelAndView;
    }
    /**
     * 工单开启
     */
@@ -1193,7 +1194,7 @@
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/questionopen");
        return modelAndView;
    }
    /**
     * 工单开启
     */
@@ -1204,7 +1205,7 @@
                    "window.top.hideDialog('5');",
                    SysInfo.Success,"/business/pages/question/myQuestion.html",null);
    }
    /**
     * 跳转到我的工单池页面
     */
@@ -1214,14 +1215,14 @@
        String type = request.getParameter("type");
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.querymyQuestionpoolCount(request);
        System.out.println(JsonUtil.map2Json(msgCount));
        modelAndView.addObject("c", msgCount);
        //查询工单类型
        Map<String, String> state = Constants.mapWORKFLOW_BASE_BUSINESS_TYPE;
        List ways = new ArrayList();
        for (Map.Entry<String, String> entry : state.entrySet()) {
        for (Map.Entry<String, String> entry : state.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            Map map = new HashMap();
@@ -1235,11 +1236,11 @@
            ways.add(map);
        }
        modelAndView.addObject("types", ways);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        modelAndView.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
@@ -1248,7 +1249,7 @@
        modelAndView.addObject("data", map);
        return modelAndView;
    }
    /**
     * 查询我的工单池数据
     */
@@ -1259,11 +1260,11 @@
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
        PageInfo orderList = questionFacade.myquestionpoolData(pageInfo,params);
        modelAndView.addObject("orders", orderList);
        return modelAndView;
    }
    /**
     * 查询我的工单池数据
     */
@@ -1275,8 +1276,8 @@
        int count = questionFacade.myquestionpoolCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 事件服务台首页(我的)
     * @param model
@@ -1297,32 +1298,32 @@
        model.addAttribute("data", map);
        return "/business/pages/question/myQuestionIndex";
    }
    @RequestMapping(value="myQuestionIndexLoad.html")
    public String myQuestionIndexLoad(Model model,HttpServletRequest request,HttpServletResponse response){
        Map<String, String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getUserId(request));
        //工单池问题数量
        int poolCount = questionFacade.myquestionpoolCount(params);
        int poolCount = questionFacade.myquestionpoolCount(params);
        //待处理问题数量
        params.put("type","1");
        int pendingCount = questionFacade.querymyQuestionOrderNodeCount(params);
        int pendingCount = questionFacade.querymyQuestionOrderNodeCount(params);
        //进行中问题数量
        params.put("type","2");
        int inHandCount = questionFacade.querymyQuestionOrderNodeCount(params);
        int inHandCount = questionFacade.querymyQuestionOrderNodeCount(params);
        //已处理
        params.put("type","3");
        int processedCount = questionFacade.querymyQuestionOrderNodeCount (params);
        int processedCount = questionFacade.querymyQuestionOrderNodeCount (params);
        model.addAttribute("poolCount",poolCount);
        model.addAttribute("pendingCount",pendingCount);
        model.addAttribute("inHandCount",inHandCount);
        model.addAttribute("processedCount",processedCount);
        return "/business/pages/question/myQuestionIndexLoad";
    }
    /**
     * 查询最近一月问题数量
     * @param request
@@ -1344,8 +1345,8 @@
        Map<String, String> params = ParamsMapUtil.getParameterMap(request);
        Map info = questionFacade.getLastMonthQuestionLv(params);
        WebUtil.write(response, JsonUtil.map2Json(info));
    }
    }
    /**
     * 查询最近一月问题优先级分析
     * @param request
@@ -1356,8 +1357,8 @@
        Map<String, String> params = ParamsMapUtil.getParameterMap(request);
        Map info = questionFacade.getLastMonthQuestionPri(params);
        WebUtil.write(response, JsonUtil.map2Json(info));
    }
    }
    /**
     * 查询最近一月问题影响度分析
     * @param request
@@ -1369,8 +1370,8 @@
        Map info = questionFacade.getLastMonthQuestionEffect(params);
        //System.out.println("json--------------------------"+JsonUtil.map2Json(info));
        WebUtil.write(response, JsonUtil.map2Json(info));
    }
    }
    /**
     * 查询最近一月服务目录问题数量
     * @param request
@@ -1382,8 +1383,8 @@
        Map info = questionFacade.getLastMonthQuestionServer(params);
        WebUtil.write(response, JsonUtil.map2Json(info));
    }
    /**
     * 问题待响应列表页面
     * @param request
@@ -1399,15 +1400,15 @@
        params.put("type", type);
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.querymyQuestionNodeCount(params);
        System.out.println(JsonUtil.map2Json(msgCount));
        view.addObject("c", msgCount);
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
@@ -1418,17 +1419,17 @@
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        params.put("type","2");
        Map map = questionFacade.getOrderNum(params);
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单列表数据
     */
@@ -1443,9 +1444,9 @@
        modelAndView.addObject("type", params.get("type"));
        return modelAndView;
    }
    /**
     * 查询问题工单总数量
     */
@@ -1457,7 +1458,7 @@
        int count = questionFacade.querymyQuestionOrderNodeCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题待响应列表页面
     * @param request
@@ -1469,9 +1470,9 @@
        ModelAndView view = new ModelAndView("/business/pages/question/myquestionEndList");
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
@@ -1479,23 +1480,23 @@
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        view.addObject("type", type);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getLoginedUserId(request));
        params.put("type","2");
        Map map = questionFacade.getOrderNum(params);
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单列表数据
     */
@@ -1510,9 +1511,9 @@
        modelAndView.addObject("type", params.get("type"));
        return modelAndView;
    }
    /**
     * 查询问题工单总数量
     */
@@ -1524,7 +1525,7 @@
        int count = questionFacade.querymyQuestionEndCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题催办
     * @return
@@ -1533,7 +1534,7 @@
    public String questionRemind(HttpServletRequest request,HttpServletResponse response){
        return "/business/pages/question/questionRemind";
    }
    @RequestMapping(value="questionRemind.html",method=RequestMethod.POST)
    public ModelAndView doQuestionRemind(HttpServletRequest request,HttpServletResponse response){
        String reminder = WebUtil.getLoginUser(request).getLoginUser().get("ZSXM").toString();
@@ -1544,7 +1545,7 @@
                "window.top.hideDialog('0');",
                SysInfo.Success,"");
    }
    /**
     * 所有工单池
     */
@@ -1553,14 +1554,14 @@
        ModelAndView modelAndView = new ModelAndView("/business/pages/question/questionpool");
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.queryQuestionpoolCount(request);
        System.out.println(JsonUtil.map2Json(msgCount));
        modelAndView.addObject("c", msgCount);
        //查询工单类型
        Map<String, String> state = Constants.mapWORKFLOW_BASE_BUSINESS_TYPE;
        List ways = new ArrayList();
        for (Map.Entry<String, String> entry : state.entrySet()) {
        for (Map.Entry<String, String> entry : state.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            Map map = new HashMap();
@@ -1569,21 +1570,21 @@
            ways.add(map);
        }
        modelAndView.addObject("types", ways);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        modelAndView.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("type","1");
        Map map = questionFacade.getOrderNum(params);
        modelAndView.addObject("data", map);
        return modelAndView;
    }
    /**
     * 查询我的工单池数据
     */
@@ -1593,11 +1594,11 @@
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        PageInfo orderList = questionFacade.questionpoolData(pageInfo,params);
        modelAndView.addObject("orders", orderList);
        return modelAndView;
    }
    /**
     * 查询我的工单池数据
     */
@@ -1608,7 +1609,7 @@
        int count = questionFacade.questionpoolCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题待响应列表页面
     * @param request
@@ -1620,37 +1621,37 @@
        ModelAndView view = new ModelAndView("/business/pages/question/questionNodeList");
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.queryQuestionNodeCount(request);
        System.out.println(JsonUtil.map2Json(msgCount));
        view.addObject("c", msgCount);
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
        //查询事件影响度数据字典
        List<Map> eventDg = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
        view.addObject("eventDg", eventDg);
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("type","1");
        Map map = questionFacade.getOrderNum(params);
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单待响应列表数据
     */
@@ -1663,9 +1664,9 @@
        modelAndView.addObject("orderList", list);
        return modelAndView;
    }
    /**
     * 查询问题工单待响应总数量
     */
@@ -1676,7 +1677,7 @@
        int count = questionFacade.queryQuestionOrderNodeCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题进行中列表页面
     * @param request
@@ -1688,15 +1689,15 @@
        ModelAndView view = new ModelAndView("/business/pages/question/questionJxzList");
        //查询工单数量,通过类型判断查询那种类型的数量
        Map msgCount = questionFacade.queryQuestionJxzNodeCount(request);
        System.out.println(JsonUtil.map2Json(msgCount));
        view.addObject("c", msgCount);
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
@@ -1706,7 +1707,7 @@
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("type","1");
@@ -1714,9 +1715,9 @@
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单进行中列表数据
     */
@@ -1729,9 +1730,9 @@
        modelAndView.addObject("orderList", list);
        return modelAndView;
    }
    /**
     * 查询问题工单进行中总数量
     */
@@ -1742,7 +1743,7 @@
        int count = questionFacade.queryQuestionJxzCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题待响应列表页面
     * @param request
@@ -1754,9 +1755,9 @@
        ModelAndView view = new ModelAndView("/business/pages/question/questionEndList");
        //查询问题类型数据字典
        List sources = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
        view.addObject("sources", sources);
        //查询该加盟商的事件优先级
        List<Map> eventPri = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
        view.addObject("eventPri", eventPri);
@@ -1767,7 +1768,7 @@
        //客户列表
        List<Map> cusList = incidentFacade.getCustomerList();
        view.addObject("customers", cusList);
        //定义参数Map
        Map<String,String> params = ParamsMapUtil.getParameterMap(request);
        params.put("type","1");
@@ -1775,9 +1776,9 @@
        view.addObject("data", map);
        return view;
    }
    /**
     * 查询问题工单列表数据
     */
@@ -1791,9 +1792,9 @@
        modelAndView.addObject("type", params.get("type"));
        return modelAndView;
    }
    /**
     * 查询问题工单总数量
     */
@@ -1804,8 +1805,8 @@
        int count = questionFacade.queryQuestionEndCount(params);
        WebUtil.write(response, String.valueOf(count));
    }
    /**
     * 问题首页
     * @param model
@@ -1825,23 +1826,23 @@
        model.addAttribute("data", map);
        return "/business/pages/question/questionIndex";
    }
    @RequestMapping(value="questionIndexLoad.html")
    public String questionIndexLoad(Model model,HttpServletRequest request,HttpServletResponse response){
        Map<String, String> params = ParamsMapUtil.getParameterMap(request);
        params.put("userId", WebUtil.getUserId(request));
        //工单池问题数量
        int poolCount = questionFacade.questionpoolCount(params);
        int poolCount = questionFacade.questionpoolCount(params);
        //待处理问题数量
        int pendingCount = questionFacade.queryQuestionOrderNodeCount(params);
        int pendingCount = questionFacade.queryQuestionOrderNodeCount(params);
        //进行中问题数量
        int inHandCount = questionFacade.queryQuestionJxzCount(params);
        int inHandCount = questionFacade.queryQuestionJxzCount(params);
        //已挂起
        params.put("type", "6");
        int sleepCount = questionFacade.queryQuestionEndCount(params);
        int sleepCount = questionFacade.queryQuestionEndCount(params);
        model.addAttribute("poolCount",poolCount);
        model.addAttribute("pendingCount",pendingCount);
        model.addAttribute("inHandCount",inHandCount);
@@ -1856,7 +1857,7 @@
        String user = questionFacade.queryQuestionDealer(request);
        WebUtil.write(response, user);
    }
    /**
     * 查询问题工单处理人
     */
@@ -1865,5 +1866,5 @@
        String user = questionFacade.queryQuestionGroupDealer(request);
        WebUtil.write(response, user);
    }
}
src/cn/ksource/web/facade/change/ChangeFacadeImpl.java
@@ -4,20 +4,14 @@
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.NumberUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.util.*;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.core.workflow.*;
import cn.ksource.web.Constants;
import cn.ksource.web.controller.wechat.util.WechatConstants;
import cn.ksource.web.entity.WorkFlowSupportEntity;
import cn.ksource.web.facade.dsl.DSLFacade;
import cn.ksource.web.facade.incident.IncidentFacade;
import cn.ksource.web.facade.message.MessageFacade;
import cn.ksource.web.service.WorkOrderCodeService;
import cn.ksource.web.service.device.DeviceService;
import cn.ksource.web.service.file.FileService;
@@ -283,24 +277,24 @@
            if (flowstate.equals("1")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                //查询处理人是我的
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                builder.append(" SELECT B.BUSINESS_ID, B.BUSINESSTYPE, B.CREATERID, B.CREATERNAME, B.CREATETIME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_NODE_ID, B.CURRENT_NODE_NAME, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.DEAL_TYPE, B.ENDTIME, B.ID, B.MAINFLOWID, B.ORDER_CODE, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_ID, B.SUB_CUSTOMER_NAME, B.WF_TEMPLATE_ID, B.WFNAME, B.WFSTATE, B.WORKFLOWTYPE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                builder.append(")D");
                paramMap.put("jddcl", Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE);
            } else if (flowstate.equals("2")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                builder.append(")D");
                paramMap.put("jdjxz", Constants.WORKFLOW_NODE_FLOWSTATE_DOING);
            } else {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                builder.append(")D");
                paramMap.put("jdywc", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH);
            }
        } else {
            builder.append(" SELECT DISTINCT D.* FROM ( ");
            //查询处理人是我的
            builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            builder.append(")D");
        }
        builder.append(" WHERE 1=1 ");
@@ -894,7 +888,7 @@
    @Override
    public List<Map> getCcbResult(String flowId) {
        String sqla = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY ORDER BY NUM ";
        String sqla = "SELECT SAMEKEY,NUM FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY,NUM ORDER BY NUM ";
        List<Map> fzList = baseDao.queryForList(sqla, new SqlParameter("flow_id", flowId));
        for (Map mapa : fzList) {
            String sqlb = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey ORDER BY IS_END ,IS_MAIN";
@@ -920,7 +914,7 @@
    public List<Map> getCcbTjResult(String flowId) {
        Map param = new HashMap();
        param.put("flow_id", flowId);
        String sqla="SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY ORDER BY NUM";
        String sqla="SELECT SAMEKEY,NUM FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY,NUM ORDER BY NUM";
        List<Map> ccbList = baseDao.queryForList(sqla,param);
        for(Map mapa:ccbList){
            param.put("sameKey", mapa.get("SAMEKEY"));
@@ -1772,7 +1766,7 @@
        recordService.addRecord(record);
        return resultMap;
    }
    @Override
    public int getDslLinkCiCount(HttpServletRequest request) {
        String dslId = request.getParameter("id");
@@ -1788,7 +1782,7 @@
        }else{
            sql = "SELECT COUNT(A.ID)  FROM CMDB_DSL_LINK A WHERE  A.DSL_ID = :dslId AND A.FLOW_ID = :flowId AND A.STATE <> 3 ";
        }
        Map param = new HashMap();
        param.put("dslId", dslId);
        param.put("flowId", flowId);
@@ -1811,20 +1805,20 @@
        }else{
            sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE B.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE B.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE B.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_DSL_LINK A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.DSL_ID = :dslId AND A.FLOW_ID = :flowId  ";
        }
        Map param = new HashMap();
        param.put("dslId", dslId);
        param.put("flowId", flowId);
        PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param);
        return info;
    }
    @Override
    public int queryDslVersionCount(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A  WHERE A.DSL_ID = :dslId  ");
        String dslId = request.getParameter("dslId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        int count = baseDao.queryForInteger(builder.toString(), paramMap);
@@ -1834,14 +1828,14 @@
    @Override
    public PageInfo queryDslVersionData(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID  WHERE A.DSL_ID = :dslId  ORDER BY A.CREATE_TIME DESC  ");
        String dslId = request.getParameter("dslId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        return pageInfo;
        return pageInfo;
    }
    @Override
@@ -1857,17 +1851,17 @@
            builder.append(" AND SECOND_CONFIG_CATE = :folderId ");
            paramMap.put("folderId", id);
        }
        int count = baseDao.queryForInteger(builder.toString(), paramMap);
        return count;
    }
    @Override
    public PageInfo queryDslConfigRecordData(HttpServletRequest request,
            String versionId) {
        String flowId = request.getParameter("flowId");
        String id = request.getParameter("id");
        StringBuilder builder = new StringBuilder("SELECT B.*,A.FILE_NAME,A.FILE_SIZE,A.USER_NAME,A.CREATE_TIME FROM DSL_CONFIG_FILE A,DSL_CONFIG_FILE_CHANGE_DETAIL B WHERE B.FILE_ID = A.ID AND B.DSL_VERSION_ID = :versionId  AND B.FLOW_ID = :flowId ");
@@ -1878,11 +1872,11 @@
            builder.append(" AND SECOND_CONFIG_CATE = :folderId ");
            paramMap.put("folderId", id);
        }
        builder.append(" ORDER BY A.CREATE_TIME DESC ");
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        List<Map> files = pageInfo.getDatas();
        if(null!=files && files.size()>0) {
            for(Map file : files) {
@@ -1891,13 +1885,13 @@
        }
        return pageInfo;
    }
    @Override
    public List<Map> getDslciData(HttpServletRequest request) {
        String flowId = request.getParameter("flowId");
        String dslId = request.getParameter("dslId");
        String projectId = request.getParameter("proId");
        /*if(!StringUtil.notEmpty(projectId)) {
            WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
            projectId = base.getProject_id();
@@ -1906,12 +1900,12 @@
        param.put("project_id", projectId);
        param.put("flow_id", flowId);
        param.put("dsl_id", dslId);
        StringBuffer sql1 = new StringBuffer("select * from (SELECT 1 AS UPDTYPE, A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND  A.ID NOT IN  (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE  B.DSL_ID = :dsl_id  )");//A.LEIX = 1 AND
        StringBuffer sql2 = new StringBuffer("SELECT 2 AS UPDTYPE,A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND  A.ID IN (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE  B.FLOW_ID IS NULL AND B.DSL_ID = :dsl_id  )");
        sql1.append(" UNION ALL ");
        sql1.append(sql2);
        sql1.append(" ) s where 1 = 1");
        String searchCode = request.getParameter("searchCode");
@@ -1919,13 +1913,13 @@
            sql1.append(" AND SEARCHCODE LIKE :searchCode ");
            param.put("searchCode", "%"+searchCode+"%");
        }
        String ciName = request.getParameter("cmdbName");
        if(StringUtil.notEmpty(ciName)) {
            sql1.append(" AND CINAME LIKE :cmdbName ");
            param.put("cmdbName", "%"+ciName+"%");
        }
        String cate = request.getParameter("categoryId");
        if(StringUtil.notEmpty(cate)) {
            sql1.append(" AND LV3_ID = :cate ");
@@ -1961,15 +1955,15 @@
        long create_time = DateUtil.getCurrentDate14();
        List<SqlParameter> listParams = new ArrayList<SqlParameter>();
        List<SqlParameter> updParams = new ArrayList<SqlParameter>();
        String[] linkIds = ids.split(",");
        String userId = "";
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        List<SqlParameter> listParamsRecord = new ArrayList<SqlParameter>();
        for(String linkId : linkIds) {
            SqlParameter sqlParameter = new SqlParameter();
            String citype[] = linkId.split("-");
@@ -1988,28 +1982,28 @@
            }else{
                updParams.add(sqlParameter);
            }
        }
        baseDao.executeBatch(insertSql,listParams);
        baseDao.executeBatch(updSql,updParams);
        return "1";
    }
    @Override
    public List changeFileReport(HttpServletRequest request) {
        String partnerId = "";
        String flowId = request.getParameter("flowId");
        Map paramMap = new HashMap();
        paramMap.put("flowId", flowId);
        String selectSql = "SELECT A.*,B.FILE_NAME,B.FILE_SIZE,B.USER_NAME AS UPLOAD_USER FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_CONFIG_FILE B WHERE A.FILE_ID = B.ID AND A.FLOW_ID = :flowId ";
        List<Map> records = baseDao.queryForList(selectSql,paramMap);
        Map cacheRecord = new HashMap();
        if(null!=records && records.size()>0) {
            for(Map record : records) {
                String versionId = ConvertUtil.obj2StrBlank(record.get("DSL_VERSION_ID"));
                String first_config_cate = ConvertUtil.obj2StrBlank(record.get("first_config_cate"));
@@ -2026,11 +2020,11 @@
                }
            }
        }
        StringBuilder selectCateSql = new StringBuilder("SELECT B.ID AS VERSION_ID,A.FIRST_CONFIG_CATE,(SELECT A1.NAME FROM DSL_CONFIG A1 WHERE A.FIRST_CONFIG_CATE = A1.ID) AS FIRST_NAME,A.SECOND_CONFIG_CATE,(SELECT A2.NAME FROM DSL_CONFIG A2 WHERE A.SECOND_CONFIG_CATE = A2.ID) AS SECOND_NAME FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId  GROUP BY B.ID,A.FIRST_CONFIG_CATE,A.SECOND_CONFIG_CATE");
        List<Map> cates = baseDao.queryForList(selectCateSql.toString(),paramMap);
        if(cates.size()==0){
@@ -2041,72 +2035,72 @@
            selectCateSql = new StringBuilder("SELECT C.* FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId ");
            cates = baseDao.queryForList(selectCateSql.toString(),paramMap);
        }
        Map cacheFirst = new HashMap();
        Map version = new HashMap();
        if(null!=cates && cates.size()>0) {
            for(Map cate : cates) {
                String versionId = ConvertUtil.obj2StrBlank(cate.get("VERSION_ID"));
                String first_config_cate = ConvertUtil.obj2StrBlank(cate.get("FIRST_CONFIG_CATE"));
                String unitKey = versionId+"-"+first_config_cate;
                String first_name = ConvertUtil.obj2StrBlank(cate.get("FIRST_NAME"));
                String second_config_cate = ConvertUtil.obj2StrBlank(cate.get("SECOND_CONFIG_CATE"));
                String second_name = ConvertUtil.obj2StrBlank(cate.get("SECOND_NAME"));
                List result = new ArrayList();
                if(version.containsKey(versionId)) {
                    result = (List)version.get(versionId);
                } else {
                    version.put(versionId, result);
                }
                if(cacheFirst.containsKey(unitKey)) {
                    List secondCates = (List)cacheFirst.get(unitKey);
                    Map secondMap = new HashMap();
                    secondMap.put("second_config_cate", second_config_cate);
                    secondMap.put("second_name", second_name);
                    String key = unitKey+"-"+second_config_cate;
                    secondMap.put("files", cacheRecord.get(key));
                    secondCates.add(secondMap);
                } else {
                    Map firstMap = new HashMap();
                    firstMap.put("key", unitKey);
                    firstMap.put("first_name", first_name);
                    List secondCates = new ArrayList();
                    Map secondMap = new HashMap();
                    secondMap.put("second_config_cate", second_config_cate);
                    secondMap.put("second_name", second_name);
                    String key = unitKey+"-"+second_config_cate;
                    secondMap.put("files", cacheRecord.get(key));
                    secondCates.add(secondMap);
                    firstMap.put("seconds", secondCates);
                    cacheFirst.put(unitKey,secondCates);
                    result.add(firstMap);
                }
            }
        }
        String selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C  WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId  GROUP BY C.ID,B.ID");
        List<Map> versions = baseDao.queryForList(selectVersionSql,paramMap);
        if(versions.size()==0){
            selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_VERSION B,PROJECT_DSL C WHERE B.DSL_ID = C.ID AND B.CREATE_FLOW_ID = :flowId  GROUP BY B.ID");
            versions = baseDao.queryForList(selectVersionSql.toString(),paramMap);
@@ -2115,11 +2109,11 @@
            selectVersionSql = new String("SELECT C.*,C.ID AS DSL_ID FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId ");
            versions = baseDao.queryForList(selectVersionSql.toString(),paramMap);
        }
        List<Map> resultList = new ArrayList<Map>();
        Map cacheDsl = new HashMap();
        if(null!=versions && versions.size()>0) {
            for(Map ver : versions) {
                String dsl_searchcode = ConvertUtil.obj2StrBlank(ver.get("DSL_SEARCHCODE"));
@@ -2132,7 +2126,7 @@
                Map v = new HashMap();
                v.put("version_id", version_id);
                v.put("edition", edition);
                List<Map> cs = (List<Map>)version.get(version_id);
                System.out.println("vs------->"+JsonUtil.list2Json(cs));
                int totalNum = 0;
@@ -2156,7 +2150,7 @@
                                num = num+1;
                                ej.put("sjNum", 1);
                            }
                        }
                    } else {
                        num = num+1;
@@ -2164,7 +2158,7 @@
                    totalNum += num;
                    yj.put("num", num);
                }
                v.put("cates", cs);
                if(cacheDsl.containsKey(dslId)) {
                    List vs = (List)cacheDsl.get(dslId);
@@ -2183,13 +2177,13 @@
                }
            }
        }
        System.out.println(JsonUtil.list2Json(resultList));
        return resultList;
    }
@@ -2198,7 +2192,7 @@
    public void updatefinishnode(HttpServletRequest request) {
        String userId = WebUtil.getLoginedUserId(request);
        String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM"));
        String flowId = request.getParameter("flowId");
        String curnodeId = request.getParameter("curnodeId");
        String nodeId = request.getParameter("nodeId");
@@ -2238,7 +2232,7 @@
            .setIs_end(2).setIs_main(2).setCreate_id(userId).setCreate_name(userName).
            setSamekey(sameKey).setNum(num).insert();
        }
        NodeFinishEntity finishEntity = new NodeFinishEntity();
        finishEntity.setDeal_result(1);
        finishEntity.setDeal_note_title(userName+"完成了节点");
@@ -2246,7 +2240,7 @@
        WORKFLOW_BASE base = new WORKFLOW_BASE(node.getFlowid()).getInstanceById();
        //关闭当前节点
        workflowCoreService.finishNode(base, node, finishEntity);
    }
    @Override
    public void updateResolveType(HttpServletRequest request) {
@@ -2258,7 +2252,7 @@
        //修改变更信息的解决方式
        SC_WORKFLOW_CHANGE question = new SC_WORKFLOW_CHANGE(orderId).getInstanceById();
        question.setId(orderId).setResolve_type_id(solveWay).setResolve_type_name(solveWayName).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_CHANGE_STATE_YGB)).update();
        //添加处理记录
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
@@ -2276,11 +2270,11 @@
        record.setDeal_user_name(createUserName);
        record.setBusiness_id(flowId);
        record.setNode_id(curnodeid).setNode_name(nodeName);
        recordService.addRecord(record);
        fileService.uploadFile(request, id, flowId, null, null);
        //fileService.newuploadFileAll(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",question.getCustomer_id(),question.getProject_id(),question.getProject_name(),question.getCustomer_name());
        //配置关系保存到记录表-关闭工单
        saveRelationWhenClose(flowId);
        //删除变更中的配置关系-关闭工单
@@ -2289,12 +2283,12 @@
        dslFacade.saveConfigDslDealRecord(flowId);
        //恢复关联DSL-关闭工单
        dslFacade.updateConfigDslWhenClose(flowId);
        //恢复DSL资料
        delDslMsg(flowId);
        WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
        NodeFinishEntity finishEntity = new NodeFinishEntity();
        finishEntity.setDeal_result(1);
        finishEntity.setDeal_note_title(createUserName+"结束节点");
@@ -2309,7 +2303,7 @@
        }
        //关闭工单
        workflowCoreService.closeWorkFlow(base);
    }
    @Override
    public void delDslMsg(String flowId) {
@@ -2317,16 +2311,16 @@
        param.addValue("flowId", flowId);
        //删除新增DSL版本的配置文件记录
        String sqlfilerecord = "DELETE FROM DSL_CONFIG_FILE_CHANGE_DETAIL WHERE  FLOW_ID = :flowId   ";
        //删除新增DSL版本的配置文件
        String sql = "DELETE FROM DSL_CONFIG_FILE WHERE VERSION_ID IN ( SELECT ID FROM DSL_VERSION WHERE CREATE_FLOW_ID = :flowId  AND STATE = 3 ) ";
        //删除新增版本
        String sqlversion = "DELETE FROM DSL_VERSION WHERE  CREATE_FLOW_ID = :flowId  AND STATE = 3  ";
        //删除新增DSL
        String sqldsl = "DELETE FROM PROJECT_DSL WHERE  FLOW_ID = :flowId  AND STATE = 3  ";
        baseDao.execute(sqlfilerecord, param);
        baseDao.execute(sql, param);
        baseDao.execute(sqlversion, param);
src/cn/ksource/web/facade/ciremind/CiRemindFacadeImpl.java
@@ -1,21 +1,6 @@
package cn.ksource.web.facade.ciremind;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.beans.GG_RECORD;
import cn.ksource.beans.SC_PARTNER_CUSTOMER_INFO;
import cn.ksource.beans.SC_WORKFLOW_CI_REMIND;
import cn.ksource.beans.WORKFLOW_BASE;
import cn.ksource.beans.WORKFLOW_NODE;
import cn.ksource.beans.*;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
@@ -24,7 +9,6 @@
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.core.workflow.NodeAnswerEntity;
import cn.ksource.core.workflow.NodeFinishEntity;
import cn.ksource.core.workflow.WorkflowCoreService;
@@ -34,6 +18,10 @@
import cn.ksource.web.service.record.RecordService;
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
import cn.ksource.web.util.DateParepareUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service("ciRemindFacade")
public class CiRemindFacadeImpl implements CiRemindFacade {
@@ -42,12 +30,12 @@
    @Autowired
    private WorkflowCoreService workflowCoreService;
    @Autowired
    private WorkFlowSupportService workFlowSupportService;
    private WorkFlowSupportService workFlowSupportService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private RecordService recordService;
    @Override
    public PageInfo queryMyRemindData(PageInfo pageInfo,Map<String, String> param) {
        String userId=param.get("userId");
@@ -56,8 +44,8 @@
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        String orderCode = param.get("orderCode");
        param.put("userId", userId);
        param.put("nodeState", nodeState);
        param.put("flowState", flowState);
@@ -65,12 +53,12 @@
        param.put("subCustomerId", subCustomerId);
        param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
        param.put("orderCode", "%"+orderCode+"%");
        StringBuilder builder = getMyRemindSql(param);
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), param);
    }
    @Override
    public int queryMyRemindCount(Map<String, String> param) {
        String userId=param.get("userId");
@@ -79,8 +67,8 @@
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        String orderCode = param.get("orderCode");
        param.put("userId", userId);
        param.put("nodeState", nodeState);
        param.put("flowState", flowState);
@@ -88,13 +76,13 @@
        param.put("orderCode", "%"+orderCode+"%");
        param.put("customerId", customerId);
        param.put("subCustomerId", subCustomerId);
        StringBuilder builder = getMyRemindSql(param);
        String sql = "select count(*) from ( " + builder.toString() + " ) t";
        return baseDao.queryForInteger(sql,param);
    }
    /**
     * 获取我的工单
     * @param request
@@ -106,8 +94,8 @@
        String nodeState = param.get("nodeState");
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        StringBuilder builder = new StringBuilder();
        builder.append(" select n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
        builder.append(" t.PLAN_EXECUTION_DATE, r.ORDER_CODE,r.ID ORDERID,r.SERVICE_CONTENT,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE  ");
@@ -121,12 +109,12 @@
        builder.append("     where CURRENT_DEALER_ID = :userId  ");
                //环节状态
                if(StringUtil.isNotBlank(nodeState)){
                    builder.append("and FLOWSTATE =:nodeState ");
                    builder.append("and FLOWSTATE =:nodeState ");
                }
        builder.append("     order by FLOWSTATE asc  ");
        builder.append("     ) t  ");
        builder.append("     group by FLOWID ");
        builder.append("     group by FLOWID,NODEID,NODETIME,NODESTATE ");
        builder.append(" ) n  ");
        builder.append("  on b.ID = n.FLOWID ");
        //工单类型
@@ -134,9 +122,9 @@
        //工单状态
        if(StringUtil.notEmpty(flowState)) {
            builder.append(" AND b.WFSTATE =:flowState ");
        }
        //客户
        if(StringUtil.isNotBlank(customerId)) {
            builder.append(" AND b.CUSTOMER_ID = :customerId ");
@@ -145,12 +133,12 @@
        if(StringUtil.isNotBlank(subCustomerId)) {
            builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
        }
        //工单编号
        String orderCode = param.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND r.ORDER_CODE LIKE :orderCode");
        }
        builder.append(" order by n.NODESTATE ASC,n.NODETIME desc,b.CREATETIME desc ");
        return builder;
@@ -160,7 +148,7 @@
     */
    @Override
    public Map queryRemindInfo(String orderId) {
        String sql = " select b.WFSTATE,h.*,t.PLAN_EXECUTION_DATE from SC_WORKFLOW_CI_REMIND h ,CI_REMIND_TIMERTASK t, WORKFLOW_BASE b " +
        String sql = " select b.WFSTATE,h.*,t.PLAN_EXECUTION_DATE from SC_WORKFLOW_CI_REMIND h ,CI_REMIND_TIMERTASK t, WORKFLOW_BASE b " +
                    " where h.FLOW_ID = t.FLOW_ID and b.ID=h.FLOW_ID  and h.id = :orderId ";
        return baseDao.queryForMap(sql,new SqlParameter("orderId",orderId));
    }
@@ -177,25 +165,25 @@
        WORKFLOW_BASE base = new WORKFLOW_BASE(remind.getFlow_id()).getInstanceById();
        WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
        NodeAnswerEntity entity = new NodeAnswerEntity();
        entity.setUser_id(param.get("ID"));
        entity.setUser_name(param.get("ZSXM"));
        boolean flag = workflowCoreService.answerNode(base, node, entity);
        return flag;
    }
    /**
     * 关闭流程
     */
    public void closeWorkFlowSubmit(Map<String, String> param){
        String orderId = param.get("orderId");
        String closeNote = param.get("closeNote");
        String nodeId = param.get("nodeId");
        String userName = param.get("userName");
        SC_WORKFLOW_CI_REMIND order = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById();
        WORKFLOW_BASE base = new WORKFLOW_BASE(order.getFlow_id()).getInstanceById();
        NodeFinishEntity finishEntity = new NodeFinishEntity();
@@ -218,7 +206,7 @@
        String main_executorId = param.get("main_executorId");
        String flowNote = param.get("flowNote");
        String dealUserName = "";
        String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id();
        //更新业务表数据
        remind.setId(orderId).update();
@@ -226,9 +214,9 @@
        List<Map> userList = new ArrayList<Map>();
        String[] executorIdAry =  executorIds.split(",");
        String[] executorNameAry =  executorNames.split(",");
        Map cacheuser = new HashMap();
        for(int i=0;i<executorIdAry.length;i++){
            Map tempMap = new HashMap();
            tempMap.put("USER_ID", executorIdAry[i]);
@@ -236,21 +224,21 @@
            if(executorIdAry[i].equals(main_executorId)){
                tempMap.put("IS_ADMIN", "1");
                dealUserName=executorNameAry[i];
            }
            userList.add(tempMap);
        }
        String userId=param.get("ID");
        String userName=param.get("ZSXM");
        Map flowMsg = getFlowMsg(flowId,userId);
        String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
        String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content(nodeName+":"+userName+",将问题指派给了,"+dealUserName);
@@ -260,7 +248,7 @@
        record.setBusiness_id(flowId);
        record.setNode_id(nodeId).setNode_name(nodeName);
        recordService.addRecord(record);
        //环节流转
        WorkFlowSupportEntity support = new WorkFlowSupportEntity();
        support.setFlowId(flowId);
@@ -275,7 +263,7 @@
        addPatrolCi(orderId,ciIdAry);
        return msg;
    }
    /**
     * 通过orderid获取流程信息
     */
@@ -284,7 +272,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 void addPatrolCi(String orderId, String[] ciIdAry) {
        baseDao.execute("delete from SC_WORKFLOW_CI_REMIND_DETAIL where order_id = :orderId", new SqlParameter("orderId",orderId));
@@ -316,14 +304,14 @@
        sql.append(" where r.ORDER_ID = :orderId  ");
        return baseDao.queryForList(sql.toString(),new SqlParameter("orderId",orderId));
    }
    @Override
    public List<Map> getRemindCiList(Map param) {
        String sql = " select c.business_id cateId from ci_remind_timertask a , ci_remind_customer_item b, ci_remind_item c "
                + " where a.customer_item_id=b.id and b.item_id = c.id and a.flow_id = :flowId ";
        String cateId = baseDao.queryForString(sql,param);
        param.put("cateId",cateId);
        String ciIds = ConvertUtil.obj2Str(param.get("ciIds"));
        sql = " select b.*,c.NAME CATENAME from cmdb_ci_base b " +
                " inner join cmdb_ci_category c on b.LV3_ID = c.ID " +
@@ -339,7 +327,7 @@
        sql = sql +    " and b.STATE=1 group by b.id ";
        return baseDao.queryForList(sql,param);
    }
    @Override
    public Map getPatrolInfo(String patrolId) {
        String sql = " select * from SC_WORKFLOW_CI_REMIND_DETAIL where id = :patrolId";
@@ -347,25 +335,25 @@
        param.addValue("patrolId", patrolId);
        return baseDao.queryForMap(sql, param);
    }
    @Override
    public SysInfoMsg doEngineerPatrol(Map<String, String> param) {
        String orderId = ConvertUtil.obj2StrBlank(param.get("orderId"));
        String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId"));
        String note = ConvertUtil.obj2StrBlank(param.get("flowNote"));
        String summary = ConvertUtil.obj2StrBlank(param.get("summary"));
        String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId"));
        String note = ConvertUtil.obj2StrBlank(param.get("flowNote"));
        String summary = ConvertUtil.obj2StrBlank(param.get("summary"));
        String userName = param.get("ZSXM");
        String userId = param.get("Id");
        new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().setOrder_note(summary).update();
        String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id();
        Map flowMsg = getFlowMsg(flowId,userId);
        String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
        String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content(nodeName+":"+userName+",已处理维护执行");
@@ -375,7 +363,7 @@
        record.setBusiness_id(flowId);
        record.setNode_id(nodeId).setNode_name(nodeName);
        recordService.addRecord(record);
        //环节流转
        WorkFlowSupportEntity support = new WorkFlowSupportEntity();
        support.setFlowId(flowId);
@@ -402,12 +390,12 @@
        String nodeId = param.get("nodeId");
        String lastNodeTemplateId = param.get("lastNodeTemplateId");
        String note = param.get("backNote");
        String userName = ConvertUtil.obj2StrBlank(param.get("ZSXM"));
        String userId = ConvertUtil.obj2StrBlank(param.get("ID"));
        String flowId = param.get("flowId");
        WorkFlowSupportEntity support = new WorkFlowSupportEntity();
        support.setFlowId(flowId);
        support.setNodeId(nodeId);
@@ -424,16 +412,16 @@
    @Override
    public SysInfoMsg doEndRemindFlow(Map<String, String> param) {
        String orderId = ConvertUtil.obj2StrBlank(param.get("orderId"));
        String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId"));
        String note = ConvertUtil.obj2StrBlank(param.get("flowNote"));
        String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId"));
        String note = ConvertUtil.obj2StrBlank(param.get("flowNote"));
        String userName = param.get("ZSXM").toString();
        String userId = param.get("Id").toString();
        String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id();
        Map flowMsg = getFlowMsg(flowId,userId);
        String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
        String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content(nodeName+":"+userName+",已审核");
@@ -443,8 +431,8 @@
        record.setBusiness_id(flowId);
        record.setNode_id(nodeId).setNode_name(nodeName);
        recordService.addRecord(record);
        //环节流转
        WorkFlowSupportEntity support = new WorkFlowSupportEntity();
        support.setFlowId(flowId);
@@ -459,7 +447,7 @@
        new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().setFinish_time(endTime).update();
        return msg;
    }
    @Override
    public Map getRemindeItem(Map<String, String> param) {
        String flowId= param.get("flowId");
@@ -515,7 +503,7 @@
        map.put("remindMap", remindMap);
        return map;
    }
    @Override
    public Map getRemindDetail(Map<String, String> param) {
        String orderId=param.get("orderId");
@@ -535,21 +523,21 @@
        map.put("detailList", detailList);
        return map;
    }
    //例行维护管理
    @Override
    public int queryJxzRemindOrderCount(Map<String, String> param) {
        StringBuilder buffer = new StringBuilder("SELECT COUNT(b.ID) FROM WORKFLOW_BASE b WHERE b.BUSINESSTYPE = :businessType AND b.WFSTATE = :wfstate ");
        return baseDao.queryForInteger(buffer.toString(),new SqlParameter("businessType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND).addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DOING));
    }
    @Override
    public Map queryNodeCount(Map<String, String> param) {
        StringBuilder buffer = new StringBuilder("SELECT  n.NODE_TEMPLATE_ID,COUNT(n.NODE_TEMPLATE_ID) AS num FROM WORKFLOW_NODE n, WORKFLOW_BASE b WHERE b.CURRENT_NODE_ID = n.ID and b.BUSINESSTYPE = :businessType AND b.WFSTATE = :wfstate ");
        buffer.append(" GROUP BY n.NODE_TEMPLATE_ID ");
        List<Map> list =  baseDao.queryForList(buffer.toString(),new SqlParameter("businessType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND).addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DOING));
        Map resultMap = new HashMap();
@@ -560,29 +548,29 @@
        }
        return resultMap;
    }
    @Override
    public PageInfo queryRemindOrderList(PageInfo pageInfo,Map<String, String> param) {
        StringBuilder builder = new StringBuilder();
        String flowState = param.get("flowState");
        String orderCode = param.get("orderCode");
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        String nodeTempId = param.get("nodeTempId");
        param.put("customerId", customerId);
        param.put("subCustomerId", subCustomerId);
        param.put("flowState", flowState);
        param.put("orderCode", "%"+orderCode+"%");
        param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
        param.put("nodeTempId", nodeTempId);
        builder = getAllRemindSql(param);
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), param);
    }
    @Override
    public int queryRemindOrderCount(Map<String, String> param) {
@@ -591,7 +579,7 @@
        String orderCode = param.get("orderCode");
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        param.put("flowState", flowState);
        param.put("customerId", customerId);
        param.put("subCustomerId", subCustomerId);
@@ -599,12 +587,12 @@
        param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
        String nodeTempId = param.get("nodeTempId");
        param.put("nodeTempId", nodeTempId);
        builder = getAllRemindSql(param);
        String sql = "select count(*) from ( " + builder.toString() + " ) t" ;
        return baseDao.queryForInteger(sql.toString(),param);
    }
    /**
     * 服务台工单列表
     * @param request
@@ -615,23 +603,23 @@
        String customerId = param.get("customerId");
        String subCustomerId = param.get("subCustomerId");
        String nodeTempId = param.get("nodeTempId");
        StringBuilder builder = new StringBuilder();
        builder.append(" select b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
        builder.append(" t.PLAN_EXECUTION_DATE,r.ORDER_CODE,r.ID ORDERID,r.SERVICE_CONTENT,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE  ");
        builder.append(" from SC_WORKFLOW_CI_REMIND r  ");
        builder.append(" inner join WORKFLOW_BASE b on r.FLOW_ID = b.ID ");
        builder.append(" inner join CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID ");
        //工单类型
        builder.append(" where b.BUSINESSTYPE = :businessType");
        //工单状态
        if(StringUtil.notEmpty(flowState)) {
            builder.append(" AND b.WFSTATE =:flowState ");
        }
        //客户
        if(StringUtil.isNotBlank(customerId)) {
            builder.append(" AND b.CUSTOMER_ID = :customerId ");
@@ -639,43 +627,43 @@
        //下属单位
        if(StringUtil.isNotBlank(subCustomerId)) {
            builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
        }
        //工单编号
        String orderCode = param.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND r.ORDER_CODE LIKE :orderCode");
        }
        if(StringUtil.notEmpty(nodeTempId)) {
            builder.append(" AND EXISTS (SELECT n.ID FROM WORKFLOW_NODE n WHERE b.CURRENT_NODE_ID = n.ID AND n.NODE_TEMPLATE_ID = :nodeTempId ) ");
        }
        builder.append(" order by b.CREATETIME desc,t.PLAN_EXECUTION_DATE desc ");
        builder.append(" order by b.CREATETIME desc,t.PLAN_EXECUTION_DATE desc ");
        return builder;
    }
    @Override
    public Map getRemindItemSubTimerTaskData(String customerId, String month) {
        //查询该客户下的所有下属单位
        String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1";
        List<Map> subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId));
        Map currentCustomer = new HashMap();
        currentCustomer.put("ID", customerId);
        currentCustomer.put("CUSTOMER_NAME", new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById().getCustomer_name());
        subList.add(0, currentCustomer);
        if(!StringUtil.notEmpty(month)) {
            month = DateUtil.getCurrentDate6().toString();
            month = DateUtil.getCurrentDate6().toString();
        }
        String monthBeginDay = month+"01";
        //查询当月的所有天数
        String monthLastDay = DateParepareUtil.lastDayMonth(month, "yyyyMM", "yyyyMMdd");
        List<String> days = DateUtil.getBetweenTwoDateCycleList(monthBeginDay, monthLastDay, 2,1, "yyyyMMdd","yyyyMMdd");
        if(subList!=null && subList.size()>0){
            for(Map subMap:subList){
@@ -687,20 +675,20 @@
                List<Map> isMarkList = new ArrayList<Map>();
                for(String day:days){
                    Map markMap=new HashMap();
                    markMap.put("day", day);
                    int zjh = 0;
                    int yzx = 0;
                    if(taskList!=null && taskList.size()>0){
                        List<Map> plans = new ArrayList<Map>();
                        for(Map map:taskList){
                            Map plan = new HashMap();
                            Integer task=2;
                            Integer mark=0;
                            String orderId = new String();
@@ -736,7 +724,7 @@
        map.put("days", days);
        return map;
    }
    @Override
    public List<Map> querySubCustomerRemindPlanForDay(Map<String, String> param) {
        String customerId = param.get("customerId");
@@ -752,11 +740,11 @@
        param.put("customerId", customerId);
        param.put("subCustomerId", subCustomerId);
        param.put("day", day);
        List<Map> plans = baseDao.queryForList(selectSql,param);
        return plans;
    }
    @Override
    public PageInfo getRemindItemData(PageInfo pageInfo,Map<String, String> param) {
        String customerId=param.get("customerId");
@@ -770,11 +758,11 @@
        if(StringUtil.notEmpty(itemName)){
            sql.append(" AND A.ITEM_NAME LIKE :itemName");
        }
        if(StringUtil.notEmpty(subId)){
            sql.append(" AND C.SUB_CUSTOMER_ID=:subId");
        }
        }
        sql.append(" AND B.CUSTOMER_ID=:customerId ");
        sql.append(" ORDER BY A.ITEM_TYPE,ORDER_NUM ASC");
        //SqlParameter paramMap = new SqlParameter();
@@ -783,7 +771,7 @@
        param.put("customerId", customerId);
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param);
    }
    @Override
    public Integer getRemindItemCount(Map<String, String> param) {
        String customerId=param.get("customerId");
@@ -804,7 +792,7 @@
        param.put("subId", subId);
        return baseDao.queryForInteger(sql.toString(), param);
    }
    @Override
    public Map queryRemind(String customerItemId) {
        String selectSql = "SELECT A.ID,A.ITEM_NAME,A.CYCLE,A.PRIORITY_LEVEL_ID,A.PRIORITY_LEVEL_NAME," +
@@ -813,7 +801,7 @@
        Map item = baseDao.queryForMap(selectSql,new SqlParameter("id",customerItemId));
        return item;
    }
    /**
     * 查询执行计划
     * @param customerItemId
@@ -826,11 +814,11 @@
        List result = new ArrayList();
        if(StringUtil.notEmpty(customerId)) {
            SC_PARTNER_CUSTOMER_INFO customer = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById();
            long beginTime = customer.getValid_begin_date();
            long endTime = customer.getValid_end_date();
            Map paramMap = new HashMap();
            //查询所有已经生成的计划
            String selectSql = "SELECT A.*,W.ID ORDER_ID " +
@@ -839,17 +827,17 @@
            paramMap.put("customerId", customerId);
            paramMap.put("customerItemId", customerItemId);
            selectSql += " AND A.SUB_CUSTOMER_ID = :subId ";
            if(StringUtil.notEmpty(subCustomerId)) {
            if(StringUtil.notEmpty(subCustomerId)) {
                paramMap.put("subId", subCustomerId);
            } else {
                paramMap.put("subId", customerId);
            }
            selectSql += " ORDER BY A.PLAN_EXECUTION_DATE ";
            List<Map> plans = baseDao.queryForList(selectSql,paramMap);
            Map<String,Map> cacheMap = new HashMap<String,Map>();
            if(null!=plans && plans.size()>0) {
                for(Map plan : plans) {
@@ -857,28 +845,28 @@
                    cacheMap.put(day, plan);
                }
            }
            //求出所有月份的集合
            List<String> months = DateUtil.getBetweenTwoDateCycleList(ConvertUtil.obj2StrBlank(beginTime), ConvertUtil.obj2StrBlank(endTime), 1,1, "yyyyMMdd","yyyyMM");
            if(null!=months && months.size()>0) {
                for(int i=0; i<months.size();i++) {
                    String month = months.get(i);
                    String beginDay = month+"01";
                    //得到当月的最后一天
                    String lastDay = DateParepareUtil.lastDayMonth(month,"yyyyMM","yyyyMMdd");
                    List<String> days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd");
                    List<Map> newList = new ArrayList<Map>();
                    for(String str : days) {
                        Map map = new HashMap();
                        if(cacheMap.containsKey(str)) {
                            map = cacheMap.get(str);
                            map.put("day", str);
@@ -887,7 +875,7 @@
                            map.put("day",str);
                            map.put("check", 2);
                        }
                        //是否显示复选框
                        long date = ConvertUtil.obj2Long(str);
                        if(date>=beginTime && date<=endTime) {
@@ -895,7 +883,7 @@
                        } else {
                            map.put("showbox", 2);
                        }
                        //今天之前的复选框不可用
                        long today = DateUtil.getCurrentDate8();
                        if(date>today) {
@@ -903,22 +891,22 @@
                        } else {
                            map.put("isUse", 2);
                        }
                        newList.add(map);
                    }
                    Map map = new HashMap();
                    map.put("month", month);
                    map.put("days", newList);
                    result.add(map);
                }
            }
        }
        System.out.println(JsonUtil.list2Json(result));
        return result;
    }
    @Override
    public PageInfo getRemindOrderList(PageInfo pageInfo,Map<String, String> param) {
        String customerId=param.get("customerId");
@@ -929,22 +917,22 @@
        sql.append(" SELECT A.SUB_CUSTOMER_ID SUB_CUS_ID,A.FLOW_ID,B.*,D.ITEM_NAME,A.PLAN_EXECUTION_DATE,A.STATE AS TIMESTATE,A.CUSTOMER_ITEM_ID FROM CI_REMIND_TIMERTASK A LEFT JOIN  SC_WORKFLOW_CI_REMIND  B ON A.FLOW_ID=B.FLOW_ID  ");
        sql.append(" LEFT JOIN CI_REMIND_CUSTOMER_ITEM  C ON A.CUSTOMER_ITEM_ID=C.ID LEFT JOIN CI_REMIND_ITEM D ON C.ITEM_ID=D.ID");
        sql.append(" WHERE A.STATE != 3 ");
        //SqlParameter paramMap = new SqlParameter();
        if(StringUtil.notEmpty(customerId)) {
            sql.append("AND A.CUSTOMER_ID=:customerId  ");
            param.put("customerId", customerId);
        }
        if(StringUtil.notEmpty(subId)) {
            sql.append("AND A.SUB_CUSTOMER_ID=:subId  ");
            param.put("subId", subId);
        }
        if(StringUtil.notEmpty(beginDate) && StringUtil.notEmpty(endDate)){
            sql.append(" AND A.PLAN_EXECUTION_DATE>=:beginDate AND A.PLAN_EXECUTION_DATE<=:endDate");
            param.put("beginDate", beginDate);
@@ -952,9 +940,9 @@
        }
        sql.append(" ORDER BY A.PLAN_EXECUTION_DATE DESC");
        param.put("customerId", customerId);
        PageInfo list=baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), param);
        if(list!=null && list.getDatas().size()>0){
            for(Map map :list.getDatas()){
                map.put("TIMESTATE_LABEL", Constants.getmapCI_REMIND_TIMERTASK_STATE_Label(Integer.parseInt(map.get("TIMESTATE").toString())));
@@ -962,7 +950,7 @@
        }
        return list;
    }
    @Override
    public Integer getRemindOrderCount(Map<String, String> param){
        String customerId=param.get("customerId");
@@ -973,21 +961,21 @@
        sql.append(" SELECT COUNT(A.ID) FROM CI_REMIND_TIMERTASK A LEFT JOIN  SC_WORKFLOW_CI_REMIND  B ON A.FLOW_ID=B.FLOW_ID  ");
        sql.append(" LEFT JOIN CI_REMIND_CUSTOMER_ITEM  C ON A.CUSTOMER_ITEM_ID=C.ID LEFT JOIN CI_REMIND_ITEM D ON C.ITEM_ID=D.ID");
        sql.append(" WHERE A.STATE != 3 ");
        //SqlParameter paramMap = new SqlParameter();
        if(StringUtil.notEmpty(customerId)) {
            sql.append("AND A.CUSTOMER_ID=:customerId  ");
            param.put("customerId", customerId);
        }
        if(StringUtil.notEmpty(subId)) {
            sql.append("AND A.SUB_CUSTOMER_ID=:subId  ");
            param.put("subId", subId);
        }
        if(StringUtil.notEmpty(beginDate) && StringUtil.notEmpty(endDate)){
            sql.append(" AND A.PLAN_EXECUTION_DATE>=:beginDate AND A.PLAN_EXECUTION_DATE<=:endDate");
            param.put("beginDate", beginDate);
@@ -999,7 +987,7 @@
        param.put("endDate", endDate);
        return baseDao.queryForInteger(sql.toString(),param);
    }
    @Override
    public List getSubRemindCiList(Map<String, String> param) {
        StringBuilder sql =new StringBuilder();
@@ -1015,7 +1003,7 @@
        }
        return baseDao.queryForList(sql.toString(), param);
    }
    @Override
    public int queryProItemCount(Map<String, String> param) {
        String customerId = param.get("customerId");
@@ -1032,48 +1020,48 @@
        String sql = "SELECT A.*,B.ITEM_NAME,B.ITEM_NOTE,B.PRIORITY_LEVEL_NAME,B.BUSINESS_NAME " +
                " FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B WHERE A.ITEM_ID = B.ID " +
                " AND A.USING_STATE = 1 AND A.CUSTOMER_ID = :customerId ORDER BY B.ORDER_NUM ";
        param.put("customerId", customerId);
        PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql, param);
        return info;
    }
    @Override
    public Map queryItemSubCustomerPlan(String customerId,String itemId,String mon) {
        //查询该客户下的所有下属单位
        String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1";
        List<Map> subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId));
        Map currentCustomer = new HashMap();
        currentCustomer.put("ID", customerId);
        currentCustomer.put("CUSTOMER_NAME", new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById().getCustomer_name());
        subList.add(0, currentCustomer);
        String year = DateUtil.format("yyyy", mon);
        String mm = DateUtil.format("MM", mon);
        String[] time = DateParepareUtil.queryFirstLastDate(year,mm);
        String beginDay = time[0].replaceAll("-", "");
        //得到当月的最后一天
        String lastDay = time[1].replaceAll("-", "");
        List<String> days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd");
        Map resultMap = new HashMap();
        resultMap.put("month", mon);
        resultMap.put("days", days);
        List result = new ArrayList();
        if(StringUtil.notEmpty(customerId)) {
            SC_PARTNER_CUSTOMER_INFO customer = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById();
            long beginTime = customer.getValid_begin_date();
            long endTime = customer.getValid_end_date();
            Map paramMap = new HashMap();
            //查询该客户下所有已经生成的计划
            String selectSql = "SELECT A.*,W.ID ORDER_ID FROM CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B ,SC_WORKFLOW_CI_REMIND W " +
@@ -1082,16 +1070,16 @@
                    " AND B.CUSTOMER_ID = :customerId AND B.USING_STATE = 1 ";
            paramMap.put("projectItemId", itemId);
            paramMap.put("customerId", customerId);
            selectSql += "AND A.PLAN_EXECUTION_DATE >= :beginTime AND A.PLAN_EXECUTION_DATE <= :endTime ";
            paramMap.put("beginTime", beginDay);
            paramMap.put("endTime",  lastDay);
            selectSql += " ORDER BY A.PLAN_EXECUTION_DATE ";
            List<Map> plans = baseDao.queryForList(selectSql,paramMap);
            Map<String,Map> cacheMap = new HashMap<String,Map>();
            if(null!=plans && plans.size()>0) {
                for(Map plan : plans) {
@@ -1100,65 +1088,65 @@
                    cacheMap.put(subCustomerId+"-"+plan_execution_date, plan);
                }
            }
            if(null!=subList && subList.size()>0) {
                for(Map cus : subList) {
                    String cusId = ConvertUtil.obj2StrBlank(cus.get("ID"));
                    String cusName = ConvertUtil.obj2StrBlank(cus.get("CUSTOMER_NAME"));
                    List<Map> newList = new ArrayList<Map>();
                    for(String str : days) {
                        Map map = new HashMap();
                        String unitKey = cusId+"-"+str;
                        if(cacheMap.containsKey(unitKey)) {
                            map = cacheMap.get(unitKey);
                        }
                        newList.add(map);
                    }
                    Map map = new HashMap();
                    map.put("cusName", cusName);
                    map.put("msgs", newList);
                    result.add(map);
                }
            }
        }
        resultMap.put("rs", result);
        return resultMap;
    }
    @Override
    public String queryZbName(String itemId) {
        String selectSql = "SELECT B.ITEM_NAME FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B WHERE A.ITEM_ID = B.ID AND A.ID = :itemId ";
        return baseDao.queryForString(selectSql,new SqlParameter("itemId",itemId));
    }
    @Override
    public List queryCustomers(Map<String, String> param) {
        String customerId = param.get("customerId");
        //查询该客户下的所有下属单位
        String sql="SELECT * FROM SC_PARTNER_CUSTOMER_SUB WHERE CUSTOMER_ID=:customerId AND DEL_FLAG=1";
        List<Map> subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId));
        Map currentCustomer = new HashMap();
        currentCustomer.put("ID", customerId);
        SC_PARTNER_CUSTOMER_INFO mainCus = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById();
        currentCustomer.put("CUSTOMER_NAME", mainCus.getCustomer_name());
        currentCustomer.put("CONTACT", mainCus.getContact());
        currentCustomer.put("PHONE", mainCus.getPhone());
        subList.add(0, currentCustomer);
        return subList;
    }
    @Override
    public Map queryCusItemPlanReport(String customerId,String subCustomerId, String mon) {
        //查询该客户下的所有指标
@@ -1166,47 +1154,47 @@
                " FROM CI_REMIND_CUSTOMER_ITEM A,CI_REMIND_ITEM B " +
                " WHERE A.ITEM_ID = B.ID AND A.USING_STATE = 1 AND A.CUSTOMER_ID = :customerId ORDER BY B.ORDER_NUM ";
        List<Map> subList=baseDao.queryForList(sql, new SqlParameter().addValue("customerId",customerId));
        String year = DateUtil.format("yyyy", mon);
        String mm = DateUtil.format("MM", mon);
        String[] time = DateParepareUtil.queryFirstLastDate(year,mm);
        String beginDay = time[0].replaceAll("-", "");
        //得到当月的最后一天
        String lastDay = time[1].replaceAll("-", "");
        List<String> days = DateUtil.getBetweenTwoDateCycleList(beginDay, lastDay, 2,1, "yyyyMMdd","yyyyMMdd");
        Map resultMap = new HashMap();
        resultMap.put("month", mon);
        resultMap.put("days", days);
        List result = new ArrayList();
        if(StringUtil.notEmpty(customerId)) {
            SC_PARTNER_CUSTOMER_INFO project = new SC_PARTNER_CUSTOMER_INFO(customerId).getInstanceById();
            long beginTime = project.getValid_begin_date();
            long endTime = project.getValid_end_date();
            Map paramMap = new HashMap();
            //查询该客户下所有已经生成的计划
            String selectSql = "SELECT A.*,W.ID ORDER_ID FROM CI_REMIND_TIMERTASK A,CI_REMIND_CUSTOMER_ITEM B,SC_WORKFLOW_CI_REMIND W " +
                    " WHERE A.CUSTOMER_ITEM_ID = B.ID AND A.FLOW_ID=W.FLOW_ID AND B.CUSTOMER_ID = :customerId " +
                    " AND A.SUB_CUSTOMER_ID = :subCustomerId AND B.USING_STATE = 1 ";
            paramMap.put("customerId", customerId);
            selectSql += "AND A.PLAN_EXECUTION_DATE >= :beginTime AND A.PLAN_EXECUTION_DATE <= :endTime ";
            paramMap.put("beginTime", beginDay);
            paramMap.put("endTime",  lastDay);
            paramMap.put("subCustomerId", subCustomerId);
            selectSql += " ORDER BY A.PLAN_EXECUTION_DATE ";
            List<Map> plans = baseDao.queryForList(selectSql,paramMap);
            Map<String,Map> cacheMap = new HashMap<String,Map>();
            if(null!=plans && plans.size()>0) {
                for(Map plan : plans) {
@@ -1215,52 +1203,52 @@
                    cacheMap.put(project_item_id+"-"+plan_execution_date, plan);
                }
            }
            if(null!=subList && subList.size()>0) {
                for(Map zb : subList) {
                    String zbId = ConvertUtil.obj2StrBlank(zb.get("ID"));
                    String zbName = ConvertUtil.obj2StrBlank(zb.get("ITEM_NAME"));
                    List<Map> newList = new ArrayList<Map>();
                    for(String str : days) {
                        Map map = new HashMap();
                        String unitKey = zbId+"-"+str;
                        if(cacheMap.containsKey(unitKey)) {
                            map = cacheMap.get(unitKey);
                        }
                        newList.add(map);
                    }
                    Map map = new HashMap();
                    map.put("zbName", zbName);
                    map.put("msgs", newList);
                    result.add(map);
                }
            }
        }
        resultMap.put("rs", result);
        return resultMap;
    }
    @Override
    public String queryNodeId(String flowId,String userId) {
    public String queryNodeId(String flowId,String userId) {
        String selectSql = "SELECT ID FROM WORKFLOW_NODE WHERE FLOWID=:flowId  AND CURRENT_DEALER_ID=:userId AND (FLOWSTATE=1 OR FLOWSTATE =2) ";
        return baseDao.queryForString(selectSql,new SqlParameter("flowId",flowId).addValue("userId", userId));
    }
    @Override
    public PageInfo remindPlanData(PageInfo pageInfo,Map<String, String> param) {
        String ciId=param.get("ciId");
        String selectSql = "SELECT C.* FROM CI_REMIND_CILIST A,CI_REMIND_CUSTOMER_ITEM B,CI_REMIND_TIMERTASK C WHERE A.PROJECT_ITEM_ID = B.ID AND B.ID = C.CUSTOMER_ITEM_ID AND A.CI_ID = :ciId AND A.STATE = 1 AND C.STATE = 2 ORDER BY C.PLAN_EXECUTION_DATE DESC ";
        String selectSql = "SELECT C.* FROM CI_REMIND_CILIST A,CI_REMIND_CUSTOMER_ITEM B,CI_REMIND_TIMERTASK C WHERE A.PROJECT_ITEM_ID = B.ID AND B.ID = C.CUSTOMER_ITEM_ID AND A.CI_ID = :ciId AND A.STATE = 1 AND C.STATE = 2 ORDER BY C.PLAN_EXECUTION_DATE DESC ";
        param.put("ciId", ciId);
        PageInfo plans=baseDao.queryforSplitPageInfo(pageInfo, selectSql, param);
        return plans;
    }
    @Override
    public int remindPlanCount(Map<String, String> param) {
        String ciId=param.get("ciId");
@@ -1269,7 +1257,7 @@
        return count;
    }
}
src/cn/ksource/web/facade/dsl/DSLFacadeImpl.java
@@ -1,17 +1,16 @@
package cn.ksource.web.facade.dsl;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import cn.ksource.beans.*;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.*;
import cn.ksource.core.web.TreeNode;
import cn.ksource.core.web.WebUtil;
import cn.ksource.entity.FacedeResponse;
import cn.ksource.web.Constants;
import cn.ksource.web.service.cmdb.SequenceService;
import cn.ksource.web.service.file.FileService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -19,42 +18,28 @@
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import cn.ksource.beans.DSL_CATEGORY;
import cn.ksource.beans.DSL_CONFIG;
import cn.ksource.beans.DSL_CONFIG_FILE;
import cn.ksource.beans.DSL_VERSION;
import cn.ksource.beans.PROJECT_DSL;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.EqualUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.TreeNode;
import cn.ksource.core.web.WebUtil;
import cn.ksource.entity.FacedeResponse;
import cn.ksource.web.Constants;
import cn.ksource.web.service.cmdb.SequenceService;
import cn.ksource.web.service.file.FileService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.*;
@Service("dslFacade")
public class DSLFacadeImpl implements DSLFacade{
    @Resource
    private BaseDao baseDao;
    @Resource
    private FileService fileService;
    @Autowired
    private SequenceService sequenceService;
    /*@Autowired
    private SequenceService sequenceService;*/
    @Override
    public List<Map> getOrderDslList(String flowId) {
        SqlParameter param = new SqlParameter();
@@ -67,11 +52,11 @@
                "     SELECT UPDATE_TIME,ID,EDITION FROM  DSL_VERSION WHERE (STATE=1 OR STATE=3) " +
                " ) V ON L.DSL_VERSION_ID = V.ID  " +
                " WHERE (D.STATE=1 OR D.STATE=3) AND L.FLOW_ID=:flowId " +
                " ORDER BY V.UPDATE_TIME DESC  " +
                " ) T GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC ";
                " ORDER BY V.UPDATE_TIME DESC  " +
                " ) T GROUP BY DSL_ID,T.FLOW_ID, T.UPDATE_TIME, T.CATE_NAME,T.VER_ID,T.LINK_ID,T.DSL_SEARCHCODE,T.DSL_NAME,T.EDITION ORDER BY UPDATE_TIME DESC ";
        return baseDao.queryForList(sql,param);
    }
    @Override
    public void saveConfigDslDealRecord(String flowId) {
        String sql = "SELECT ID,DSL_VERSION_ID,CI_ID,DSL_ID,NEW_VERSION_ID,FLOW_ID,STATE,DEALER_ID,DEALER_NAME,UPDATE_TIME " +
@@ -89,10 +74,10 @@
            params.put("ID", id);
            paramList.add(params);
        }
        baseDao.executeBatch(sqlinsert, paramList);
    }
    @Override
    public void updateConfigDslWhenFinish(String flowId) {
        SqlParameter param = new SqlParameter();
@@ -106,10 +91,10 @@
        //更新dsl状态
        baseDao.execute(" UPDATE PROJECT_DSL SET STATE=1 WHERE FLOW_ID = :flowId ", param);
        baseDao.execute(" UPDATE DSL_VERSION SET STATE=1 WHERE CREATE_FLOW_ID = :flowId ", param);
    }
    @Override
    public void updateConfigDslWhenClose(String flowId) {
        SqlParameter param = new SqlParameter();
@@ -121,7 +106,7 @@
        //将要修改的数据恢复
        baseDao.execute(" UPDATE CMDB_DSL_LINK SET NEW_VERSION_ID=DSL_VERSION_ID,STATE=NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE STATE=2 AND FLOW_ID = :flowId ", param);
    }
    @Override
    public void addDslByFlow(PROJECT_DSL proDsl,String flowId){
        String searchcode = sequenceService.getDslCategorySequence(proDsl.getDsl_third_category_id());
@@ -140,7 +125,7 @@
            baseDao.execute(sql, param);
        }
    }
    @Override
    public PageInfo getProDslContainAddData(HttpServletRequest request) {
        Map support = getProDslContainAddSupport(request);
@@ -149,7 +134,7 @@
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, sql, param);
        return pageInfo;
    }
    @Override
    public int getProDslContainAddCount(HttpServletRequest request) {
        Map support = getProDslContainAddSupport(request);
@@ -158,7 +143,7 @@
        int count = baseDao.queryForInteger(sql, param);
        return count;
    }
    private Map getProDslContainAddSupport(HttpServletRequest request) {
        Map support = new HashMap();
        SqlParameter param = new SqlParameter();
@@ -169,7 +154,7 @@
        builder.append("         FROM PROJECT_DSL D LEFT JOIN (SELECT * FROM DSL_VERSION WHERE STATE=1) V ON D.ID = V.DSL_ID  ");
        builder.append("         WHERE D.STATE=1   ");
        builder.append("     ) T1   ");
        String flowId = request.getParameter("flowId");
        if(StringUtil.notEmpty(flowId)) {
            builder.append("     UNION SELECT * FROM ( ");
@@ -182,15 +167,15 @@
            builder.append("       ) T1 ");
            param.put("flowId", flowId);
        }
        builder.append("     ORDER BY UPDATE_TIME DESC ");
        builder.append(" ) T WHERE 1=1 ");
        String proId = request.getParameter("proId");
        if(StringUtil.notEmpty(proId)) {
            param.put("proId", proId);
        }
        String dslName = request.getParameter("dslName");
        if(StringUtil.notEmpty(dslName)) {
            builder.append(" AND DSL_NAME LIKE :dslName ");
@@ -206,26 +191,26 @@
            builder.append(" AND DSL_SEARCHCODE like :dslSearchCode ");
            param.put("dslSearchCode", "%"+dslSearchCode+"%");
        }
        String dslIds = request.getParameter("dslIds");
        if(StringUtil.notEmpty(dslIds)) {
            dslIds = "'" + dslIds.replace(",", "','") + "'";
            builder.append(" AND DSL_ID NOT IN ("+dslIds+") ");
        }
        builder.append(" GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC ");
        support.put("sql", builder.toString());
        support.put("param", param);
        return support;
    }
    @Override
    public int queryDslCount(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM PROJECT_DSL A WHERE A.PARTNER_ID = :partnerId AND A.STATE != 3 ");
        //String partnerId = WebUtil.getLoginedPartnerId(request);
        Map paramMap = new HashMap();
        //paramMap.put("partnerId", partnerId);
        String projectId = request.getParameter("projectId");
@@ -233,39 +218,39 @@
            builder.append(" AND A.PROJECT_ID = :projectId ");
            paramMap.put("projectId", projectId);
        }
        String dslName = request.getParameter("dslName");
        if(StringUtil.notEmpty(dslName)) {
            builder.append(" AND A.DSL_NAME LIKE :dslName ");
            paramMap.put("dslName", "%"+dslName+"%");
        }
        String dslCate = request.getParameter("dslCate");
        if(StringUtil.notEmpty(dslCate)) {
            builder.append(" AND A.DSL_THIRD_CATEGORY_ID = :dslCate ");
            paramMap.put("dslCate", dslCate);
        }
        String dslSearchCode = request.getParameter("dslSearchCode");
        if(StringUtil.notEmpty(dslSearchCode)) {
            builder.append(" AND A.DSL_SEARCHCODE = :dslSearchCode ");
            paramMap.put("dslSearchCode", dslSearchCode);
        }
        int count = baseDao.queryForInteger(builder.toString(),paramMap);
        return count;
    }
    @Override
    public PageInfo queryDslData(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT A.*,C.EDITION FROM PROJECT_DSL A LEFT JOIN (SELECT E.DSL_ID,E.EDITION FROM DSL_VERSION E,(SELECT MAX(B.CREATE_TIME) AS TIME,B.DSL_ID FROM DSL_VERSION B WHERE B.STATE = 1 GROUP BY B.DSL_ID) F WHERE E.DSL_ID = F.DSL_ID AND E.CREATE_TIME = F.TIME) C ON A.ID = C.DSL_ID WHERE A.STATE != 3 ");
        //String partnerId = WebUtil.getLoginedPartnerId(request);
        Map paramMap = new HashMap();
        //paramMap.put("partnerId", partnerId);
        String projectId = request.getParameter("projectId");
@@ -273,32 +258,32 @@
            builder.append(" AND A.PROJECT_ID = :projectId ");
            paramMap.put("projectId", projectId);
        }
        String dslName = request.getParameter("dslName");
        if(StringUtil.notEmpty(dslName)) {
            builder.append(" AND A.DSL_NAME LIKE :dslName ");
            paramMap.put("dslName", "%"+dslName+"%");
        }
        String dslCate = request.getParameter("dslCate");
        if(StringUtil.notEmpty(dslCate)) {
            builder.append(" AND A.DSL_THIRD_CATEGORY_ID = :dslCate ");
            paramMap.put("dslCate", dslCate);
        }
        String dslSearchCode = request.getParameter("dslSearchCode");
        if(StringUtil.notEmpty(dslSearchCode)) {
            builder.append(" AND A.DSL_SEARCHCODE like :dslSearchCode ");
            paramMap.put("dslSearchCode", "%"+dslSearchCode+"%");
        }
        builder.append(" ORDER BY A.STATE ASC, A.ORDER_NUM ASC,ADD_TIME DESC ");
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        return pageInfo;
    }
    @Override
    public List<Map> getDslCateTree(String pid, String partnerId) {
        String sql = " SELECT ID as id,P_ID AS pid,CATEGORY_NAME AS name,LEVEL AS jb FROM DSL_CATEGORY WHERE STATE=1 AND PARTNER_ID=:partnerId";
@@ -322,28 +307,28 @@
    public Map queryDslLevelTree(String partnerId, String cates) {
        String selectSql = "SELECT A.* FROM DSL_CATEGORY A WHERE A.STATE = 1 ORDER BY A.LEVEL,A.ORDER_NUM ";
        List<Map> categoryList = baseDao.queryForList(selectSql,new SqlParameter("partnerId",partnerId));
        Map slMap = new HashMap();
        Map slMap = new HashMap();
        if(StringUtil.notEmpty(cates)) {
            String[] catess = cates.split(",");
            for(String s : catess) {
                slMap.put(s, s);
            }
        }
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : categoryList) {
            String level = ConvertUtil.obj2StrBlank(map.get("LEVEL"));
            String id = ConvertUtil.obj2StrBlank(map.get("ID"));
            //一级树
            if (level.equalsIgnoreCase("1")) {
                yjgnCache.put(id, map);
@@ -358,21 +343,21 @@
                List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                map.put("sjTree", new LinkedList<Map>());
                list.add(map);
                ejgnCache.put(id, map);
                continue;
            }
            //三级树
            if (level.equalsIgnoreCase("3")) {
                if(null!=map.get("P_ID")){
                    if(slMap.containsKey(id)) {
                        slMap.put(id, map.get("CATEGORY_NAME"));
                        map.put("check", 1);
                    } else {
                        map.put("check", 2);
                    }
                    Map ejgnMap = ejgnCache.get(map.get("P_ID").toString());
                    List<Map> list = (List<Map>)ejgnMap.get("sjTree");
                    list.add(map);
@@ -384,7 +369,7 @@
        resultMap.put("slMap", slMap);
        return resultMap;
    }
    @Override
    public void addOrderLinkDsl(String flowId, String dslIds, String verIds) {
        List<SqlParameter> params = new ArrayList<SqlParameter>();
@@ -400,19 +385,19 @@
                }else{
                    param.addValue("verId", verArr[i]);
                }
            params.add(param);
            params.add(param);
        }
        String sql = "insert into DSL_ORDER_LINK (ID,FLOW_ID,DSL_VERSION_ID,DSL_ID) values (:id,:flowId,:verId,:dslId) ";
        baseDao.executeBatch(sql, params);
    }
    @Override
    public int queryDslChangeVersionCount(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A  WHERE A.DSL_ID = :dslId AND (A.STATE = 1 OR (A.STATE = 3 AND A.CREATE_FLOW_ID = :flowId ) ) ORDER BY A.CREATE_TIME DESC  ");
        String dslId = request.getParameter("dslId");
        String flowId = request.getParameter("flowId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        paramMap.put("flowId", flowId);
@@ -423,18 +408,18 @@
    @Override
    public PageInfo queryDslChangeVersionData(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID  WHERE A.DSL_ID = :dslId AND (A.STATE = 1 OR (A.STATE = 3 AND A.CREATE_FLOW_ID = :flowId ) ) ORDER BY A.CREATE_TIME DESC  ");
        String dslId = request.getParameter("dslId");
        String flowId = request.getParameter("flowId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        paramMap.put("flowId", flowId);
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        return pageInfo;
    }
    @Override
    public List getDSLConfigListData(String configId) {
        StringBuilder builder = new StringBuilder();
@@ -453,14 +438,14 @@
            sql.append(" AND PID=:pid ");
        }
        sql.append(" ORDER BY SORT_ID ");
        SqlParameter param = new SqlParameter("pid",configId);
        param.addValue("partnerId", partnerId);
        param.addValue("thirdCateId", thirdCateId);
        List<Map> firstList = new LinkedList<Map>();
        List<Map> dataList = baseDao.queryForList(sql.toString(), param);
        for (Map map : dataList) {
            firstList.add(map);
            if (ConvertUtil.obj2Int(map.get("STATE")) == 1) {
@@ -468,14 +453,14 @@
            } else {
                map.put("STATE_TEXT", "未启用");
            }
            if (!EqualUtil.isStringEqual(map.get("LV"), "2")) {
                map.put("state", "closed");
                map.put("children", new LinkedList<Map>());
            }
        }
        if (StringUtils.isBlank(configId)) {
            List<Map> resultList = new LinkedList<Map>();
            Map map = new HashMap();
@@ -499,7 +484,7 @@
        String note = request.getParameter("note");
        String name = request.getParameter("name");
        String thirdCateName = new DSL_CATEGORY(thirdCateId).getInstanceById().getCategory_name();
        if(StringUtil.notEmpty(configId)) {
            DSL_CONFIG dsl = new DSL_CONFIG(configId).getInstanceById();
            pId = dsl.getPid();
@@ -517,7 +502,7 @@
            } else {
                level = 1;
            }
            String insertSql = "INSERT INTO DSL_CONFIG(ID,THIRD_CATEGORY_ID,THIRD_CATEGORY_NAME,LV,SORT_ID,STATE,PID,PARTNER_ID,NOTE,NAME) " +
                    "VALUES (:id,:third_category_id,:third_category_name,:lv,:sort_id,1,:pid,:partner_id,:note,:name)";
            Map paramMap = new HashMap();
@@ -532,38 +517,38 @@
            paramMap.put("name", name);
            baseDao.execute(insertSql, paramMap);
        }
        return pId;
    }
    @Override
    public void saveProDslInfo(HttpServletRequest request) {
        String flowId = request.getParameter("flowId");
        String projectId = request.getParameter("projectId");
        String configureId = request.getParameter("configureId");
        String versionNo = request.getParameter("versionNo");
        SqlParameter param = new SqlParameter();
        param.addValue("flowId", flowId)
            .addValue("projectId", projectId)
            .addValue("versionNo", versionNo)
            .addValue("configureId", configureId)
            .addValue("id", StringUtil.getUUID());
        StringBuilder builder = new StringBuilder();
        builder.append(" delete from config_dsl_pro where RELEASE_FLOW_ID = :flowId and CONFIGURE_ID=:configureId and PROJECT_ID=:projectId ");
        baseDao.execute(builder.toString(), param);
        builder.setLength(0);
        builder.append(" insert into config_dsl_pro (id,PROJECT_ID,CONFIGURE_ID,VERSION_NO,RELEASE_FLOW_ID,SOURCE_TYPE) ");
        builder.append(" values (:id,:projectId,:configureId,:versionNo,:flowId,1) ");
        baseDao.execute(builder.toString(), param);
    }
    @Override
    public List<Map> getSecondDslfileList(String orderId,String configureId,String secondDslId){
        SqlParameter param = new SqlParameter();
@@ -574,7 +559,7 @@
            "and BUSINESS_ID = :orderId and EXTEND1 =:configureId and EXTEND2 = :secondDslId ";
        return baseDao.queryForList(sql,param);
    }
    @Override
    public void saveDslFile(HttpServletRequest request){
        Map user = WebUtil.getLoginUser(request).getLoginUser();
@@ -599,7 +584,7 @@
                    //System.out.println("-----------"+request.getSession().getServletContext().getRealPath("/"));
                    String fullPath = request.getSession().getServletContext().getRealPath("/")+"/upload/infofiles/" + fileName;
                    long size = file.getSize();
                    String fileFormat = fileName.substring(fileName.lastIndexOf(".")+1);
                    String fileFormat = fileName.substring(fileName.lastIndexOf(".")+1);
                    File localFile = new File(fullPath);
                    // 写文件到本地
                    try {
@@ -634,21 +619,21 @@
        //String partnerId = WebUtil.getLoginedPartnerId(request);
        String selectSubSql = "SELECT * FROM DSL_CONFIG WHERE THIRD_CATEGORY_ID = :thirdCateId AND STATE = 1 ORDER BY LV,SORT_ID ";
        String thirdCateId = request.getParameter("thirdCate");
        paramMap.put("thirdCateId", thirdCateId);
        //paramMap.put("partnerId", partnerId);
        List<Map> cates = baseDao.queryForList(selectSubSql,paramMap);
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        for (Map map : cates) {
            String level = map.get("LV").toString();
            String id = map.get("ID").toString();
            //一级树
            if (level.equalsIgnoreCase("1")) {
                yjgnCache.put(id, map);
@@ -679,8 +664,8 @@
        String thirdCateId = request.getParameter("thirdCate");
        String pId = request.getParameter("pId");
        sql.append("SELECT COUNT(ID) FROM DSL_CONFIG WHERE  THIRD_CATEGORY_ID = :thirdCateId ");
        Map paramMap = new HashMap();
        //paramMap.put("partnerId", partnerId);
        paramMap.put("thirdCateId", thirdCateId);
@@ -689,10 +674,10 @@
            paramMap.put("pid", pId);
        } else {
            sql.append(" AND LV=1 AND (PID IS NULL OR PID ='' OR PID =0) ");
        }
        return baseDao.queryForInteger(sql.toString(), paramMap);
    }
@@ -703,8 +688,8 @@
        String thirdCateId = request.getParameter("thirdCate");
        String pId = request.getParameter("pId");
        sql.append("SELECT SORT_ID,NAME,ID,PID,LV,STATE FROM DSL_CONFIG WHERE  THIRD_CATEGORY_ID = :thirdCateId ");
        Map paramMap = new HashMap();
        //paramMap.put("partnerId", partnerId);
        paramMap.put("thirdCateId", thirdCateId);
@@ -713,13 +698,13 @@
            paramMap.put("pid", pId);
        } else {
            sql.append(" AND LV=1 AND (PID IS NULL OR PID ='' OR PID =0) ");
        }
        sql.append(" ORDER BY SORT_ID ");
        return baseDao.queryforSplitPageInfo(request, sql.toString(), paramMap);
    }
    /**
@@ -731,7 +716,7 @@
        return baseDao.queryForInteger(selectSql,new SqlParameter("pid",configId));
    }
    @Override
    public boolean saveProjectDsl(HttpServletRequest request) {
@@ -742,25 +727,25 @@
        String id = StringUtil.getUUID();
        String projectId = request.getParameter("projectId");
        String order_num = request.getParameter("order_num");
        String[] cates = dslCateId.split("-");
        String dsl_first_category_id = cates[0];
        String dsl_second_category_id = cates[1];
        String dsl_third_category_id = cates[2];
        String searchcode = sequenceService.getDslCategorySequence(dsl_third_category_id);
        sequenceService.nextCICategorySequence(dsl_third_category_id);
        String[] cateNames = dslCateName.split("-");
        String dsl_first_category_name = cateNames[0];
        String dsl_second_category_name = cateNames[1];
        String dsl_third_category_name = cateNames[2];
        String insertSql = "INSERT INTO PROJECT_DSL(ID,DSL_NAME,DSL_FIRST_CATEGORY_ID,DSL_FIRST_CATEGORY_NAME,DSL_SECOND_CATEGORY_ID,DSL_SECOND_CATEGORY_NAME,DSL_THIRD_CATEGORY_ID,DSL_THIRD_CATEGORY_NAME,NOTE,DSL_SEARCHCODE,STATE,PROJECT_ID,PARTNER_ID,ADD_TIME,ORDER_NUM)" +
                "VALUES (:id,:dsl_name,:dsl_first_category_id,:dsl_first_category_name,:dsl_second_category_id,:dsl_second_category_name,:dsl_third_category_id,:dsl_third_category_name,:note,:dsl_searchcode,1,:project_id,:partner_id,:add_time,:order_num)";
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        paramMap.put("dsl_name", dsl_name);
@@ -776,9 +761,9 @@
        //paramMap.put("partner_id", WebUtil.getLoginedPartnerId(request));
        paramMap.put("add_time", DateUtil.getCurrentDate14());
        paramMap.put("order_num", order_num);
        baseDao.execute(insertSql, paramMap);
        return true;
    }
@@ -805,24 +790,24 @@
        String note = request.getParameter("note");
        String id = request.getParameter("id");
        String order_num = request.getParameter("order_num");
        String[] cates = dslCateId.split("-");
        String dsl_first_category_id = cates[0];
        String dsl_second_category_id = cates[1];
        String dsl_third_category_id = cates[2];
        String searchcode = sequenceService.getDslCategorySequence(dsl_third_category_id);
        String[] cateNames = dslCateName.split("-");
        String dsl_first_category_name = cateNames[0];
        String dsl_second_category_name = cateNames[1];
        String dsl_third_category_name = cateNames[2];
        String updateSql = "UPDATE PROJECT_DSL SET DSL_NAME = :dsl_name,DSL_FIRST_CATEGORY_ID = :dsl_first_category_id,DSL_FIRST_CATEGORY_NAME = :dsl_first_category_name," +
                "DSL_SECOND_CATEGORY_ID = :dsl_second_category_id,DSL_SECOND_CATEGORY_NAME = :dsl_second_category_name,DSL_THIRD_CATEGORY_ID = :dsl_third_category_id,DSL_THIRD_CATEGORY_NAME = :dsl_third_category_name,NOTE = :note,ORDER_NUM = :order_num WHERE ID = :id ";
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        paramMap.put("dsl_name", dsl_name);
@@ -834,12 +819,12 @@
        paramMap.put("dsl_third_category_name", dsl_third_category_name);
        paramMap.put("note", note);
        paramMap.put("order_num", order_num);
        baseDao.execute(updateSql, paramMap);
        return true;
    }
    @Override
    public String updateDslState(HttpServletRequest request) {
        String id = request.getParameter("id");
@@ -860,17 +845,17 @@
        //paramMap.put("partnerId", partnerId);
        List<Map> cates = baseDao.queryForList(selectSubSql,paramMap);
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : cates) {
            String level = map.get("LEVEL").toString();
            String id = map.get("ID").toString();
            //一级树
            if (level.equalsIgnoreCase("1")) {
                yjgnCache.put(id, map);
@@ -887,7 +872,7 @@
                    List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                    map.put("sjTree", new LinkedList<Map>());
                    list.add(map);
                    ejgnCache.put(id, map);
                }
                continue;
@@ -921,8 +906,8 @@
        } else {
            builder.append(" AND C.LEVEL = 1 ");
        }
        int count = baseDao.queryForInteger(builder.toString(),paramMap);
        return count;
    }
@@ -940,11 +925,11 @@
        } else {
            builder.append(" AND C.LEVEL = 1 ");
        }
        builder.append(" ORDER BY STATE,ORDER_NUM ");
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        return pageInfo;
    }
@@ -953,7 +938,7 @@
        String partner_id = "";
        String id = dsl_category.getId();
        String categoryid = request.getParameter("pId");
        String firstCate = "";
        String secondCate = "";
        if(!StringUtil.notEmpty(id)) {
@@ -962,27 +947,27 @@
                int level = ConvertUtil.obj2Integer(pCate.getLevel());
                dsl_category.setP_id(categoryid);
                dsl_category.setLevel(level+1);
                if(level==2) {
                    firstCate = pCate.getP_id();
                    secondCate = pCate.getId();
                } else {
                    firstCate = pCate.getId();
                }
            } else {
                dsl_category.setP_id(null);
                dsl_category.setLevel(1);
            }
            dsl_category.setState(Constants.COMMON_STATE_ENABLE);//所有节点添加时
            dsl_category.setPartner_id(partner_id);
        }
        dsl_category.insertOrUpdate();
        Map result = new HashMap();
        result.put("firstCate", firstCate);
        result.put("secondCate", secondCate);
@@ -990,20 +975,20 @@
    }
    @Override
    public List<Map> getConfigDslList(String configId) {
        SqlParameter param = new SqlParameter();
        SqlParameter param = new SqlParameter();
        param.addValue("configId", configId);
        String sql = " SELECT  L.NEW_VERSION_ID,L.STATE FLAG,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,L.ID LINK_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION  " +
                " FROM CMDB_DSL_LINK L ,DSL_VERSION V , PROJECT_DSL D " +
                " WHERE L.DSL_ID = D.ID AND L.NEW_VERSION_ID = V.ID AND L.CI_ID = :configId AND (L.STATE IS NULL OR L.STATE = 1 OR L.STATE = 2 )";
        return baseDao.queryForList(sql,param);
    }
    @Override
    public void addDslByConfig(PROJECT_DSL proDsl,String configId){
        proDsl.setState(3);
@@ -1020,8 +1005,8 @@
            baseDao.execute(sql, param);
        }
    }
    @Override
    public void addDslVersionByOrder(DSL_VERSION dslVersion){
        String id = StringUtil.getUUID();
@@ -1047,21 +1032,21 @@
        .addValue("update_time", dslVersion.getCreate_time());
        baseDao.execute("delete from DSL_ORDER_LINK where FLOW_ID=:flowId and DSL_ID = :dslId ", param);
        sql = " insert into DSL_ORDER_LINK (ID,FLOW_ID,DSL_ID,DSL_VERSION_ID) values (:id,:flowId,:dslId,:versionId) ";
        if(oldversion != null){
            if(!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID")))){
                //复制最新版本的配置信息
                saveDslConfig(ConvertUtil.obj2StrBlank(oldversion.get("VER_ID")),id);
            }
        }
        baseDao.execute(sql, param);
        //dsl关联配置默认为最新版本
        baseDao.execute("UPDATE CMDB_DSL_LINK SET STATE = 2,NEW_VERSION_ID = :versionId , FLOW_ID = :flowId,DEALER_ID = :dealer_id,DEALER_NAME = :dealer_name,UPDATE_TIME = :update_time WHERE DSL_ID = :dslId  ", param);
    }
    @Override
    public int selectByCode(String code, String id,String partnerId,String pId) {
        StringBuffer sql=new StringBuffer("select count(*) from DSL_CATEGORY where CATE_CODE= :code AND PARTNER_ID =:partner_id AND P_ID =:p_id ");
@@ -1091,31 +1076,31 @@
        int count=baseDao.queryForInteger(sql.toString(),param);
        return count;
    }
    @Override
    public FacedeResponse execDisableDslCategory(String id, String partnerId) {
        FacedeResponse res = new FacedeResponse();
        //获取该分类下的所有子类
        List<Map> list = this.getAllChildList(id);
        Map map = new HashMap();
        map.put("ID", id);
        list.add(map);
        //先删除原来的分类
        String sql = "UPDATE DSL_CATEGORY SET STATE = 2 WHERE ID=:id AND PARTNER_ID=:partner_id ";
        List<SqlParameter> paramList = new ArrayList<SqlParameter>();
        if (list != null && list.size() > 0) {
            for (Map map2 : list) {
                String categoryId = ConvertUtil.obj2Str(map2.get("ID"));
                SqlParameter param = new SqlParameter();
                param.addValue("id", categoryId);
                param.addValue("partner_id", partnerId);
                paramList.add(param);
            }
            baseDao.executeBatch(sql, paramList);
        }
        return res;
@@ -1124,34 +1109,34 @@
    @Override
    public FacedeResponse execEnableDslCategory(String id, String partnerId) {
        FacedeResponse res = new FacedeResponse();
        //获取该分类的父类
        List<Map> pList = this.getAllParentList(id, new ArrayList<Map>());
        //获取该分类下的所有子类
        List<Map> list = this.getAllChildList(id);
        Map map = new HashMap();
        map.put("ID", id);
        list.add(map);
        //合并父类和子类列表
        list.addAll(pList);
        //修改DSL分类状态
        this.saveDslCategory(list, partnerId);
        return res;
    }
    /**
     * 保存加盟商DSL分类
     * @param categoryIdList
     * @param partnerId
     */
    private void saveDslCategory(List<Map> categoryIdList, String partnerId) {
        List<SqlParameter> paramList = new ArrayList<SqlParameter>();
        if (categoryIdList != null && categoryIdList.size() > 0) {
            for (Map map : categoryIdList) {
                String categoryId = ConvertUtil.obj2Str(map.get("ID"));
@@ -1160,12 +1145,12 @@
                param.addValue("partner_id", partnerId);
                paramList.add(param);
            }
            String sql = "UPDATE DSL_CATEGORY SET STATE = 1 WHERE ID = :id AND PARTNER_ID=:partner_id ";
            baseDao.executeBatch(sql, paramList);
        }
    }
    /**
     * 递归,获取分类下的所有子类,一直到三级分类
     * @param pid
@@ -1173,7 +1158,7 @@
     */
    private List<Map> getAllChildList(String pid) {
        String sql = "select ID,LEVEL from DSL_CATEGORY where STATE=1 and P_ID=:pid ";
        List<Map> list = baseDao.queryForList(sql, new SqlParameter("pid", pid));
        if (list != null && list.size() > 0) {
            for (int i=0 ;i<list.size();i++) {
@@ -1186,10 +1171,10 @@
                }
            }
        }
        return list;
    }
    /**
     * 递归,获取当前子类的所有父级分类
     * @param id
@@ -1198,7 +1183,7 @@
    private List<Map> getAllParentList(String id, List<Map> tList) {
        String sql = "select c.ID,c.LEVEL from DSL_CATEGORY c where c.STATE=1 and c.ID=(select P_ID from DSL_CATEGORY c2 where c2.STATE=1 and c2.ID=:id) ";
        Map map = baseDao.queryForMap(sql, new SqlParameter("id", id));
        if (map != null && map.size() > 0) {
            tList.add(map);
            String cid = ConvertUtil.obj2Str(map.get("ID"));
@@ -1210,7 +1195,7 @@
        }
        return tList;
    }
    @Override
    public int selectByconfigName(String name, String id,String partnerId,String pId,String thirdCate) {
        StringBuffer sql=new StringBuffer("select count(*) from DSL_CONFIG where NAME= :name AND PARTNER_ID =:partner_id AND PID =:p_id AND THIRD_CATEGORY_ID = :thirdCate ");
@@ -1230,27 +1215,27 @@
    @Override
    public FacedeResponse execDisableDslconfigCate(String id, String partnerId) {
        FacedeResponse res = new FacedeResponse();
        //获取该分类下的所有子类
        List<Map> list = this.getAllChildconfigList(id);
        Map map = new HashMap();
        map.put("ID", id);
        list.add(map);
        //先删除原来的分类
        String sql = "UPDATE DSL_CONFIG SET STATE = 2 WHERE ID=:id AND PARTNER_ID=:partner_id ";
        List<SqlParameter> paramList = new ArrayList<SqlParameter>();
        if (list != null && list.size() > 0) {
            for (Map map2 : list) {
                String categoryId = ConvertUtil.obj2Str(map2.get("ID"));
                SqlParameter param = new SqlParameter();
                param.addValue("id", categoryId);
                param.addValue("partner_id", partnerId);
                paramList.add(param);
            }
            baseDao.executeBatch(sql, paramList);
        }
        return res;
@@ -1259,22 +1244,22 @@
    @Override
    public FacedeResponse execEnableDslconfigCate(String id, String partnerId) {
         FacedeResponse res = new FacedeResponse();
            //获取该分类的父类
            List<Map> pList = this.getAllParentconfigList(id, new ArrayList<Map>());
            //获取该分类下的所有子类
            List<Map> list = this.getAllChildconfigList(id);
            Map map = new HashMap();
            map.put("ID", id);
            list.add(map);
            //合并父类和子类列表
            list.addAll(pList);
            //修改DSL分类状态
            this.saveDslconfigCate(list, partnerId);
            return res;
    }
    /**
@@ -1283,9 +1268,9 @@
     * @param partnerId
     */
    private void saveDslconfigCate(List<Map> categoryIdList, String partnerId) {
        List<SqlParameter> paramList = new ArrayList<SqlParameter>();
        if (categoryIdList != null && categoryIdList.size() > 0) {
            for (Map map : categoryIdList) {
                String categoryId = ConvertUtil.obj2Str(map.get("ID"));
@@ -1294,12 +1279,12 @@
                param.addValue("partner_id", partnerId);
                paramList.add(param);
            }
            String sql = "UPDATE DSL_CONFIG SET STATE = 1 WHERE ID = :id AND PARTNER_ID=:partner_id ";
            baseDao.executeBatch(sql, paramList);
        }
    }
    /**
     * 递归,获取分类下的所有子类,一直到三级分类
     * @param pid
@@ -1307,7 +1292,7 @@
     */
    private List<Map> getAllChildconfigList(String pid) {
        String sql = "select ID,LV from DSL_CONFIG where STATE=1 and PID=:pid ";
        List<Map> list = baseDao.queryForList(sql, new SqlParameter("pid", pid));
        if (list != null && list.size() > 0) {
            for (int i=0 ;i<list.size();i++) {
@@ -1320,10 +1305,10 @@
                }
            }
        }
        return list;
    }
    /**
     * 递归,获取当前子类的所有父级分类
     * @param id
@@ -1332,7 +1317,7 @@
    private List<Map> getAllParentconfigList(String id, List<Map> tList) {
        String sql = "select c.ID,c.LV from DSL_CONFIG c where c.STATE=1 and c.ID=(select PID from DSL_CATEGORY c2 where c2.STATE=1 and c2.ID=:id) ";
        Map map = baseDao.queryForMap(sql, new SqlParameter("id", id));
        if (map != null && map.size() > 0) {
            tList.add(map);
            String cid = ConvertUtil.obj2Str(map.get("ID"));
@@ -1351,21 +1336,21 @@
        Map paramMap = new HashMap();
        //String partnerId = WebUtil.getLoginedPartnerId(request);
        String selectSubSql = "SELECT * FROM DSL_CONFIG WHERE  THIRD_CATEGORY_ID = :thirdCateId AND STATE = 1 ORDER BY LV,SORT_ID ";
        //paramMap.put("partnerId", partnerId);
        paramMap.put("thirdCateId", id);
        List<Map> cates = baseDao.queryForList(selectSubSql,paramMap);
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        for (Map map : cates) {
            String level = map.get("LV").toString();
            String configId = map.get("ID").toString();
            //一级树
            if (level.equalsIgnoreCase("1")) {
                yjgnCache.put(configId, map);
@@ -1400,9 +1385,9 @@
    @Override
    public int queryDslVersionCount(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A  WHERE A.DSL_ID = :dslId AND A.STATE <> 3 ");
        String dslId = request.getParameter("dslId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        int count = baseDao.queryForInteger(builder.toString(), paramMap);
@@ -1412,13 +1397,13 @@
    @Override
    public PageInfo queryDslVersionData(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID  WHERE A.DSL_ID = :dslId AND A.STATE <> 3 ORDER BY A.CREATE_TIME DESC  ");
        String dslId = request.getParameter("dslId");
        Map paramMap = new HashMap();
        paramMap.put("dslId", dslId);
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        return pageInfo;
    }
@@ -1430,13 +1415,13 @@
        long update_time = DateUtil.getCurrentDate14();
        long create_time = update_time;
        String dealer_user_id = WebUtil.getLoginedUserId(request);
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String dealer_user_name = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        String id = StringUtil.getUUID();
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        paramMap.put("dsl_id", dsl_id);
@@ -1446,30 +1431,30 @@
        paramMap.put("create_time", create_time);
        paramMap.put("update_time", update_time);
        paramMap.put("note", note);
        String insertSql = "INSERT INTO DSL_VERSION(ID,DSL_ID,EDITION,STATE,UPDATE_TIME,DEALER_USER_ID,DEALER_USER_NAME,CREATE_TIME,NOTE,LAST_VERSION) VALUES (:id,:dsl_id,:edition,1,:update_time,:dealer_user_id,:dealer_user_name,:create_time,:note,:lastVersion)";
        //查询当前最新的版本信息
        Map newestVersion = queryDslNewestVersionById(dsl_id);
        String oldVersion = new String();
        if(null!=newestVersion && newestVersion.size()>0) {
            oldVersion = ConvertUtil.obj2StrBlank(newestVersion.get("VER_ID"));
        }
        paramMap.put("lastVersion", oldVersion);
        baseDao.execute(insertSql, paramMap);
        if(StringUtil.notEmpty(oldVersion)) {
            //复制版本信息
            saveDslConfig(oldVersion, id);
        }
        return true;
    }
@@ -1485,7 +1470,7 @@
        return "1";
    }
    @Override
    public Map versionMore(String id) {
        String selectSql = "SELECT A.*,B.DSL_NAME,B.DSL_FIRST_CATEGORY_NAME,B.DSL_SECOND_CATEGORY_NAME,B.DSL_THIRD_CATEGORY_NAME FROM DSL_VERSION A,PROJECT_DSL B WHERE A.DSL_ID = B.ID AND A.ID = :id ";
@@ -1495,7 +1480,7 @@
    @Override
    public Map queryDslNewestVersionById(String dslId) {
        String selectSql = "SELECT A.*,C.EDITION,C.VER_ID,C.UPDATE_TIME FROM PROJECT_DSL A LEFT JOIN (SELECT B.DSL_ID,B.EDITION,B.ID AS VER_ID,B.UPDATE_TIME FROM DSL_VERSION B WHERE B.STATE = 1 AND B.DSL_ID = :dslId ORDER BY B.CREATE_TIME DESC LIMIT 0,1 ) C ON A.ID = C.DSL_ID WHERE A.ID = :dslId ";
        String selectSql = "SELECT A.*,C.EDITION,C.VER_ID,C.UPDATE_TIME FROM PROJECT_DSL A LEFT JOIN (SELECT B.DSL_ID,B.EDITION,B.ID AS VER_ID,B.UPDATE_TIME FROM DSL_VERSION B WHERE B.STATE = 1 AND B.DSL_ID = :dslId ORDER BY B.CREATE_TIME DESC LIMIT 0,1 ) C ON A.ID = C.DSL_ID WHERE A.ID = :dslId ";
        Map newestVersion = baseDao.queryForMap(selectSql,new SqlParameter("dslId",dslId));
        return newestVersion;
    }
@@ -1515,7 +1500,7 @@
        return "0";
    }
    @Override
    public List queryDslConfigFolder(String partnerId,String cateId) {
        Map paramMap = new HashMap();
@@ -1524,15 +1509,15 @@
        paramMap.put("cateId", cateId);
        List<Map> cates = baseDao.queryForList(selectSubSql,paramMap);
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        for (Map map : cates) {
            String level = map.get("LV").toString();
            String id = map.get("ID").toString();
            //一级树
            if (level.equalsIgnoreCase("1")) {
                yjgnCache.put(id, map);
@@ -1564,9 +1549,9 @@
            builder.append(" AND DSL_SECOND_CATE = :folderId ");
            paramMap.put("folderId", folderId);
        }
        int count = baseDao.queryForInteger(builder.toString(),paramMap);
        return count;
    }
@@ -1579,18 +1564,18 @@
            builder.append(" AND DSL_SECOND_CATE = :folderId ");
            paramMap.put("folderId", folderId);
        }
        builder.append(" ORDER BY CREATE_TIME DESC ");
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
        List<Map> files = pageInfo.getDatas();
        if(null!=files && files.size()>0) {
            for(Map file : files) {
                file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
            }
        }
        return pageInfo;
    }
@@ -1601,7 +1586,7 @@
        String updateSql = "UPDATE DSL_CONFIG_FILE SET DEL_FLAG = 2 WHERE ID = :fileId ";
        baseDao.execute(updateSql, new SqlParameter("fileId",fileId));
        DSL_CONFIG_FILE file = new DSL_CONFIG_FILE(fileId).getInstanceById();
        //添加删除文件记录
        DSL_VERSION version = new DSL_VERSION(file.getVersion_id()).getInstanceById();
        String saverecordSql = "INSERT INTO DSL_CONFIG_FILE_CHANGE_DETAIL(ID,FIRST_CONFIG_CATE,SECOND_CONFIG_CATE,DSL_VERSION_ID,FILE_ID,DEAL_TYPE,FLOW_ID,CREATE_TIME,USER_ID,USER_NAME) VALUES(:id,:first_config_cate,:folderId,:versionId,:file_id,:deal_type,:flow_id,:createTime,:userId,:userName)";
@@ -1620,8 +1605,8 @@
        return true;
    }
    @Override
    public void addConfigLinkDsl(String configId, String dslIds, String verIds, String delFlags, String flowId, String userId, String userName) {
        List<SqlParameter> addParams = new ArrayList<SqlParameter>();
@@ -1661,16 +1646,16 @@
            sql = " UPDATE CMDB_DSL_LINK SET STATE = NULL,DEALER_ID=NULL,DEALER_NAME=NULL,UPDATE_TIME=NULL,FLOW_ID=NULL WHERE CI_ID=:configId AND DSL_ID =:dslId AND STATE=3 ";
            baseDao.executeBatch(sql, updateParams);
        }
    }
    private Map getSelConfigDslSupport(HttpServletRequest request) {
        Map support = new HashMap();
        SqlParameter param = new SqlParameter();
        StringBuilder builder = new StringBuilder();
        builder.append(" SELECT * FROM ( ");
        builder.append("     SELECT 0 AS DEL_FLAG,D.STATE,D.DSL_THIRD_CATEGORY_ID,V.UPDATE_TIME,CONCAT(D.DSL_FIRST_CATEGORY_NAME,'-',D.DSL_SECOND_CATEGORY_NAME,'-',D.DSL_THIRD_CATEGORY_NAME) CATE_NAME,D.ID DSL_ID,V.ID VER_ID,D.DSL_SEARCHCODE,D.DSL_NAME,V.EDITION ");
        builder.append("     FROM PROJECT_DSL D ,DSL_VERSION V ");
@@ -1683,22 +1668,22 @@
        builder.append("     FROM CMDB_DSL_LINK L,PROJECT_DSL D,DSL_VERSION V ");
        builder.append("     WHERE L.DSL_ID = D.ID AND L.DSL_VERSION_ID = V.ID AND L.STATE=3 AND L.CI_ID = :configId ORDER BY UPDATE_TIME DESC ");
        builder.append(" ) T WHERE 1=1 ");
        String proId = request.getParameter("proId");
        if(StringUtil.notEmpty(proId)) {
            param.put("proId", proId);
        }
        String configId = request.getParameter("configId");
        if(StringUtil.notEmpty(configId)) {
            param.put("configId", configId);
        }
        String flowId = request.getParameter("flowId");
        if(StringUtil.notEmpty(flowId)) {
            param.put("flowId", flowId);
        }
        String dslName = request.getParameter("dslName");
        if(StringUtil.notEmpty(dslName)) {
            builder.append(" AND DSL_NAME LIKE :dslName ");
@@ -1714,27 +1699,27 @@
            builder.append(" AND DSL_SEARCHCODE like :dslSearchCode ");
            param.put("dslSearchCode", "%"+dslSearchCode+"%");
        }
        String dslIds = request.getParameter("dslIds");
        if(StringUtil.notEmpty(dslIds)) {
            dslIds = "'" + dslIds.replace(",", "','") + "'";
            builder.append(" AND DSL_ID NOT IN ("+dslIds+") ");
        }
        builder.append(" GROUP BY DSL_ID ORDER BY UPDATE_TIME DESC ");
        support.put("sql", builder.toString());
        support.put("param", param);
        return support;
    }
    @Override
    public Map getDslMsgById(String id,HttpServletRequest request) {
        StringBuilder builder = new StringBuilder("SELECT c.*,A.EDITION,A.CREATE_TIME,A.VERSIONID FROM PROJECT_DSL c LEFT JOIN (SELECT MAX(B.CREATE_TIME),B.ID AS VERSIONID,B.DSL_ID,B.EDITION,B.CREATE_TIME FROM DSL_VERSION B WHERE B.STATE = 1 AND B.ID = :id ) A ON c.ID = A.DSL_ID WHERE  c.STATE <> 3 ");
       // String partnerId = WebUtil.getLoginedPartnerId(request);
        Map paramMap = new HashMap();
        paramMap.put("id", id);
        //paramMap.put("partnerId", partnerId);
@@ -1766,9 +1751,9 @@
        PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, sql, param);
        return pageInfo;
    }
    @Override
    public int getSelConfigDslListCount(HttpServletRequest request) {
        Map support = getSelConfigDslSupport(request);
@@ -1794,10 +1779,10 @@
            .addValue("curDate", curDate)
            .addValue("flowId", flowId);
        baseDao.execute(sql, param);
    }
    @Override
@@ -1850,11 +1835,11 @@
                sqlParameter.put("VERSION_ID", newVersion);
                paramList.add(sqlParameter);
            }
            String insertSql = "INSERT INTO DSL_CONFIG_FILE(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,VERSION_ID,ORDERNUM,FILE_NOTE,DSL_FIRST_CATE,DSL_SECOND_CATE,CREATE_TIME,USER_ID,USER_NAME,DEL_FLAG) VALUES (:ID,:FILE_NAME,:FILE_PATH,:FILE_SIZE,:FILE_FORMAT,:VERSION_ID,:ORDERNUM,:FILE_NOTE,:DSL_FIRST_CATE,:DSL_SECOND_CATE,:CREATE_TIME,:USER_ID,:USER_NAME,:DEL_FLAG)";
            baseDao.executeBatch(insertSql,paramList);
        }
    }
    @Override
@@ -1911,5 +1896,5 @@
        return info;
    }
}
src/cn/ksource/web/facade/fileManage/DocFacadeImpl.java
@@ -1,16 +1,5 @@
package cn.ksource.web.facade.fileManage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
@@ -19,14 +8,22 @@
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.TreeNode;
import cn.ksource.web.Constants;
import cn.ksource.web.service.file.FileService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("docFacade")
@SuppressWarnings("unchecked")
public class DocFacadeImpl implements DocFacade {
    @Autowired
    @Autowired
    BaseDao baseDao;
    @Override
    public List queryMyfileList(HttpServletRequest request) {
        StringBuilder sql=new StringBuilder("SELECT ID,FOLDER_NAME AS NAME,FOLDER_PATH AS PATH,0 AS FILE_SIZE,0 AS FILE_FORMAT,ORDERNUM,P_ID,CREATE_TIME,1 AS FILE_TYPE FROM GG_FOLDERS A" +
@@ -49,15 +46,15 @@
    @Override
    public int queryfileCount(Map<String,String> params) {
        StringBuilder sql=new StringBuilder("SELECT COUNT(C.ID) FROM(SELECT ID,FOLDER_NAME AS NAME FROM GG_FOLDERS A WHERE 1=1");
        StringBuilder sql=new StringBuilder("SELECT COUNT(C.ID) FROM(SELECT ID FROM GG_FOLDERS A WHERE 1=1");
        String pId=params.get("pId");
        if(StringUtil.isEmpty(pId)){
            sql.append(" AND A.P_ID IS NULL");
        }else{
            sql.append(" AND A.P_ID=:pId");
        }
        sql.append(" UNION SELECT ID,FILE_NAME AS NAME FROM GG_FILES B WHERE B.DEL_FLAG=1 AND B.AUDIT_STATE="+Constants.FILE_STATE_SHTG);
        sql.append(" UNION SELECT ID FROM GG_FILES B WHERE B.DEL_FLAG=1 AND B.AUDIT_STATE="+Constants.FILE_STATE_SHTG);
        if(StringUtil.isEmpty(pId)){
            sql.append(" AND(B.FOLDER_ID IS NULL OR B.FOLDER_ID = '0' )");
        }else{
@@ -74,8 +71,8 @@
    @Override
    public PageInfo queryfileData(PageInfo pageInfo, Map<String,String> params) {
        StringBuilder sql=new StringBuilder("SELECT * FROM (SELECT ID,FOLDER_NAME AS NAME,FOLDER_PATH AS PATH,0 AS FILE_SIZE,0 AS FILE_FORMAT,ORDERNUM,P_ID,CREATE_TIME,1 AS FILE_TYPE,TYPE,0 AS BUSINESSTYPE,0 AS ORDER_CODE,0 AS FLOWID,0 AS BUSINESS_ID FROM GG_FOLDERS A WHERE 1=1");
        StringBuilder sql=new StringBuilder("SELECT * FROM (SELECT ID,FOLDER_NAME AS NAME,FOLDER_PATH AS PATH,'0' AS FILE_SIZE,'0' AS FILE_FORMAT,ORDERNUM,P_ID,CREATE_TIME,1 AS FILE_TYPE,TYPE,0 AS BUSINESSTYPE,'0' AS ORDER_CODE,'0' AS FLOWID,'0' AS BUSINESS_ID FROM GG_FOLDERS A WHERE 1=1");
        String pId=params.get("pId");
        if(StringUtil.isEmpty(pId)){
            sql.append(" AND A.P_ID IS NULL");
@@ -103,7 +100,7 @@
            }else {
                sql.append(" ORDER BY C.TYPE ASC,C.FILE_TYPE ");
            }
        }
        else if(!StringUtil.isEmpty(orderType)&&"2".equals(orderType)){
            if("1".equals(orderWay)){
@@ -111,7 +108,7 @@
            }else {
                sql.append(" ORDER BY CAST(C.FILE_SIZE as SIGNED) ");
            }
        }
        else if(!StringUtil.isEmpty(orderType)&&"3".equals(orderType)){
            if("1".equals(orderWay)){
@@ -119,12 +116,12 @@
            }else {
                sql.append(" ORDER BY C.CREATE_TIME ");
            }
        }
        else{
            sql.append(" ORDER BY C.TYPE ASC,C.FILE_TYPE,C.FILE_FORMAT,C.CREATE_TIME DESC");
        }
        PageInfo info=baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
        List<Map> list= info.getDatas();
        for(Map map :list){
@@ -187,7 +184,7 @@
            sqlBuilder.append("UPDATE GG_FILES SET FILE_NAME =:newName WHERE ID=:id");
        }
        baseDao.execute(sqlBuilder.toString(), params);
    }
    @Override
@@ -214,7 +211,7 @@
            paramMap.put("pid", pid);
        }
        sql.append(" ORDER BY CREATE_TIME");
        List<Map> categoryList = baseDao.queryForList(sql.toString(), paramMap);
        for (Map map : categoryList) {
            TreeNode yjTree = new TreeNode(map.get("ID").toString(),map.get("FOLDER_NAME").toString());
@@ -255,7 +252,7 @@
        paramMap.put("businessId", businessId);
        paramMap.put("createTime", DateUtil.getCurrentDate14());
        baseDao.execute(saveSql, paramMap);
    }
    @Override
@@ -279,8 +276,8 @@
                break;
            }
        }
        return list;
    }
@@ -317,7 +314,7 @@
            }else {
                sqlBuilder.append(" ORDER BY A.ORDERNUM ");
            }
        }
        else if(!StringUtil.isEmpty(orderType)&&"2".equals(orderType)){
            if("1".equals(orderWay)){
@@ -325,7 +322,7 @@
            }else {
                sqlBuilder.append(" ORDER BY CAST(A.FILE_SIZE as SIGNED) ");
            }
        }
        else if(!StringUtil.isEmpty(orderType)&&"3".equals(orderType)){
            if("1".equals(orderWay)){
@@ -333,7 +330,7 @@
            }else {
                sqlBuilder.append(" ORDER BY A.CREATE_TIME ");
            }
        }
        else{
            sqlBuilder.append(" ORDER BY A.CREATE_TIME DESC");
@@ -420,7 +417,7 @@
                map.put("FOLDER_NAME", f_name);
            }
        }
        return map;
    }
@@ -503,6 +500,6 @@
    public void docheckFile(Map<String, String> params) {
        String sql="UPDATE GG_FILES SET AUDIT_STATE=:flag WHERE ID=:id";
        baseDao.execute(sql, params);
    }
}
src/cn/ksource/web/facade/health/HealthFacadeImpl.java
@@ -1,27 +1,12 @@
package cn.ksource.web.facade.health;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import cn.ksource.beans.SC_PARTNER_CUSTOMER_INFO;
import cn.ksource.beans.SC_WORKFLOW_CI_HEALTH;
import cn.ksource.beans.WORKFLOW_NODE;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.util.TreeUtil;
import cn.ksource.core.util.*;
import cn.ksource.core.web.ClientUtil;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
@@ -31,6 +16,11 @@
import cn.ksource.web.service.file.FileService;
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
import cn.ksource.web.util.DateParepareUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Service
@SuppressWarnings("unchecked")
@@ -771,7 +761,7 @@
            builder.append("and FLOWSTATE =:nodeState ");
        }
        builder.append("     order by FLOWSTATE asc     ");
        builder.append("     ) t group by FLOWID     ");
        builder.append("     ) t group by FLOWID,NODETIME,NODEID,NODESTATE ");
        builder.append(" ) n  ");
        builder.append("  on b.ID = n.FLOWID ");
        //工单类型
src/cn/ksource/web/facade/incident/IncidentFacadeImpl.java
@@ -884,7 +884,7 @@
    }
    @Override
    public Map queryContactNameInfo(Map param) {
        String selectSql = "SELECT CONTACT_NAME,YWKS,SUB_CUSTOMER_ID,SUB_CUSTOMER_NAME,CONTACTS_TYPE FROM CUSTOMER_CONTACTS WHERE CONTACT_NAME = :contactName AND CUSTOMER_ID = :customer_id ";
        Map map = baseDao.queryForMap(selectSql,param);
@@ -1762,30 +1762,30 @@
        String flowstate = params.get("flowstate");
        if (StringUtil.notEmpty(flowstate)) {
            if (flowstate.equals("1")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT DISTINCT ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( ");
                //查询处理人是我的
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                builder.append(")D");
                builder.append(" WHERE 1=1 ");
                params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
            } else if (flowstate.equals("2")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                builder.append(" SELECT DISTINCT ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( ");
                builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                builder.append(")D");
                builder.append(" WHERE 1=1 ");
                params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
            } else {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                builder.append(" SELECT DISTINCT ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( ");
                builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                builder.append(")D");
                builder.append(" WHERE 1=1 ");
                params.put("jdywc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_FINISH));
            }
        } else {
            builder.append(" SELECT DISTINCT D.* FROM ( ");
            builder.append(" SELECT DISTINCT ID, WFNAME, BUSINESSTYPE, WFSTATE, WORKFLOWTYPE, CREATERNAME, CREATERID, CREATETIME, ENDTIME, MAINFLOWID, CURRENT_NODE_NAME, CURRENT_NODE_ID, DEAL_TYPE, CURRENT_DEALER_ID, CURRENT_DEALER_NAME, CURRENT_DEAL_ROLEIDA, CURRENT_DEAL_ROLENAME, WF_TEMPLATE_ID, BUSINESS_ID, ORDER_CODE, CUSTOMER_ID, CUSTOMER_NAME, PROJECT_ID, PROJECT_NAME, SUB_CUSTOMER_NAME, SUB_CUSTOMER_ID, NAME, CONTACT_NAME, PRIORITY_ID, INFLUENCE_ID, SLA_ID, THIRD_CATEGORY_ID, TYPE_ID FROM ( ");
            //查询处理人是我的
            builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            builder.append(" SELECT B.ID, B.WFNAME, B.BUSINESSTYPE, B.WFSTATE, B.WORKFLOWTYPE, B.CREATERNAME, B.CREATERID, B.CREATETIME, B.ENDTIME, B.MAINFLOWID, B.CURRENT_NODE_NAME, B.CURRENT_NODE_ID, B.DEAL_TYPE, B.CURRENT_DEALER_ID, B.CURRENT_DEALER_NAME, B.CURRENT_DEAL_ROLEIDA, B.CURRENT_DEAL_ROLENAME, B.WF_TEMPLATE_ID, B.BUSINESS_ID, B.ORDER_CODE, B.NOTE, B.CUSTOMER_ID, B.CUSTOMER_NAME, B.PROJECT_ID, B.PROJECT_NAME, B.SUB_CUSTOMER_NAME, B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            builder.append(")D");
            builder.append(" WHERE  D.WFSTATE != :ysc  ");
        }
@@ -2339,7 +2339,7 @@
    public int queryincidentEndCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = :type ");
        sqlpart = getEndSql(sqlpart, params);
        sql.append(sqlpart);
@@ -2353,7 +2353,8 @@
    public PageInfo queryincidentEndList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
//        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.ENDTIME , ");
        sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ,");
        sql.append(" D.HANG_UP_USERNAME,D.HANG_UP_TIME,D.HANG_UP_REASON ,WB.SCORE ");
        sql.append("FROM (SELECT F.*,E.SCORE FROM  WORKFLOW_BASE F LEFT JOIN ORDER_SATIS_INFO E ON F.ID = E.BUSINESS_ID WHERE  F.BUSINESSTYPE = :businessType ) WB, WORKFLOW_NODE C ,SC_WORKFLOW_INCIDENT B LEFT JOIN HANG_UP_INFO D ON B.ID = D.BUS_ID ");
@@ -2362,7 +2363,7 @@
        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.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);
    }
@@ -2479,7 +2480,7 @@
    public int queryincidentJxzCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1 ");
        sqlpart = getJxzSql(sqlpart, params);
        sql.append(sqlpart);
@@ -2493,14 +2494,14 @@
    public PageInfo queryincidentJxzList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT WB.* ,B.STATE ,B.NAME ");
        sql.append("SELECT WB.ID,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID ,B.STATE ,B.NAME ");
        sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND  C.FLOWID = WB.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1 ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
        sqlpart = getJxzSql(sqlpart, params);
        sql.append(sqlpart);
        sql.append(" GROUP BY WB.ID 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);
    }
@@ -2717,15 +2718,15 @@
        StringBuffer sql = new StringBuffer();
        Map paramMap = new HashMap();
        selectSql.append("SELECT COUNT(*) AS NUM,D.STATE FROM (SELECT A.* FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C  WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1  AND C.CURRENT_DEALER_ID IS NOT  NULL AND A.ID = B.BUSINESS_ID  ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT A.*  FROM SC_WORKFLOW_INCIDENT  A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1  AND C.CURRENT_DEALER_ID IS NOT NULL AND A.ID = B.BUSINESS_ID ");
        selectSql.append("SELECT COUNT(*) AS NUM,D.STATE FROM (SELECT A.ID, A.STATE FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C  WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1  AND C.CURRENT_DEALER_ID IS NOT  NULL AND A.ID = B.BUSINESS_ID  ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT A.ID  FROM SC_WORKFLOW_INCIDENT  A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = 1  AND C.CURRENT_DEALER_ID IS NOT NULL AND A.ID = B.BUSINESS_ID ");
        String customer_Id = request.getParameter("customerId");
        if (!StringUtil.isEmpty(customer_Id)) {
            selectSql.append(" AND A.CUSTOMER_ID = :customer_Id ");
            sql.append(" AND A.CUSTOMER_ID = :customer_Id ");
            paramMap.put("customer_Id", customer_Id);
        }
        selectSql.append(" GROUP BY A.ID) 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);
@@ -2773,7 +2774,7 @@
    public int queryincidentOrderNodeCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND  C.FLOWID = WB.ID  AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL AND WB.BUSINESSTYPE = :businessType ");
        sqlpart = getOrderNodeSql(sqlpart, params);
        sql.append(sqlpart);
@@ -2787,14 +2788,14 @@
    public PageInfo queryincidentOrderNodeList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,");
        sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
        sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND  C.FLOWID = WB.ID AND C.FLOWSTATE = 1  AND C.CURRENT_DEALER_ID IS NOT NULL AND WB.BUSINESSTYPE = :businessType ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
        sqlpart = getOrderNodeSql(sqlpart, params);
        sql.append(sqlpart);
        sql.append(" GROUP BY WB.ID 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.CURRENT_DEALER_NAME, WB.BUSINESS_ID, WB.WFSTATE, B.STATE , B.NAME ORDER BY WB.CREATETIME DESC ");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
    }
@@ -2915,7 +2916,7 @@
    public int queryincidentTimeoutCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 ) ");
        sqlpart = getincidentTimeOutSql(sqlpart, params);
@@ -2930,14 +2931,14 @@
    public PageInfo queryincidentTimeoutList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT WB.*,B.STATE ,B.NAME  ");
        sql.append("SELECT WB.ID,WB.WFNAME,WB.BUSINESSTYPE,WB.WFSTATE,WB.WORKFLOWTYPE,WB.CREATERNAME,WB.CREATERID,WB.CREATETIME,WB.ENDTIME,WB.MAINFLOWID,WB.CURRENT_NODE_NAME,WB.CURRENT_NODE_ID,WB.DEAL_TYPE,WB.CURRENT_DEALER_ID,WB.CURRENT_DEALER_NAME,WB.CURRENT_DEAL_ROLEIDA,WB.CURRENT_DEAL_ROLENAME,WB.WF_TEMPLATE_ID,WB.BUSINESS_ID,WB.ORDER_CODE,WB.CUSTOMER_ID,WB.CUSTOMER_NAME,WB.PROJECT_ID,WB.PROJECT_NAME,WB.SUB_CUSTOMER_NAME,WB.SUB_CUSTOMER_ID,B.STATE ,B.NAME  ");
        sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB  ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 ) ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT));
        sqlpart = getincidentTimeOutSql(sqlpart, params);
        sql.append(sqlpart);
        sql.append(" GROUP BY WB.ID 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);
    }
@@ -3079,7 +3080,7 @@
        paramMap.put("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
        //查询该人员所属的项目
        sql.append("SELECT COUNT(*) AS NUM,E.STATE FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,((SELECT B.ID FROM AC_ROLE B WHERE B.STATE = 1) UNION ALL (SELECT DISTINCT A.ID  FROM AC_ROLE_GROUP A WHERE  A.STATE = 1) ");
        sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.* FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,((SELECT B.ID FROM AC_ROLE B WHERE B.STATE = 1) UNION ALL (SELECT DISTINCT A.ID  FROM AC_ROLE_GROUP A WHERE  A.STATE = 1) ");
        sqlall.append("SELECT COUNT(F.ID) FROM (SELECT E.ID FROM SC_WORKFLOW_INCIDENT E,WORKFLOW_BASE D,((SELECT B.ID FROM AC_ROLE B WHERE B.STATE = 1) UNION ALL (SELECT DISTINCT A.ID  FROM AC_ROLE_GROUP A WHERE  A.STATE = 1) ");
        sql.append(") C WHERE E.ID = D.BUSINESS_ID AND D.CURRENT_DEAL_ROLEIDA = C.ID AND D.WFSTATE != :wfstate AND (D.CURRENT_DEALER_ID IS NULL OR D.CURRENT_DEALER_ID = '' )");
@@ -3137,7 +3138,7 @@
    public int querymyincidentEndCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND  C.FLOWID = WB.ID AND C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
        sqlpart.append(" AND WB.WFSTATE = :state  ");
@@ -3154,7 +3155,8 @@
    public PageInfo querymyincidentEndList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,WB.ENDTIME , ");
//        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.ENDTIME , ");
        sql.append("SELECT B.RESOLVE_TYPE_NAME,B.CREATE_TIME,B.CREATE_USER_NAME,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME ,WB.ENDTIME , ");
        sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME, ");
        sql.append(" D.HANG_UP_USERNAME,D.HANG_UP_TIME,D.HANG_UP_REASON ,WB.SCORE ");
        sql.append("FROM (SELECT F.*,E.SCORE FROM  WORKFLOW_BASE F LEFT JOIN ORDER_SATIS_INFO E ON F.ID = E.BUSINESS_ID WHERE  F.BUSINESSTYPE = :businessType ) WB , WORKFLOW_NODE C ,SC_WORKFLOW_INCIDENT B LEFT JOIN HANG_UP_INFO D ON B.ID = D.BUS_ID ");
@@ -3164,7 +3166,7 @@
        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 , WB.SCORE ORDER BY WB.CREATETIME DESC ");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
    }
@@ -3303,8 +3305,8 @@
        Map paramMap = new HashMap();
        paramMap.put("flowstate", type);
        paramMap.put("userId", params.get("userId"));
        selectSql.append("SELECT COUNT(*) AS NUM,D.STATE FROM (SELECT A.* FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C  WHERE B.ID = C.FLOWID AND C.FLOWSTATE = :flowstate  AND C.CURRENT_DEALER_ID = :userId AND A.ID = B.BUSINESS_ID  ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT A.*  FROM SC_WORKFLOW_INCIDENT  A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = :flowstate  AND C.CURRENT_DEALER_ID = :userId AND A.ID = B.BUSINESS_ID ");
        selectSql.append("SELECT COUNT(*) AS NUM,D.STATE FROM (SELECT A.ID,A.STATE FROM SC_WORKFLOW_INCIDENT A,WORKFLOW_BASE B , WORKFLOW_NODE C  WHERE B.ID = C.FLOWID AND C.FLOWSTATE = :flowstate  AND C.CURRENT_DEALER_ID = :userId AND A.ID = B.BUSINESS_ID  ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT A.ID  FROM SC_WORKFLOW_INCIDENT  A,WORKFLOW_BASE B , WORKFLOW_NODE C WHERE B.ID = C.FLOWID AND C.FLOWSTATE = :flowstate  AND C.CURRENT_DEALER_ID = :userId AND A.ID = B.BUSINESS_ID ");
        String customer_Id = params.get("customerId");
        if (!StringUtil.isEmpty(customer_Id)) {
@@ -3314,7 +3316,7 @@
        }
        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);
@@ -3361,7 +3363,7 @@
    public int querymyincidentOrderNodeCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID AND  C.FLOWID = WB.ID  AND C.FLOWSTATE = :flowstate AND C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
        params.put("flowstate", params.get("type"));
        sqlpart = getmyodernodeSql(sqlpart, params);
@@ -3376,7 +3378,7 @@
    public PageInfo querymyincidentOrderNodeList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE ,C.FLOWSTATE, ");
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,C.FLOWSTATE, ");
        sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
        sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB , WORKFLOW_NODE C ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND  C.FLOWID = WB.ID AND C.FLOWSTATE = :flowstate  AND C.CURRENT_DEALER_ID = :userId AND WB.BUSINESSTYPE = :businessType ");
@@ -3386,7 +3388,7 @@
        sqlpart = getmyodernodeSql(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);
    }
@@ -3511,7 +3513,7 @@
    public int querymyincidentTimeoutCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 )  AND WB.CURRENT_DEALER_ID = :current_dealer_id  ");
        params.put("current_dealer_id", params.get("userId"));
@@ -3638,7 +3640,8 @@
    public PageInfo querymyincidentTimeoutList(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME, ");
//        sql.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE , ");
        sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.STATE ,B.NAME ");
        sql.append("FROM SC_WORKFLOW_INCIDENT B,WORKFLOW_BASE WB WHERE WB.BUSINESS_ID = B.ID  ");
        sqlpart.append("  AND WB.BUSINESSTYPE = :businessType AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 ) AND WB.CURRENT_DEALER_ID = :current_dealer_id ");
@@ -3758,7 +3761,7 @@
        }
        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.CURRENT_NODE_ID, WB.CURRENT_NODE_NAME, WB.CUSTOMER_NAME, WB.SUB_CUSTOMER_NAME, WB.CURRENT_DEALER_NAME, WB.BUSINESS_ID, WB.WFSTATE, B.STATE , B.NAME,WB.CREATETIME ORDER BY WB.CREATETIME DESC ");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
    }
@@ -5498,12 +5501,12 @@
        params.put("endTime", endDay + "600000");
        if (StringUtil.isBlank(userId)) {
            builder.append(" select count(ID) NUM,DATE_FORMAT(CREATE_TIME,'%Y%m%d') CREATEDAY  from SC_WORKFLOW_INCIDENT  where CUSTOMER_ID = :cusId ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by CREATEDAY ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by DATE_FORMAT(CREATE_TIME,'%Y%m%d') ");
        } else {
            builder.append(" select count(q.ID) NUM,DATE_FORMAT(q.CREATE_TIME,'%Y%m%d') CREATEDAY from workflow_base b ,SC_WORKFLOW_INCIDENT q ");
            builder.append(" where b.ID = q.FLOW_ID and  EXISTS ( ");
            builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
            builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime  group by 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);
@@ -5642,12 +5645,12 @@
        StringBuilder builder = new StringBuilder();
        if (StringUtil.isBlank(userId)) {
            builder.append(" select count(ID) NUM,THIRD_CATEGORY_ID SERVER_ID  from SC_WORKFLOW_INCIDENT  where CUSTOMER_ID = :cusId ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by SERVER_ID ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by THIRD_CATEGORY_ID ");
        } else {
            builder.append(" select count(q.ID) NUM,q.THIRD_CATEGORY_ID SERVER_ID  from SC_WORKFLOW_INCIDENT q,WORKFLOW_BASE b ");
            builder.append(" where b.ID = q.FLOW_ID and  EXISTS ( ");
            builder.append(" select FLOWID from workflow_node n where b.ID = n.FLOWID and n.CURRENT_DEALER_ID = :userId ");
            builder.append(" ) and q.CUSTOMER_ID = :cusId and q.CREATE_TIME>=:startTime and q.CREATE_TIME<=:endTime  group by 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);
@@ -5784,9 +5787,9 @@
                }
            }
        }
        return map;
    }
    @Override
src/cn/ksource/web/facade/knowledge/KmLibraryFacadeImpl.java
@@ -1,53 +1,39 @@
package cn.ksource.web.facade.knowledge;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.beans.GG_USER;
import cn.ksource.beans.KM_LIBRARY;
import cn.ksource.beans.KM_LIBRARY_CATEGORY;
import cn.ksource.beans.KM_LIBRARY_HIT_RECORD;
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_ACCESS;
import cn.ksource.beans.KM_LIBRARY_KNOWLEDGE_ACCESS_TEMP;
import cn.ksource.beans.KM_LIBRARY_TEMP;
import cn.ksource.beans.*;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.AjaxUtil;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.ParamsMapUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.facade.knowledge.knowledgeDeal.KnowledgeDealFacade;
import cn.ksource.web.service.file.FileService;
import cn.ksource.web.service.knowledge.KmRecordService;
import cn.ksource.web.service.knowledge.KmService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Service("kmLibraryFacade")
public class KmLibraryFacadeImpl implements KmLibraryFacade {
    @Autowired
    private BaseDao baseDao;
    @Autowired
    private FileService fileService;
    @Autowired
    private KmService kmService;
    @Autowired
    private KnowledgeDealFacade knowledgeDealFacade;
    @Autowired
    private KmRecordService kmRecordService;
    /**
@@ -59,15 +45,15 @@
        String selectSubSql = "SELECT * FROM KM_LIBRARY_CATEGORY WHERE STATE=1 ORDER BY LEVEL,SERIAL,TITLE";
        List<Map> subCus = baseDao.queryForList(selectSubSql,param);
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : subCus) {
            //一级树
            if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
                yjgnCache.put(map.get("ID").toString(), map);
@@ -84,7 +70,7 @@
                    List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                    map.put("sjTree", new LinkedList<Map>());
                    list.add(map);
                    ejgnCache.put(map.get("ID").toString(), map);
                }
                continue;
@@ -119,11 +105,11 @@
        param.put("id", id);
        PageInfo pageInfos = baseDao.queryforSplitPageInfo(pageInfo, selectSql, param);
        if(pageInfos.getDatas().size() > 0){
            for(Map map:pageInfos.getDatas()){
            for(Map map:pageInfos.getDatas()){
                map.put("CREATE_TIME", DateUtil.format("yyyy-MM-dd HH:mm:ss", map.get("CREATE_TIME")));
           }
           }
       }
        return pageInfos;
    }
    /**
@@ -131,22 +117,22 @@
     */
    @Override
    public int queryZsflCount(String pId) {
        String selectSql = "SELECT COUNT(ID) FROM KM_LIBRARY_CATEGORY WHERE 1=1 ";
        if(StringUtil.isEmpty(pId)){
            selectSql +=" AND (TAG is null or TAG = '') ";
        }else{
            selectSql +=" AND TAG = :id  ";
        }
        Map param = new HashMap();
        param.put("id", pId);
        int count = baseDao.queryForInteger(selectSql.toString(),param);
        return count;
    }
    /**
     * 验证分类名称
     */
@@ -176,7 +162,7 @@
    @Override
    public void saveknowcategory(Map<String, String> param) {
        KM_LIBRARY_CATEGORY km_library_category = new KM_LIBRARY_CATEGORY();
        String level = param.get("LEVEL");//新增使用
        String tag = param.get("TAG");//新增使用
        String title = param.get("title");
@@ -186,7 +172,7 @@
        //String  userId = WebUtil.getLoginedUserId(request) ;
        String userId = param.get("userId");
        String  userName = ConvertUtil.obj2Str(param.get("userName"));
            if (StringUtils.isBlank(id)) {//new
                km_library_category.setCreate_user_id(userId);
                km_library_category.setCreate_user_name(userName);
@@ -195,15 +181,15 @@
                }
                km_library_category.setCreate_time(DateUtil.getCurrentDate14());
                km_library_category.setState(1);
                km_library_category.setLevel((Integer.parseInt(level)+1));
                km_library_category.setLevel((Integer.parseInt(level)+1));
            }else{
                km_library_category.setId(id);
            }
            km_library_category.setTitle(title);
            km_library_category.setNote(note);
            km_library_category.setSerial(ConvertUtil.obj2Integer(serial));
            km_library_category.setSerial(ConvertUtil.obj2Integer(serial));
            km_library_category.insertOrUpdate();
    }
    /**
     * 修改顺序号
@@ -236,7 +222,7 @@
        Integer count = baseDao.queryForInteger(sql, new SqlParameter("id",id));
        return count;
    }
    /**
     * 验证知识分类可否禁用
     * @param id
@@ -248,10 +234,10 @@
        Integer count = baseDao.queryForInteger(sql, new SqlParameter("id",id));
        return count;
    }
    /**
     *
     *
     * @param p_id
     * @return
     */
@@ -291,13 +277,13 @@
                            paramList.add(map4);
                        }
                    }
                }
            }
        }
        String sql = "update KM_LIBRARY_CATEGORY set STATE=:state where ID=:id";
        baseDao.executeBatch(sql, paramList);
    }
    @Override
    public int getMyCreateKnowCount(Map<String, String> params) {
@@ -316,13 +302,13 @@
        sql.append(" ) K WHERE K.STATE=1 AND K.CREATE_USER_ID=:loginUserId ");
        queryMyCreateKnowIf(params, sql);
        sql.append(" ORDER BY K.AUDIT_STATE ASC,K.CREATE_TIME DESC");
        PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
        List<Map> datas = info.getDatas();
        if(datas.size()>0){
            List<Map> filesList = baseDao.queryForList("SELECT * FROM GG_FILES");
            Map cachefile = new HashMap();
            for(Map file:filesList){
                if(!cachefile.containsKey(file.get("BUSINESS_ID"))){
                    cachefile.put(file.get("BUSINESS_ID"), file);
@@ -337,7 +323,7 @@
            }
        }
        info.setDatas(datas);
        return info;
    }
    private void queryMyCreateKnowIf(Map<String, String> params,
@@ -361,7 +347,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -379,7 +365,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -401,7 +387,7 @@
            sql.append(" AND K.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND K.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
@@ -411,7 +397,7 @@
    public int getMyEditKnowCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder("SELECT COUNT(K.ID) FROM (  ");
        sql.append("( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, AUDIT_STATE FROM km_library_temp WHERE km_library_temp.CONTENT_STATE = 2 AND km_library_temp.UPDATER_ID = :loginUserId ) ");
        sql.append(" UNION  ALL( SELECT B.ID, B.TITLE, B.TAG, B.SUMMARY, B.CONTENT, B.CATEGORY_ID, B.CATEGORY_NAME, B.CREATE_USER_ID, B.CREATE_USER_NAME, B.CREATE_TIME, B.STATE, B.VERSION, B.HITS, B.IS_EDITOR, B.THIRDLEVEL_NAME, B.THIRDLEVEL_ID, B.FIRST_CATEGORY_ID, B.FIRST_CATEGORY_NAME, B.SECOND_CATEGORY_ID, B.SECOND_CATEGORY_NAME, B.THIRD_CATEGORY_ID, B.THIRD_CATEGORY_NAME, F.TIME AS UPDATE_DATE, B.UPDATER_ID, B.UPDATE_NAME, B.SECOND_KNOWCATEGORY_ID, B.SECOND_KNOWCATEGORY_NAME, B.FIRST_KNOWCATEGORY_ID, B.FIRST_KNOWCATEGORY_NAME, B.SECONDLEVEL_NAME, B.SECONDLEVEL_ID, B.FIRSTLEVEL_NAME, B.FIRSTLEVEL_ID, B.ACCESS_TYPE, 2 AS AUDIT_STATE FROM (SELECT E.*,MAX(E.EDITOR_DATE) AS TIME FROM KM_LIBRARY_UPDATER E WHERE E.USER_ID =:loginUserId GROUP BY E.LIBRARY_ID) F,KM_LIBRARY B WHERE F.LIBRARY_ID=B.ID AND B.STATE=1 AND F.USER_ID=:loginUserId AND F.TYPE = 2 AND B.ID NOT IN (SELECT G.ORIGINAL_ID FROM KM_LIBRARY_TEMP G WHERE G.AUDIT_STATE = 1 AND G.CONTENT_STATE =2))");
        sql.append(" UNION  ALL( SELECT B.ID, B.TITLE, B.TAG, B.SUMMARY, B.CONTENT, B.CATEGORY_ID, B.CATEGORY_NAME, B.CREATE_USER_ID, B.CREATE_USER_NAME, B.CREATE_TIME, B.STATE, B.VERSION, B.HITS, B.IS_EDITOR, B.THIRDLEVEL_NAME, B.THIRDLEVEL_ID, B.FIRST_CATEGORY_ID, B.FIRST_CATEGORY_NAME, B.SECOND_CATEGORY_ID, B.SECOND_CATEGORY_NAME, B.THIRD_CATEGORY_ID, B.THIRD_CATEGORY_NAME, F.TIME AS UPDATE_DATE, B.UPDATER_ID, B.UPDATE_NAME, B.SECOND_KNOWCATEGORY_ID, B.SECOND_KNOWCATEGORY_NAME, B.FIRST_KNOWCATEGORY_ID, B.FIRST_KNOWCATEGORY_NAME, B.SECONDLEVEL_NAME, B.SECONDLEVEL_ID, B.FIRSTLEVEL_NAME, B.FIRSTLEVEL_ID, B.ACCESS_TYPE, 2 AS AUDIT_STATE FROM (SELECT E.LIBRARY_ID,E.type,E.USER_ID,MAX(E.EDITOR_DATE) AS TIME FROM KM_LIBRARY_UPDATER E WHERE E.USER_ID =:loginUserId GROUP BY E.LIBRARY_ID,E.type,E.USER_ID) F,KM_LIBRARY B WHERE F.LIBRARY_ID=B.ID AND B.STATE=1 AND F.USER_ID=:loginUserId AND F.TYPE = 2 AND B.ID NOT IN (SELECT G.ORIGINAL_ID FROM KM_LIBRARY_TEMP G WHERE G.AUDIT_STATE = 1 AND G.CONTENT_STATE =2))");
        sql.append(" ) K WHERE K.STATE=1 ");
        queryMyEditKnowIf(params,sql);
        return baseDao.queryForInteger(sql.toString(), params);
@@ -419,22 +405,22 @@
    @Override
    public PageInfo getMyEditKnowData(Map<String, String> params,
            PageInfo pageInfo) {
        StringBuilder sql = new StringBuilder("SELECT K.* FROM ( ");
        sql.append("( SELECT ID, TITLE, TAG, SUMMARY, CONTENT, CATEGORY_ID, CATEGORY_NAME, CREATE_USER_ID, CREATE_USER_NAME, CREATE_TIME, STATE, VERSION, HITS, IS_EDITOR, THIRDLEVEL_NAME, THIRDLEVEL_ID, FIRST_CATEGORY_ID, FIRST_CATEGORY_NAME, SECOND_CATEGORY_ID, SECOND_CATEGORY_NAME, THIRD_CATEGORY_ID, THIRD_CATEGORY_NAME, UPDATE_DATE, UPDATER_ID, UPDATE_NAME, SECOND_KNOWCATEGORY_ID, SECOND_KNOWCATEGORY_NAME, FIRST_KNOWCATEGORY_ID, FIRST_KNOWCATEGORY_NAME, SECONDLEVEL_NAME, SECONDLEVEL_ID, FIRSTLEVEL_NAME, FIRSTLEVEL_ID, ACCESS_TYPE, AUDIT_STATE FROM km_library_temp WHERE km_library_temp.CONTENT_STATE = 2 AND km_library_temp.UPDATER_ID = :loginUserId ) ");
        sql.append(" UNION  ALL( SELECT B.ID, B.TITLE, B.TAG, B.SUMMARY, B.CONTENT, B.CATEGORY_ID, B.CATEGORY_NAME, B.CREATE_USER_ID, B.CREATE_USER_NAME, B.CREATE_TIME, B.STATE, B.VERSION, B.HITS, B.IS_EDITOR, B.THIRDLEVEL_NAME, B.THIRDLEVEL_ID, B.FIRST_CATEGORY_ID, B.FIRST_CATEGORY_NAME, B.SECOND_CATEGORY_ID, B.SECOND_CATEGORY_NAME, B.THIRD_CATEGORY_ID, B.THIRD_CATEGORY_NAME, F.TIME AS UPDATE_DATE, B.UPDATER_ID, B.UPDATE_NAME, B.SECOND_KNOWCATEGORY_ID, B.SECOND_KNOWCATEGORY_NAME, B.FIRST_KNOWCATEGORY_ID, B.FIRST_KNOWCATEGORY_NAME, B.SECONDLEVEL_NAME, B.SECONDLEVEL_ID, B.FIRSTLEVEL_NAME, B.FIRSTLEVEL_ID, B.ACCESS_TYPE, 2 AS AUDIT_STATE FROM (SELECT E.*,MAX(E.EDITOR_DATE) AS TIME FROM KM_LIBRARY_UPDATER E WHERE E.USER_ID =:loginUserId GROUP BY E.LIBRARY_ID) F,KM_LIBRARY B WHERE F.LIBRARY_ID=B.ID AND B.STATE=1 AND F.USER_ID=:loginUserId AND F.TYPE = 2 AND B.ID NOT IN (SELECT G.ORIGINAL_ID FROM KM_LIBRARY_TEMP G WHERE G.AUDIT_STATE = 1 AND G.CONTENT_STATE =2))");
        sql.append(" UNION  ALL( SELECT B.ID, B.TITLE, B.TAG, B.SUMMARY, B.CONTENT, B.CATEGORY_ID, B.CATEGORY_NAME, B.CREATE_USER_ID, B.CREATE_USER_NAME, B.CREATE_TIME, B.STATE, B.VERSION, B.HITS, B.IS_EDITOR, B.THIRDLEVEL_NAME, B.THIRDLEVEL_ID, B.FIRST_CATEGORY_ID, B.FIRST_CATEGORY_NAME, B.SECOND_CATEGORY_ID, B.SECOND_CATEGORY_NAME, B.THIRD_CATEGORY_ID, B.THIRD_CATEGORY_NAME, F.TIME AS UPDATE_DATE, B.UPDATER_ID, B.UPDATE_NAME, B.SECOND_KNOWCATEGORY_ID, B.SECOND_KNOWCATEGORY_NAME, B.FIRST_KNOWCATEGORY_ID, B.FIRST_KNOWCATEGORY_NAME, B.SECONDLEVEL_NAME, B.SECONDLEVEL_ID, B.FIRSTLEVEL_NAME, B.FIRSTLEVEL_ID, B.ACCESS_TYPE, 2 AS AUDIT_STATE FROM (SELECT E.LIBRARY_ID,E.type,E.USER_ID,MAX(E.EDITOR_DATE) AS TIME FROM KM_LIBRARY_UPDATER E WHERE E.USER_ID =:loginUserId GROUP BY E.LIBRARY_ID,E.type,E.USER_ID) F,KM_LIBRARY B WHERE F.LIBRARY_ID=B.ID AND B.STATE=1 AND F.USER_ID=:loginUserId AND F.TYPE = 2 AND B.ID NOT IN (SELECT G.ORIGINAL_ID FROM KM_LIBRARY_TEMP G WHERE G.AUDIT_STATE = 1 AND G.CONTENT_STATE =2))");
        sql.append(" ) K WHERE K.STATE=1 ");
        queryMyEditKnowIf(params, sql);
        sql.append(" ORDER BY K.UPDATE_DATE DESC");
        PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
        List<Map> datas = info.getDatas();
        if(datas.size()>0){
            List<Map> filesList = baseDao.queryForList("SELECT * FROM GG_FILES");
            Map cachefile = new HashMap();
            for(Map file:filesList){
                if(!cachefile.containsKey(file.get("BUSINESS_ID"))){
                    cachefile.put(file.get("BUSINESS_ID"), file);
@@ -449,13 +435,13 @@
            }
        }
        info.setDatas(datas);
        return info;
    }
    private void queryMyEditKnowIf(Map<String, String> params, StringBuilder sql) {
        String title = params.get("title");
        String keyword = params.get("keyword");
        String sl = params.get("sl");
        if(StringUtil.notEmpty(sl)) {
            String[] sls = sl.split(",");
@@ -473,7 +459,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -491,7 +477,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -513,7 +499,7 @@
            sql.append(" AND k.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND k.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
@@ -536,7 +522,7 @@
        if(datas.size()>0){
            List<Map> filesList = baseDao.queryForList("SELECT * FROM GG_FILES");
            Map cachefile = new HashMap();
            for(Map file:filesList){
                if(!cachefile.containsKey(file.get("BUSINESS_ID"))){
                    cachefile.put(file.get("BUSINESS_ID"), file);
@@ -551,13 +537,13 @@
            }
        }
        info.setDatas(datas);
        return info;
    }
    private void queryMyFavKnowIf(Map<String, String> params, StringBuilder sql) {
        String title = params.get("title");
        String keyword = params.get("keyword");
        String sl = params.get("sl");
        if(StringUtil.notEmpty(sl)) {
            String[] sls = sl.split(",");
@@ -575,7 +561,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -593,7 +579,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -615,7 +601,7 @@
            sql.append(" AND k.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND k.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
@@ -629,7 +615,7 @@
    }
    @Override
    public PageInfo getMyKnowData(Map<String, String> params, PageInfo pageInfo) {
        StringBuilder sql = new StringBuilder("SELECT DISTINCT K.*,K.STATE K_STATE,F.AUDIT_STATE STATE FROM KM_LIBRARY K LEFT JOIN KM_LIBRARY_TEMP F ON K.ID = F.ORIGINAL_ID WHERE 1=1 ");
        StringBuilder sql = new StringBuilder("SELECT K.*,K.STATE K_STATE,F.AUDIT_STATE STATE FROM KM_LIBRARY K LEFT JOIN KM_LIBRARY_TEMP F ON K.ID = F.ORIGINAL_ID WHERE 1=1 ");
        queryMyKnowIf(params, sql);
        sql.append(" ORDER BY K.STATE,K.CREATE_TIME DESC");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
@@ -654,7 +640,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -672,7 +658,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -694,20 +680,20 @@
            sql.append(" AND K.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND K.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
        }
    }
    @Override
    public int queryMyDshKnowCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT K.ID) FROM KM_LIBRARY_TEMP K WHERE K.STATE=1 AND K.CREATE_USER_ID=:loginUserId ");
        queryMyDshKnowIf(params,sql);
        return baseDao.queryForInteger(sql.toString(), params);
    }
    @Override
    public PageInfo queryMyDshKnowData(PageInfo pageInfo,
            Map<String, String> params) {
@@ -716,7 +702,7 @@
        sql.append(" ORDER BY K.AUDIT_STATE,K.CREATE_TIME DESC");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
    }
    private void queryMyDshKnowIf(Map<String, String> params, StringBuilder sql) {
        String title = params.get("title");
        String keyword = params.get("keyword");
@@ -738,7 +724,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -756,7 +742,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -778,7 +764,7 @@
            sql.append(" AND K.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND K.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
@@ -789,7 +775,7 @@
    }
    @Override
    public int updatestate(String id,String state) {
        KM_LIBRARY library = new KM_LIBRARY(id);
        if("1".equals(state)){
            library.setState(2);
@@ -885,7 +871,7 @@
                }
        }
        Integer access_type = ConvertUtil.obj2Integer(request.getParameter("isKj"));
        km_library.setFirst_knowcategory_id(first_knowcategory_id).setFirst_knowcategory_name(first_knowcategory_name)
        .setSecond_knowcategory_id(second_knowcategory_id).setSecond_knowcategory_name(second_knowcategory_name)
        .setCategory_id(categoryid).setCategory_name(category_name)
@@ -896,7 +882,7 @@
        .setSecond_category_id(second_category_id).setSecond_category_name(second_category_name)
        .setThird_category_id(third_category_id).setThird_category_name(third_category_name)
        .setAccess_type(access_type);
        km_library.insertOrUpdate();
        //添加用户权限信息
        String cusId = request.getParameter("cusId");
@@ -912,7 +898,7 @@
                access.setKnowledge_id(km_library.getId()).setCustomer_id(cusIdArray[i]).setCustomer_name(cusListArray[i]).insert();
            }
        }
        //添加关联知识
        //删除已存在的关联知识
        baseDao.execute("DELETE FROM KM_LIBRARY_KNOWLEDGE WHERE LIBRARY_ID = :business_id ", new SqlParameter("business_id",km_library.getId()));
@@ -936,23 +922,23 @@
        }
        fileService.uploadFile(request,km_library.getFile_id(),Constants.GG_FOLDERS_KNOWFOLDERS,Constants.FILE_STATE_SHTG,null);
    }
    @Override
    public int getMyKnowCxCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder("SELECT COUNT(DISTINCT K.ID) FROM KM_LIBRARY K WHERE 1=1 ");
        queryMyKnowCxIf(params,sql);
        return baseDao.queryForInteger(sql.toString(), params);
    }
    @Override
    public PageInfo getMyKnowCxData(Map<String, String> params,
            PageInfo pageInfo) {
        StringBuilder sql = new StringBuilder("SELECT DISTINCT K.* FROM KM_LIBRARY K WHERE 1=1 ");
        StringBuilder sql = new StringBuilder("SELECT K.* FROM KM_LIBRARY K WHERE 1=1 ");
        queryMyKnowCxIf(params, sql);
        sql.append(" ORDER BY K.STATE,K.CREATE_TIME DESC");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
    }
    private void queryMyKnowCxIf(Map<String, String> params, StringBuilder sql) {
        String title = params.get("title");
        String keyword = params.get("keyword");
@@ -973,7 +959,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -991,7 +977,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -1013,7 +999,7 @@
            sql.append(" AND K.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND K.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
@@ -1026,10 +1012,10 @@
    @Override
    public void deleteMyLibraryFavorite(String userId, String libraryId) {
         String sql = "delete from KM_LIBRARY_FAVORITE where LIBRARY_ID=:library_id and CREATE_USER_ID=:user_id ";
            SqlParameter param = new SqlParameter("library_id", libraryId);
            param.addValue("user_id", userId);
            baseDao.execute(sql, param);
    }
    @Override
@@ -1043,12 +1029,12 @@
            KM_LIBRARY_HIT_RECORD record = new KM_LIBRARY_HIT_RECORD();
            record.setLibrary_id(libraryId).setCreate_user_id(userId).setCreate_time(DateUtil.getCurrentDate14()).insert();
            String sqlupd = "update KM_LIBRARY set HITS=HITS+1 where ID=:libraryId ";
            baseDao.execute(sqlupd, param);
        }/*如果同一账号点击过,不再增加点击数
        else{
            String sqlupd = "update KM_LIBRARY set HITS=HITS+1 where ID=:libraryId ";
            baseDao.execute(sqlupd, param);
        }*/
        return baseDao.queryForInteger("select HITS FROM KM_LIBRARY WHERE ID=:id",new SqlParameter("id",libraryId));
@@ -1090,9 +1076,9 @@
                params.put("type", ConvertUtil.obj2StrBlank(Constants.KM_SCORE_RULE_TYPE_ZJ));
                kmRecordService.addrecord(params);
            }
        }
        return 1;
    }
    @Override
@@ -1105,16 +1091,16 @@
    @Override
    public PageInfo getMyKnowTypeData(Map<String, String> params,
            PageInfo pageInfo) {
        StringBuilder sql = getknowtypesql(params);
        sql.append(" ORDER BY A.UPDATE_DATE DESC ");
        PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
        List<Map> datas = info.getDatas();
        if(datas.size()>0){
            List<Map> filesList = baseDao.queryForList("SELECT * FROM GG_FILES");
            Map cachefile = new HashMap();
            for(Map file:filesList){
                if(!cachefile.containsKey(file.get("BUSINESS_ID"))){
                    cachefile.put(file.get("BUSINESS_ID"), file);
@@ -1129,12 +1115,12 @@
            }
        }
        info.setDatas(datas);
        return info;
    }
    public StringBuilder getknowtypesql(Map<String, String> params){
        StringBuilder sql = new StringBuilder("SELECT DISTINCT A.* FROM KM_LIBRARY A,KM_RECORD B WHERE A.CREATE_USER_ID = :userId AND A.STATE = 1 AND A.ID = B.LIBRARY_ID AND B.TYPE = :type ");
        StringBuilder sql = new StringBuilder("SELECT A.* FROM KM_LIBRARY A,KM_RECORD B WHERE A.CREATE_USER_ID = :userId AND A.STATE = 1 AND A.ID = B.LIBRARY_ID AND B.TYPE = :type ");
        String title = params.get("title");
        String keyword = params.get("keyword");
        String sl = params.get("sl");
@@ -1155,7 +1141,7 @@
                sql.append(")");
            }
        }
        String know = params.get("know");
        if(StringUtil.notEmpty(know)) {
            String[] knows = know.split(",");
@@ -1173,7 +1159,7 @@
                sql.append(")");
            }
        }
        String ci = params.get("ci");
        if(StringUtil.notEmpty(ci)) {
            String[] cis = ci.split(",");
@@ -1195,12 +1181,12 @@
            sql.append(" AND K.TITLE like :title  ");
            params.put("title", "%" + title + "%");
        }
        if (!StringUtil.isEmpty(keyword)) {
            sql.append(" AND K.TAG like :keyword  ");
            params.put("keyword", "%" + keyword + "%");
        }
        if(!StringUtil.isEmpty(type)){
            if(ConvertUtil.obj2Integer(type)==Constants.KM_SCORE_RULE_TYPE_ZJ ){
                sql.append(" AND A.IS_TOP = 1 ");
@@ -1210,9 +1196,9 @@
                sql.append(" AND B.TYPE = :type ");
            }
        }
        return sql;
    }
    @Override
    public int getMyKnowJfCount(Map<String, String> params) {
@@ -1241,7 +1227,7 @@
            cacheMap.put(map.get("TYPE"),score);
        }
        if(cacheMap.size() != 0){
            if(user.getKm_score() < ConvertUtil.obj2Int(cacheMap.get(Constants.KM_EXPERT_LEVEL_RULE_TYPE_CJZJ))){
                msg.put("DQDJ", "");
                msg.put("XYDJ", Constants.getmapKM_EXPERT_LEVEL_RULE_TYPE_Label(Constants.KM_EXPERT_LEVEL_RULE_TYPE_CJZJ));
@@ -1345,7 +1331,7 @@
            params.put("name", "%"+name+"%");
        }
        if(!StringUtil.isEmpty(type)){
            if(ConvertUtil.obj2Integer(type) == Constants.KM_EXPERT_LEVEL_RULE_TYPE_CJZJ){
                sql.append(" AND KM_SCORE >=:score1 AND KM_SCORE< :score2 ");
                params.put("score1",ConvertUtil.obj2StrBlank(cacheMap.get(Constants.KM_EXPERT_LEVEL_RULE_TYPE_CJZJ)) );
@@ -1363,19 +1349,19 @@
                params.put("score1",ConvertUtil.obj2StrBlank(cacheMap.get(Constants.KM_EXPERT_LEVEL_RULE_TYPE_ZSZJ)) );
            }
        }
        sql.append(" ORDER BY KM_SCORE DESC ");
        List<Map> userList = baseDao.queryForList(sql.toString(),params);
        for(Map map:userList){
            if(StringUtil.isEmpty(ConvertUtil.obj2StrBlank(map.get("KM_SCORE")))){
                map.put("KM_SCORE", 0);
            }
            int score = ConvertUtil.obj2Int(map.get("KM_SCORE"));
            if(cacheMap.size()!=0){
                if(score < ConvertUtil.obj2Int(cacheMap.get(Constants.KM_EXPERT_LEVEL_RULE_TYPE_CJZJ))){
                    map.put("DQDJ", "");
                    map.put("djtype", "");
@@ -1427,7 +1413,7 @@
    public PageInfo knowZjhyData(PageInfo pageInfo, Map<String, String> params) {
        String userId = params.get("userId");
        String type = params.get("type");
        StringBuilder sql = new StringBuilder("SELECT DISTINCT A.*,P.STATE FROM KM_RECORD B ,KM_LIBRARY A LEFT JOIN KM_LIBRARY_TEMP P on P.ORIGINAL_ID = A.ID  WHERE A.ID = B.LIBRARY_ID AND A.STATE=1 ");
        StringBuilder sql = new StringBuilder("SELECT DISTINCT A.ID,A.TITLE,A.TAG,A.CATEGORY_ID,A.CATEGORY_NAME,A.CREATE_USER_ID,A.CREATE_USER_NAME,A.CREATE_TIME,A.STATE,A.VERSION,A.HITS,A.IS_EDITOR,A.THIRDLEVEL_NAME,A.THIRDLEVEL_ID,A.FIRST_CATEGORY_ID,A.FIRST_CATEGORY_NAME,A.SECOND_CATEGORY_ID,A.SECOND_CATEGORY_NAME,A.THIRD_CATEGORY_ID,A.THIRD_CATEGORY_NAME,A.UPDATE_DATE,A.UPDATER_ID,A.UPDATE_NAME,A.SECOND_KNOWCATEGORY_ID,A.SECOND_KNOWCATEGORY_NAME,A.FIRST_KNOWCATEGORY_ID,A.FIRST_KNOWCATEGORY_NAME,A.SECONDLEVEL_NAME,A.SECONDLEVEL_ID,A.FIRSTLEVEL_NAME,A.FIRSTLEVEL_ID,A.ACCESS_TYPE,A.FILE_ID,A.IS_ESSENCE,A.IS_TOP,A.AUDIT_USERID,A.AUDIT_USERNAME,A.AUDIT_USERNAME,P.STATE FROM KM_RECORD B ,KM_LIBRARY A LEFT JOIN KM_LIBRARY_TEMP P on P.ORIGINAL_ID = A.ID  WHERE A.ID = B.LIBRARY_ID AND A.STATE=1 ");
        if(!StringUtil.isEmpty(userId)){
            sql.append(" AND B.USER_ID = :userId ");
        }
@@ -1467,7 +1453,7 @@
            }
            List<Map> filesList = baseDao.queryForList("SELECT * FROM GG_FILES");
            Map cachefile = new HashMap();
            for(Map file:filesList){
                if(!cachefile.containsKey(file.get("BUSINESS_ID"))){
                    cachefile.put(file.get("BUSINESS_ID"), file);
@@ -1491,7 +1477,7 @@
        if(count == 0){
            kmRecordService.addrecord(params);
        }
    }
    @Override
    public void savezanLibrary(Map<String, String> params) {
@@ -1500,11 +1486,11 @@
        if(count == 0){
            kmRecordService.addrecord(params);
        }
    }
    @Override
    public Map getTempKnowledgeById(String id) {
        Map knowMap = new KM_LIBRARY_TEMP(id).getBeanMapById();
        List<Map> knowList = baseDao.queryForList("SELECT B.* FROM KM_LIBRARY_KNOWLEDGE_TEMP A,KM_LIBRARY B WHERE A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID = :business_id ", new SqlParameter("business_id",id));
        knowMap.put("knowList", knowList);
@@ -1526,9 +1512,9 @@
        //文件
        List<Map> fileList = fileService.getFileList(ConvertUtil.obj2StrBlank(knowMap.get("ID")));
        knowMap.put("fileList", fileList);
        return knowMap;
        return knowMap;
    }
    @Override
    public Map saveAgainUpdate(HttpServletRequest request,
            KM_LIBRARY_TEMP km_library_temp) {
@@ -1536,7 +1522,7 @@
        resultMap.put("result", 2);
        String id = request.getParameter("id");
        KM_LIBRARY_TEMP temp = new KM_LIBRARY_TEMP(id).getInstanceById();
            String serivceListId = request.getParameter("serivceListId");
            String serivceList = request.getParameter("serivceList");
            String category_id = request.getParameter("category_id");
@@ -1596,7 +1582,7 @@
                    }
            }
            Integer access_type = ConvertUtil.obj2Integer(request.getParameter("isKj"));
            temp.setFirst_knowcategory_id(first_knowcategory_id).setFirst_knowcategory_name(first_knowcategory_name)
            .setSecond_knowcategory_id(second_knowcategory_id).setSecond_knowcategory_name(second_knowcategory_name)
            .setCategory_id(categoryid).setCategory_name(category_name)
@@ -1607,7 +1593,7 @@
            .setSecond_category_id(second_category_id).setSecond_category_name(second_category_name)
            .setThird_category_id(third_category_id).setThird_category_name(third_category_name)
            .setAccess_type(access_type);
        //待审核
        Integer auditState = Constants.KM_LIBRARY_TEMP_AUDIT_STATE_DSH;
        Map shuser = knowledgeDealFacade.getSpMap(categoryid);
@@ -1626,7 +1612,7 @@
            //更新共同的部分
            temp.setTitle(km_library_temp.getTitle()).setTag(km_library_temp.getTag()).setSummary(km_library_temp.getSummary())
            .setContent(km_library_temp.getContent()).setAudit_userid(shId).setAudit_username(shName).setUpdate_date(DateUtil.getCurrentDate14()).setAudit_state(Constants.KM_LIBRARY_TEMP_AUDIT_STATE_DSH).update();
            //添加用户权限信息
            String cusId = request.getParameter("cusId");
            String cusList = request.getParameter("cusList");
@@ -1666,6 +1652,6 @@
        }
        return resultMap;
    }
}
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();
    }
}
src/cn/ksource/web/facade/releaseManage/ReleaseFacadeImpl.java
@@ -1,15 +1,5 @@
package cn.ksource.web.facade.releaseManage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import cn.ksource.beans.GG_RECORD;
import cn.ksource.beans.SC_WORKFLOW_RELEASE;
import cn.ksource.beans.WORKFLOW_BASE;
@@ -18,7 +8,6 @@
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.JsonUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.util.TreeUtil;
import cn.ksource.core.web.SysInfoMsg;
@@ -33,7 +22,15 @@
import cn.ksource.web.service.WorkOrderCodeService;
import cn.ksource.web.service.record.RecordService;
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unchecked")
@Repository
public class ReleaseFacadeImpl implements ReleaseFacade{
@@ -43,17 +40,17 @@
    private DSLFacade dslFacade;
    @Autowired
    private ChangeFacade changeFacade;
    @Autowired
    private WorkOrderCodeService workOrderCodeService;
    @Autowired
    private WorkFlowSupportService workFlowSupportService;
    @Autowired
    private RecordService recordService;
    @Autowired
    private WorkflowCoreService workflowCoreService;
    /**
     * 获取我的发布管理数据
     * @param request
@@ -88,7 +85,7 @@
            .addValue("startDate", startDate+"000000")
            .addValue("endDate", endDate+"666666");
        StringBuilder builder = new StringBuilder();
        builder.append(" select r.NAME,b.CURRENT_DEALER_NAME,r.PROJECT_NAME,r.RELEASE_REASON,n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
        builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE  ");
@@ -101,11 +98,11 @@
        builder.append("     where CURRENT_DEALER_ID = :userId  ");
                //环节状态
                if(StringUtil.isNotBlank(nodeState)){
                    builder.append("and FLOWSTATE =:nodeState ");
                    builder.append("and FLOWSTATE =:nodeState ");
                }
        builder.append("     order by FLOWSTATE asc  ");
        builder.append("     ) t  ");
        builder.append("     group by FLOWID ");
        builder.append("     group by FLOWID,NODEID,NODETIME,NODESTATE ");
        builder.append(" ) n  ");
        builder.append("  on b.ID = n.FLOWID ");
        //builder.append(" where  b.PARTNER_ID =:partnerId ");
@@ -114,9 +111,9 @@
        //工单状态
        if(StringUtil.notEmpty(flowState)) {
            builder.append(" AND b.WFSTATE =:flowState ");
        }
        //客户
        if(StringUtil.isNotBlank(customerId)) {
            builder.append(" AND b.CUSTOMER_ID = :customerId ");
@@ -129,7 +126,7 @@
        if(StringUtil.isNotBlank(projectId)) {
            builder.append(" AND b.PROJECT_ID = :projectId ");
        }
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND r.ORDER_CODE LIKE :orderCode");
        }
@@ -145,13 +142,13 @@
        builder.append(" order by n.NODESTATE ASC,n.NODETIME desc,b.CREATETIME desc ");
        Map supportMap = new HashMap();
        supportMap.put("sql", builder.toString());
        supportMap.put("param", param);
        return supportMap;
    }
    @Override
    public int queryMyRealseCount(HttpServletRequest request) {
        Map supportMap = getMyRealseSupportMap(request);
@@ -167,7 +164,7 @@
        SqlParameter param = (SqlParameter)supportMap.get("param");
        return baseDao.queryforSplitPage(request, sql, param);
    }
    @Override
    public List queryLinkDeviceList(String flowId) {
        String sql = " select c.id,c.ciname,c.position,c.SEARCHCODE seachcode from cmdb_ci_base c " +
@@ -189,13 +186,13 @@
        }
        return list;
    }
    @Override
    public Map getChangeInfoById(String changeId) {
        String sql = "select oa_id,id change_id,name,customer_id,customer_name,project_id,project_name from sc_workflow_change where id = :changeId ";
        return baseDao.queryForMap(sql, new SqlParameter("changeId", changeId));
    }
    @Override
    public String saveRelease(HttpServletRequest request, SC_WORKFLOW_RELEASE release) {
        String orderId = request.getParameter("orderId");
@@ -258,7 +255,7 @@
        String[] linkOrderIds = request.getParameterValues("linkOrderId");
        String[] linkDeviceIds = request.getParameterValues("linkDeviceId");
        if(StringUtil.isBlank(flowId)||flowId.equals(orderId)){
            String sql = " update sc_workflow_release set flow_id = :orderId where id=:orderId ";
            baseDao.execute(sql, new SqlParameter("orderId",orderId));
@@ -272,7 +269,7 @@
        //saveSysInfo(orderId,sysInfoJson);
        return orderId;
    }
    @Override
    public SysInfoMsg doOrganizationDSL(HttpServletRequest request){
        String orderId = request.getParameter("orderId");
@@ -322,7 +319,7 @@
            sql = " update DSL_ORDER_LINK set FLOW_ID = :flowId where FLOW_ID = :orderId ";
            baseDao.execute(sql, param);
        }
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content("创建发布:"+userName+"创建了发布流程");
@@ -331,10 +328,10 @@
        record.setDeal_user_name(userName);
        record.setBusiness_id(flowId);
        recordService.addRecord(record);
        return msg;
    }
    @Override
    public Map getDSLInfo(String configureId, String thirdCateId, String flowId, String partnerId) {
        SqlParameter param = new SqlParameter();
@@ -342,7 +339,7 @@
            .addValue("thirdCateId", thirdCateId)
            .addValue("flowId", flowId)
            .addValue("partnerId", partnerId);
        StringBuilder builder = new StringBuilder();
        //查询dsl基本信息
        builder.append(" select id,pid,'name',note,lv from CONFIG_DSL where state=1 and THIRD_CATEGORY_ID=:thirdCateId and PARTNER_ID=:partnerId order by lv,sort_id asc ");
@@ -366,7 +363,7 @@
        root.put("versionNo",versionNo);
        return root;
    }
    @Override
    public Map getNextNode(Map<String, String> params) {
        String nodeId = params.get("nodeId");
@@ -395,7 +392,7 @@
        nextNode.put("curTemplateId", templateId);
        return nextNode;
    }
    @Override
    public SysInfoMsg doApproveAssign(HttpServletRequest request) {
        String orderId = request.getParameter("orderId");
@@ -412,7 +409,7 @@
            return doReleaseNotice(request);
        /*}*/
    }
    @Override
    public SysInfoMsg doReleaseNotice(HttpServletRequest request) {
        String orderId = request.getParameter("orderId");
@@ -422,16 +419,16 @@
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String userName = user.get("ZSXM").toString();
        String userId = user.get("Id").toString();
        SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
        List<Map> userList = new ArrayList<Map>();
        Map executorMap = new HashMap();
        executorMap.put("USER_ID", release.getExecute_id());
        executorMap.put("USER_NAME", release.getExecute_name());
        executorMap.put("IS_ADMIN", "1");
        userList.add(executorMap);
        WorkFlowSupportEntity support = new WorkFlowSupportEntity();
        support.setFlowId(flowId);
        support.setNodeId(nodeId);
@@ -442,7 +439,7 @@
        support.setNextNodeTemplateId(Constants.RELEASE_EXECUTE);
        support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
        SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
        //增加处理记录
        String dealUserName="";
        for(Map map:userList){
@@ -459,10 +456,10 @@
        record.setDeal_user_name(userName);
        record.setBusiness_id(flowId);
        recordService.addRecord(record);
        return msg;
    }
    @Override
    public SysInfoMsg doReleaseExec(HttpServletRequest request) {
        String orderId = request.getParameter("orderId");
@@ -490,16 +487,16 @@
        support.setUserName(userName);
        support.setUserId(userId);
        support.setNote(flowNote);
        support.setEverDealflag(true);
        support.setEverNodeTemplateId(Constants.RELEASE_APPROVE);
        support.setNextNodeTemplateId(Constants.RELEASE_APPROVAL);
        support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
        SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
        //查询发布审批主负责人()
        Map<String, String> lastNode = changeFacade.queryUserByTemplateId(flowId, Constants.RELEASE_APPROVE);
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content("工单流转:"+userName+"将工单发送给了"+lastNode.get("CURRENT_DEALER_NAME"));
@@ -508,7 +505,7 @@
        record.setDeal_user_name(userName);
        record.setBusiness_id(flowId);
        recordService.addRecord(record);
        return msg;
    }
@@ -520,7 +517,7 @@
        String nodeId = request.getParameter("nodeId");
        String flowId = request.getParameter("flowId");
        String flowNote = request.getParameter("flowNote");
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String userName = user.get("ZSXM").toString();
        String userId = user.get("Id").toString();
@@ -568,12 +565,12 @@
            return null;
        }
    }
    @Override
    public void doOrderFinish(HttpServletRequest request){
        String orderId = request.getParameter("orderId");
        String nodeId = request.getParameter("nodeId");
        String flowNote = request.getParameter("flowNote");
        String nodeId = request.getParameter("nodeId");
        String flowNote = request.getParameter("flowNote");
        String sucessFlag = request.getParameter("sucessFlag");
        if (StringUtil.isBlank(sucessFlag)) {
            sucessFlag = "1";
@@ -596,7 +593,7 @@
        support.setFlowEndflag(true);
        support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
        workFlowSupportService.doOrderFlow(support);
        //保存dsl操作记录
        dslFacade.saveConfigDslDealRecord(flowId);
        //更新dsl关系
@@ -614,13 +611,13 @@
        record.setBusiness_id(flowId);
        recordService.addRecord(record);
    }
    @Override
    public List querySysInfoList(String orderId) {
        String sql = " select * from SC_WORKFLOW_RELEASE_BUSINESS_SYS where BUSINESS_ID = :orderId" ;
        return baseDao.queryForList(sql,new SqlParameter().addValue("orderId", orderId));
    }
    @Override
    public boolean doAnswer(HttpServletRequest request) {
        String flowId = request.getParameter("flowId");
@@ -634,7 +631,7 @@
        boolean flag = workflowCoreService.answerNode(base, node, entity);
        return flag;
    }
    @Override
    public SysInfoMsg doSendBack(HttpServletRequest request) {
        String orderId = request.getParameter("orderId");
@@ -656,7 +653,7 @@
        SysInfoMsg msg = workFlowSupportService.doOrderSendback(support);
        return msg;
    }
    @Override
    public void doCloseFlow(HttpServletRequest request) {
        String orderId = request.getParameter("orderId");
@@ -673,7 +670,7 @@
        WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
        workflowCoreService.finishNode(base, node, finishEntity);
        workflowCoreService.closeWorkFlow(base);
        String flowId = base.getId();
        //保存dsl操作记录
        dslFacade.saveConfigDslDealRecord(flowId);
@@ -683,7 +680,7 @@
        changeFacade.saveRelationWhenClose(flowId);
        //删除变更中的配置关系
        changeFacade.delRelationWhenClose(flowId);
        //增加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content("工单关闭:"+userName+"关闭了工单");
@@ -693,14 +690,14 @@
        record.setBusiness_id(node.getFlowid());
        recordService.addRecord(record);
    }
    @Override
    public Map getSurveyNum(HttpServletRequest request) {
        Map result = new HashMap();
        //String partnerId = WebUtil.getLoginedPartnerId(request);
        SqlParameter param = new SqlParameter();
        param.addValue("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
        List<Map> projects = new ArrayList<Map>();
        //projects = WebUtil.getProjects(request);
        StringBuilder builder = new StringBuilder();
@@ -730,7 +727,7 @@
        }
        return result;
    }
    @Override
    public List<Map> queryRealseData(HttpServletRequest request) {
        StringBuilder builder = new StringBuilder();
@@ -799,7 +796,7 @@
        String sql = "select count(*) from ( " + builder.toString() + " ) t" ;
        return baseDao.queryForInteger(sql.toString(),paramMap);
    }
    /**
     * 服务台工单列表
     * @param request
@@ -813,17 +810,17 @@
        String nodeTemplateId = request.getParameter("nodeTemplateId");
        String nodeTempId = request.getParameter("nodeTempId");
        /*List<Map> projects = new ArrayList<Map>();
        if(StringUtil.notEmpty(customerId) && StringUtil.notEmpty(projectId)) {
        } else if (StringUtil.notEmpty(customerId) && !StringUtil.notEmpty(projectId)) {
            //通过当前客户查询出所有的项目信息
            projects = slaProjectFacade.queryProjects(request, customerId);
        } else {
            projects = WebUtil.getProjects(request);
        }*/
        StringBuilder builder = new StringBuilder();
        builder.append(" select n.FLOWSTATE NODESTATE,b.CURRENT_DEALER_NAME,b.PROJECT_NAME,r.RELEASE_REASON,b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
        builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE  ");
@@ -840,15 +837,15 @@
        if(StringUtil.isNotBlank(nodeTemplateId)){
            builder.append(" and n.NODE_TEMPLATE_ID IS NOT NULL and  n.NODE_TEMPLATE_ID =:nodeTemplateId and b.WFSTATE = 1 ");
        }
        /*if(StringUtil.notEmpty(customerId) && StringUtil.notEmpty(projectId)) {
            builder.append(" AND b.CUSTOMER_ID = :customerId AND b.PROJECT_ID = :projectId ");
        } else {
            builder = getProjectSql(builder,projects);
        }*/
        //客户
        if(StringUtil.isNotBlank(customerId)) {
            builder.append(" AND b.CUSTOMER_ID = :customerId ");
@@ -856,7 +853,7 @@
        //下属单位
        if(StringUtil.isNotBlank(subCustomerId)) {
            builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
        }
        //工单编号
        String orderCode = request.getParameter("orderCode");
@@ -884,8 +881,8 @@
        if(StringUtil.notEmpty(nodeTempId)) {
            builder.append(" AND EXISTS (SELECT n.ID FROM WORKFLOW_NODE n WHERE b.CURRENT_NODE_ID = n.ID AND n.NODE_TEMPLATE_ID = :nodeTempId ) ");
        }
        builder.append(" order by b.CREATETIME desc ");
        builder.append(" order by b.CREATETIME desc ");
        return builder;
    }
src/cn/ksource/web/facade/servicelist/SlaProjectFacadeImpl.java
@@ -1,15 +1,5 @@
package cn.ksource.web.facade.servicelist;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.beans.CONFIG_DATA_DICTIONARY;
import cn.ksource.beans.CUSTOMER_CONTACTS;
import cn.ksource.beans.SC_SERVCE_CATEGORY;
@@ -24,6 +14,14 @@
import cn.ksource.web.SysConstants;
import cn.ksource.web.facade.incident.IncidentFacade;
import cn.ksource.web.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,7 +40,7 @@
    @Override
    public PageInfo queryProjectContacts(Map<String, String> params,
            PageInfo pageInfo) {
        StringBuilder sql = new StringBuilder("SELECT DISTINCT * FROM CUSTOMER_CONTACTS WHERE  CUSTOMER_ID = :customerId");
        StringBuilder sql = new StringBuilder("SELECT  DISTINCT ID , CUSTOMER_ID , CONTACT_NAME , YWKS , ZW , TELEPHONE , MOBILE , LEVEL_ID , LEVEL_NAME , IS_SATIS , STATE , LOGIN_NAME , PASSWORD , EMAIL , QQ_OPEN_ID , ISEMAIL , ISPHONE , ALLOW_LOGIN , WECHAT_OPEN_ID , SUB_CUSTOMER_ID , SUB_CUSTOMER_NAME , CONTACTS_TYPE , IME   FROM CUSTOMER_CONTACTS WHERE  CUSTOMER_ID = :customerId");
        queryProjectContactsIf(params, sql);
        sql.append(" ORDER BY ALLOW_LOGIN ASC,IS_SATIS DESC,STATE ASC");
        return baseDao.queryforSplitPageInfo(pageInfo, sql.toString(), params);
src/cn/ksource/web/facade/workReport/WorkReportFacadeImpl.java
@@ -26,12 +26,12 @@
    @Autowired
    private DataDictionaryService dicService;
    @Override
    public List<Map> getWeekByYear(String year) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, Integer.valueOf(year));
        List<Map> list = new ArrayList<Map>();
        List<Map> list = new ArrayList<Map>();
        int count = DateUtil.getWeekNumByYear(Integer.valueOf(year));
        SimpleDateFormat sf=new SimpleDateFormat("yyyy/MM/dd");
        if(count>0){
@@ -51,7 +51,7 @@
    @Override
    public List<Map> getWeekByMonth(String date){
        List<Map> list = new ArrayList<Map>();
        List<Map> list = new ArrayList<Map>();
        int count = DateUtil.getWeekNumByMonth(date);
        SimpleDateFormat sf=new SimpleDateFormat("yyyy/MM/dd");
        if(count>0){
@@ -65,7 +65,7 @@
                String beginDay = DateUtil.format("yyyy/MM/dd", DateUtil.getMonthWeekFirstDay(date,i));
                String endDay = DateUtil.format("yyyy/MM/dd", DateUtil.getMonthWeekEndDay(date,i));
                int weekNum = DateUtil.getYearWeekNum(date,i);
                map.put("val", date.substring(0,4)+weekNum);
                map.put("beginDay", beginDay);
                map.put("endDay", endDay);
@@ -74,10 +74,10 @@
        }
        return list;
    }
    @Override
    public List<Map> getMonthByYear(String year) {
        List<Map> list = new ArrayList<Map>();
        List<Map> list = new ArrayList<Map>();
        for(int i=1;i<=12;i++){
            Map map = new HashMap();
            map.put("name", year+"年"+i+"月");
@@ -96,9 +96,9 @@
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        sql.append(" select wfstate data_name,businesstype cate_id,count(id) num from workflow_base where wfstate in (1,2,3,4) ");
        setWhereSql(sql,"createtime",selDate,statisType,param);
        setWhereSql(sql,"to_date(createtime,'YYYYMMDDHH24MISS')",selDate,statisType,param);
        sql.append(" and customer_id=:cusId  group by wfstate,businesstype order by businesstype,wfstate");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        Map<String,Map> dataSetMap = new HashMap();
@@ -130,23 +130,23 @@
        System.out.println("chartMap"+JsonUtil.map2Json(chartMap));
        return chartMap;
    }
    @Override
    public Map getOrderSurveyTable(String selDate,String statisType, String cusId) {
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        sql.append(" select wfstate data_name,businesstype cate_id,count(id) num from workflow_base where wfstate in (1,2,3,4) ");
        setWhereSql(sql,"createtime",selDate,statisType,param);
        setWhereSql(sql,"to_date(createtime,'YYYYMMDDHH24MISS')",selDate,statisType,param);
        sql.append(" and customer_id=:cusId  group by businesstype,wfstate ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        sql.setLength(0);
        sql.append(" SELECT businesstype cate_id,count(id) num FROM workflow_base WHERE customer_id = :cusId ");
        setWhereSql(sql,"createtime",selDate,statisType,param);
        setWhereSql(sql,"to_date(createtime,'YYYYMMDDHH24MISS')",selDate,statisType,param);
        sql.append(" group by businesstype ");
        List<Map> extendList = baseDao.queryForList(sql.toString(),param);
        Map dataSetMap = new HashMap();
        Map extendSetMap = new HashMap();
        for(Map map:dataList){
@@ -157,7 +157,7 @@
        }
        //获取工单类型List
        List<Map> cateList =  getOrderCateList();
        List<String> labelList = new ArrayList<String>();
        List<List<String>> tableDataList = new ArrayList<List<String>>();
        //组织表头
@@ -176,14 +176,14 @@
                String key = cate.get("key").toString();
                List<String> tempList = new ArrayList<String>();
                tempList.add(cate.get("val").toString());
                if(extendSetMap.get(key)!=null){
                    tempList.add(((Map)extendSetMap.get(key)).get("num").toString());
                    totalNum = totalNum + Integer.valueOf(((Map)extendSetMap.get(key)).get("num").toString());
                }else{
                    tempList.add("0");
                }
                key = "1" + "_" + cate.get("key").toString() ;
                if(dataSetMap.get(key)!=null){
                    tempList.add(((Map)dataSetMap.get(key)).get("num").toString());
@@ -234,9 +234,9 @@
        tableMap.put("dataList", tableDataList);
        return tableMap;
    }
    /**
     * 获取工单类型列表
     * @author chenlong
@@ -268,7 +268,7 @@
        }
        return cateList;
    }
    /**
     * 组装类型查询条件
     * @author chenlong
@@ -311,9 +311,9 @@
        if(statisType.equals("month")){
            sql.append(" and month =:selDate ");
        }else if(statisType.equals("year")){
            sql.append(" and left(month,4) =:selDate ");
            sql.append(" and left(month,4) =:selDate ");
        }else if(statisType.equals("quarter")){
            sql.append(" and concat(left(month,4),quarter(concat(month,'01'))) =:selDate ");
            sql.append(" and concat(left(month,4),quarter(concat(month,'01'))) =:selDate ");
        }
        sql.append(" order by update_time desc ");
        Double y = baseDao.queryForDouble(sql.toString(), param);
@@ -330,7 +330,7 @@
        SqlParameter param = new SqlParameter();
        param.put("cus_id", cusId);
        param.put("selDate", selDate);
        sql.append("SELECT AVG(A.ALL_SCORE) AS ALL_SCORE ,B.CUSTOMER_NAME,B.YWJL_NAME,B.ID FROM TOTLE_SATIS_INFO A,SC_PARTNER_CUSTOMER_INFO B WHERE A.CUSTOMER_ID = B.ID AND A.CUSTOMER_ID = :cus_id ");
        if(statisType.equals("month")){
            sql.append(" AND A.MONTH =:selDate ");
@@ -339,9 +339,9 @@
        }else if(statisType.equals("quarter")){
            sql.append(" AND CONCAT(left(month,4),quarter(CONCAT(month,'01'))) =:selDate ");
        }
        sql.append(" GROUP BY A.CUSTOMER_ID");
        sql.append(" GROUP BY A.CUSTOMER_ID,B.CUSTOMER_NAME, B.YWJL_NAME, B.ID");
        Map map = baseDao.queryForMap(sql.toString(),param);
        StringBuffer detailsql = new StringBuffer("SELECT A.CUSTOMER_ID,B.SATIS_TYPE,SUM(B.ALL_COUNT) AS ALL_COUNT,SUM(SATIS_COUNT) AS SATIS_COUNT,AVG(FG_RATE) AS FG_RATE,AVG(REQUEST_FG_RATE) AS REQUEST_FG_RATE,AVG(SATIS_SCORE) AS SATIS_SCORE,AVG(REQUEST_SATIS_SCORE) AS REQUEST_SATIS_SCORE,AVG(SATIS_QZ) AS SATIS_QZ FROM TOTLE_SATIS_INFO A,TOTLE_SATIS_DETAIL B WHERE  A.ID = B.BUS_ID AND A.CUSTOMER_ID = :cus_id    ");
        if(statisType.equals("month")){
            detailsql.append(" AND A.MONTH =:selDate ");
@@ -369,15 +369,15 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,type_id,type_name from sc_workflow_incident where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        sql.append(" group by type_id ");
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by type_id,type_name ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("type_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.INCIDENT_TYPE);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -428,7 +428,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("satis_type").toString(), data);
            }
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
            categories.add("分数");
@@ -461,10 +461,10 @@
                    tempMap.put("data", tempList);
                    series.add(tempMap);
                }
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
@@ -481,15 +481,15 @@
             df = new SimpleDateFormat("yyyyw");
        }
        Calendar cal = Calendar.getInstance();
        cal.setMinimalDaysInFirstWeek(7);
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        cal.setMinimalDaysInFirstWeek(7);
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        try {
            cal.setTime(df.parse(selDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if(statisType.equals("month")){
            cal.add(Calendar.MONTH, -1);
        }else if(statisType.equals("week")){
@@ -499,32 +499,36 @@
        if(statisType.equals("quarter")){
            lastDate = getLastQuarter(selDate);
        }
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        param.put("selDate",selDate);
        param.put("lastDate",lastDate);
        param.put("busType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT);
        String groupByStr = "";
        if(statisType.equals("month")){
            sql.append(" select date_format(createtime,'%Y%m') cate_id,");
            sql.append(" select date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m') cate_id,");
            groupByStr="date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m')";
        }else if(statisType.equals("week")){
            sql.append(" select concat(year(createtime),week(createtime,5)) cate_id,");
            sql.append(" select concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),week(to_date(createtime,'YYYYMMDDHH24MISS'),5)) cate_id,");
            groupByStr = "concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),week(to_date(createtime,'YYYYMMDDHH24MISS'),5))";
        }else if(statisType.equals("quarter")){
            sql.append(" select concat(year(createtime),quarter(createtime)) cate_id,");
            sql.append(" select concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),quarter(to_date(createtime,'YYYYMMDDHH24MISS'))) cate_id,");
            groupByStr = "concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),quarter(to_date(createtime,'YYYYMMDDHH24MISS')))";
        }
        sql.append(" wfstate data_name,count(id) num from workflow_base where wfstate in (1,2,3,4) and businesstype=:busType ");
        if(statisType.equals("month")){
            sql.append(" and (date_format(createtime,'%Y%m') = :selDate or date_format(createtime,'%Y%m')=:lastDate) ");
            sql.append(" and (date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m') = :selDate or date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m')=:lastDate) ");
        }else if(statisType.equals("week")){
            sql.append(" and year(createtime)=left(:selDate,4) and (week(createtime,5) = substring(:selDate,5) or week(createtime,5)=substring(:lastDate,5) ) ");
            sql.append(" and year(to_date(createtime,'YYYYMMDDHH24MISS'))=left(:selDate,4) and (week(to_date(createtime,'YYYYMMDDHH24MISS'),5) = substring(:selDate,5) or week(to_date(createtime,'YYYYMMDDHH24MISS'),5)=substring(:lastDate,5) ) ");
        }else if(statisType.equals("quarter")){
            sql.append(" and year(createtime)=left(:selDate,4) and (quarter(createtime) = substring(:selDate,5) or quarter(createtime)=substring(:lastDate,5) ) ");
            sql.append(" and year(to_date(createtime,'YYYYMMDDHH24MISS'))=left(:selDate,4) and (quarter(to_date(createtime,'YYYYMMDDHH24MISS')) = substring(:selDate,5) or quarter(to_date(createtime,'YYYYMMDDHH24MISS'))=substring(:lastDate,5) ) ");
        }
        sql.append(" and customer_id=:cusId  group by cate_id,data_name ");
        sql.append(" and customer_id=:cusId  group by " + groupByStr +",wfstate ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        Map<String,Map> dataSet = new HashMap();
@@ -567,7 +571,7 @@
            }
            sql.append(" group by cate_id ");
            List<Map> extendList = baseDao.queryForList(sql.toString(),param);
            Map dataSetMap = new HashMap();
            Map extendSetMap = new HashMap();
            for(Map map:dataList){
@@ -576,7 +580,7 @@
            for(Map map:extendList){
                extendSetMap.put(map.get("cate_id"), map);
            }
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
            if(statisType.equals("month")){
@@ -589,7 +593,7 @@
                categories.add("上季度");
                categories.add("本季度");
            }
            for(int i=0;i<4;i++){
                Map tempMap = new HashMap();
                List tempList = new ArrayList();
@@ -608,7 +612,7 @@
                    if(j==1){
                        key = selDate;
                    }
                    if(i==0){
                        if(extendSetMap.get(key)!=null){
                            tempList.add(((Map)extendSetMap.get(key)).get("num"));
@@ -625,7 +629,7 @@
                }
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
@@ -644,7 +648,7 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,source_id from sc_workflow_incident where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by source_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
@@ -652,7 +656,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("source_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.INCIDENT_SOURCE);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -680,16 +684,16 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,resolve_type_id from sc_workflow_incident where customer_id = :cusId and resolve_type_id is not null ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by resolve_type_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("resolve_type_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.CLOSE_REASON);
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
@@ -719,12 +723,12 @@
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId", cusId);
        sql.append(" select TRUNCATE((total_num-IFNULL(outtime_num,0))*100/total_num,2) ontime_rate from ( ");
        sql.append(" select case when total_num=0 then 0 else TRUNCATE((total_num-IFNULL(outtime_num,0))*100/total_num,2) end ontime_rate from ( ");
        sql.append("     select count(id) total_num from sc_workflow_incident where customer_id = :cusId  ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" ) mtotal, ( ");
        sql.append("     select count(id) outtime_num from sc_workflow_incident where customer_id = :cusId and (answer_timeout=1 or deal_timeout=1)  ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" ) mfinish ");
        Double y = baseDao.queryForDouble(sql.toString(), param);
        Map chartMap = new HashMap();
@@ -743,16 +747,16 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,sla_id from sc_workflow_incident where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by sla_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("sla_id"), data);
            }
            sql.setLength(0);
            sql.append(" select id,level_name from sc_sla where  state=1 order by serial asc");
            List<Map> dicList = baseDao.queryForList(sql.toString(), param);
@@ -779,49 +783,49 @@
        SqlParameter param = new SqlParameter();
        param.put("cusId", cusId);
        param.put("nodeTemplateId", Constants.YXCL);
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        StringBuilder sql = new StringBuilder();
        sql.append(" select mtotal.THIRD_CATEGORY_NAME,total_num,IFNULL(answer_num,0) answer_num,IFNULL(activi_num,0) activi_num,IFNULL(finish_num,0) finish_num,IFNULL(timeout_num,0) timeout_num,  ");
        sql.append(" IFNULL(pri_num,0) pri_num,IFNULL(ques_num,0) ques_num,IFNULL(avg_time,0) avg_time,truncate(IFNULL(first_num, 0)*100/total_num,2) first_rate,truncate((total_num-IFNULL(timeout_num, 0))*100/total_num,2) ontime_rate  from  ");
        sql.append(" (select THIRD_CATEGORY_NAME,count(id) total_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT where customer_id=:cusId ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mtotal   ");
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID,THIRD_CATEGORY_NAME) mtotal   ");
        sql.append(" left join (select count(i.id) answer_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and n.FLOWSTATE=1 and i.customer_id=:cusId ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) manswer  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = manswer.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) activi_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE=1 and i.customer_id=:cusId ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mactivi  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mactivi.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) finish_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE in (2,4) and i.customer_id=:cusId   ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mfinish  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mfinish.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) timeout_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT where (ANSWER_TIMEOUT=1 or DEAL_TIMEOUT=1) and customer_id=:cusId  ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mtimeout  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mtimeout.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) pri_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT where SLA_NAME='LEVEL1' and customer_id=:cusId   ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mpri  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mpri.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) ques_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT where QUESTIONID is not null and customer_id=:cusId  ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mques  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mques.THIRD_CATEGORY_ID ");
        sql.append(" left join (select truncate(avg(DEAL_USE_TIME)*3600*1000,0) avg_time,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT where customer_id=:cusId   ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mdeal  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mdeal.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) first_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and (b.WFSTATE=2 or b.WFSTATE=4) and n.NODE_TEMPLATE_ID = :nodeTemplateId and i.customer_id=:cusId  ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mfirst  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mfirst.THIRD_CATEGORY_ID ");
        List<Map> baseList = baseDao.queryForList(sql.toString(),param);
        //组织表头
        lebalList.add("服务目录");
        lebalList.add("事件数");
@@ -834,41 +838,41 @@
        lebalList.add("平均处理时长");
        lebalList.add("一线解决率");
        lebalList.add("服务级别达成率");
        //组织数据
        if(baseList!=null&&baseList.size()>0){
            sql.setLength(0);
            sql.append(" select total_num,IFNULL(answer_num,0) answer_num,IFNULL(activi_num,0) activi_num,IFNULL(finish_num,0) finish_num,IFNULL(timeout_num,0) timeout_num,  ");
            sql.append(" IFNULL(pri_num,0) pri_num,IFNULL(ques_num,0) ques_num,IFNULL(avg_time,0) avg_time,truncate(IFNULL(first_num, 0)*100/total_num,2) first_rate,truncate((total_num-IFNULL(timeout_num, 0))*100/total_num,2) ontime_rate  from  ");
            sql.append(" (select count(id) total_num from SC_WORKFLOW_INCIDENT where customer_id=:cusId ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mtotal,   ");
            sql.append(" (select count(i.id) answer_num from SC_WORKFLOW_INCIDENT i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and n.FLOWSTATE=1 and i.customer_id=:cusId ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) manswer,  ");
            sql.append(" (select count(i.id) activi_num from SC_WORKFLOW_INCIDENT i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE=1 and i.customer_id=:cusId ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mactivi,  ");
            sql.append(" (select count(i.id) finish_num from SC_WORKFLOW_INCIDENT i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE in (2,4) and i.customer_id=:cusId   ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mfinish,  ");
            sql.append(" (select count(id) timeout_num from SC_WORKFLOW_INCIDENT where (ANSWER_TIMEOUT=1 or DEAL_TIMEOUT=1) and customer_id=:cusId  ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mtimeout,  ");
            sql.append(" (select count(id) pri_num from SC_WORKFLOW_INCIDENT where SLA_NAME='LEVEL1' and customer_id=:cusId   ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mpri,  ");
            sql.append(" (select count(id) ques_num from SC_WORKFLOW_INCIDENT where QUESTIONID is not null and customer_id=:cusId  ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mques,  ");
            sql.append(" (select truncate(avg(DEAL_USE_TIME)*3600*1000,0) avg_time from SC_WORKFLOW_INCIDENT where customer_id=:cusId   ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mdeal, ");
            sql.append(" (select count(i.id) first_num from SC_WORKFLOW_INCIDENT i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and (b.WFSTATE=2 or b.WFSTATE=4) and n.NODE_TEMPLATE_ID = :nodeTemplateId and i.customer_id=:cusId  ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mfirst  ");
            Map extendMap = baseDao.queryForMap(sql.toString(),param);
            for(Map base:baseList){
                List<String> tempList = new ArrayList<String>();
                tempList.add(ConvertUtil.obj2StrBlank(base.get("THIRD_CATEGORY_NAME")));
@@ -898,7 +902,7 @@
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("ontime_rate"))+"%");
            dataList.add(tempList);
        }
        Map res = new HashMap();
        res.put("lebalList",lebalList);
        res.put("dataList",dataList);
@@ -914,7 +918,7 @@
        param.put("selDate", selDate);
        param.put("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT);
        sql.append(" select count(id) num,wfstate from workflow_base where businesstype =:busType and customer_id = :cusId ");
        setWhereSql(sql, "createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATETIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by wfstate order by wfstate");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        Map<String,Map> dataxx = new HashMap();
@@ -943,7 +947,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("wfstate").toString(), data);
            }
            List<Map> dicList = new ArrayList<Map>();
            for(int i=1;i<=3;i++){
                Map map = new HashMap();
@@ -957,7 +961,7 @@
                map.put("DATAKEY", i);
                dicList.add(map);
            }
            List seriesData = new ArrayList();
            for(Map dic:dicList){
                List tempList = new ArrayList();
@@ -973,7 +977,7 @@
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -985,9 +989,9 @@
             df = new SimpleDateFormat("yyyyw");
        }
        Calendar cal = Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        cal.setMinimalDaysInFirstWeek(7);
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        cal.setMinimalDaysInFirstWeek(7);
        try {
            cal.setTime(df.parse(selDate));
        } catch (ParseException e) {
@@ -1002,54 +1006,63 @@
        if(statisType.equals("quarter")){
            lastDate = getLastQuarter(selDate);
        }
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        param.put("selDate",selDate);
        param.put("lastDate",lastDate);
        param.put("busType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION);
        String groupByStr = "";
        if(statisType.equals("month")){
            sql.append(" select date_format(createtime,'%Y%m') cate_id,");
            sql.append(" select date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m') cate_id,");
            groupByStr = "date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m') ";
        }else if(statisType.equals("week")){
            sql.append(" select concat(year(createtime),week(createtime,5)) cate_id,");
            sql.append(" select concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),week(to_date(createtime,'YYYYMMDDHH24MISS'),5)) cate_id,");
            groupByStr = "concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),week(to_date(createtime,'YYYYMMDDHH24MISS'),5)) ";
        }else if(statisType.equals("quarter")){
            sql.append(" select concat(year(createtime),quarter(createtime)) cate_id,");
            sql.append(" select concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),quarter(to_date(createtime,'YYYYMMDDHH24MISS'))) cate_id,");
            groupByStr = " concat(year(to_date(createtime,'YYYYMMDDHH24MISS')),quarter(to_date(createtime,'YYYYMMDDHH24MISS'))) ";
        }
        sql.append(" wfstate data_name,count(id) num from workflow_base where wfstate in (1,2,3) and businesstype=:busType ");
        if(statisType.equals("month")){
            sql.append(" and (date_format(createtime,'%Y%m') = :selDate or date_format(createtime,'%Y%m')=:lastDate) ");
            sql.append(" and (date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m') = :selDate or date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%m')=:lastDate) ");
        }else if(statisType.equals("week")){
            sql.append(" and year(createtime)=left(:selDate,4) and (week(createtime,5) = substring(:selDate,5) or week(createtime,5)=substring(:lastDate,5)) ");
        }else if(statisType.equals("quarter")){
            sql.append(" and year(createtime)=left(:selDate,4) and (quarter(createtime) = substring(:selDate,5) or quarter(createtime)=substring(:lastDate,5)) ");
            sql.append(" and year(to_date(createtime,'YYYYMMDDHH24MISS'))=left(:selDate,4) and (week(to_date(createtime,'YYYYMMDDHH24MISS'),5) = substring(:selDate,5) or week(to_date(createtime,'YYYYMMDDHH24MISS'),5)=substring(:lastDate,5)) ");
        }else if(statisType.equals("to_date(createtime,'YYYYMMDDHH24MISS')")){
            sql.append(" and year(to_date(createtime,'YYYYMMDDHH24MISS'))=left(:selDate,4) and (quarter(to_date(createtime,'YYYYMMDDHH24MISS')) = substring(:selDate,5) or quarter(to_date(createtime,'YYYYMMDDHH24MISS'))=substring(:lastDate,5)) ");
        }
        sql.append(" and customer_id=:cusId  group by cate_id,data_name ");
        sql.append(" and customer_id=:cusId  group by "+ groupByStr +",wfstate ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        String newcreatetime = "to_date(createtime,'YYYYMMDDHH24MISS')";
        if(dataList!=null&&dataList.size()>0){
            String groupCateId="";
            sql.setLength(0);
            if(statisType.equals("month")){
                sql.append(" select date_format(createtime,'%Y%m') cate_id,");
                sql.append(" select date_format(" + newcreatetime+",'%Y%m') cate_id,");
                groupCateId = " date_format(" + newcreatetime+",'%Y%m') ";
            }else if(statisType.equals("week")){
                sql.append(" select concat(year(createtime),week(createtime,5)) cate_id,");
                sql.append(" select concat(year("+newcreatetime+"),week("+newcreatetime+",5)) cate_id,");
                groupCateId = " concat(year("+newcreatetime+"),week("+newcreatetime+",5)) ";
            }else if(statisType.equals("quarter")){
                sql.append(" select concat(year(createtime),quarter(createtime)) cate_id,");
                sql.append(" select concat(year("+newcreatetime+"),quarter("+newcreatetime+")) cate_id,");
                groupCateId=" concat(year("+newcreatetime+"),quarter("+newcreatetime+")) ";
            }
            sql.append(" count(id) num FROM workflow_base WHERE customer_id = :cusId and businesstype=:busType  ");
            if(statisType.equals("month")){
                sql.append(" and (date_format(createtime,'%Y%m') = :selDate or date_format(createtime,'%Y%m')=:lastDate) ");
                sql.append(" and (date_format("+newcreatetime+",'%Y%m') = :selDate or date_format("+newcreatetime+",'%Y%m')=:lastDate) ");
            }else if(statisType.equals("week")){
                sql.append(" and year(createtime)=left(:selDate,4) and (week(createtime,5) = substring(:selDate,5) or week(createtime,5)=substring(:lastDate,5)) ");
                sql.append(" and year("+newcreatetime+")=left(:selDate,4) and (week("+newcreatetime+",5) = substring(:selDate,5) or week("+newcreatetime+",5)=substring(:lastDate,5)) ");
            }else if(statisType.equals("quarter")){
                sql.append(" and year(createtime)=left(:selDate,4) and (quarter(createtime) = substring(:selDate,5) or quarter(createtime)=substring(:lastDate,5)) ");
                sql.append(" and year("+newcreatetime+")=left(:selDate,4) and (quarter("+newcreatetime+") = substring(:selDate,5) or quarter("+newcreatetime+")=substring(:lastDate,5)) ");
            }
            sql.append(" group by cate_id ");
            sql.append(" group by "+groupCateId);
            List<Map> extendList = baseDao.queryForList(sql.toString(),param);
            Map dataSetMap = new HashMap();
            Map extendSetMap = new HashMap();
            for(Map map:dataList){
@@ -1058,7 +1071,7 @@
            for(Map map:extendList){
                extendSetMap.put(map.get("cate_id"), map);
            }
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
            if(statisType.equals("month")){
@@ -1071,7 +1084,7 @@
                categories.add("上季度");
                categories.add("本季度");
            }
            for(int i=0;i<4;i++){
                Map tempMap = new HashMap();
                List tempList = new ArrayList();
@@ -1090,7 +1103,7 @@
                    if(j==1){
                        key = selDate;
                    }
                    if(i==0){
                        if(extendSetMap.get(key)!=null){
                            tempList.add(((Map)extendSetMap.get(key)).get("num"));
@@ -1107,15 +1120,15 @@
                }
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -1127,7 +1140,7 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,source_id from sc_workflow_question where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by source_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
@@ -1135,7 +1148,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("source_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.QUESTION_SOURCE);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -1163,16 +1176,16 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,resolve_type_id from sc_workflow_question where customer_id = :cusId and state=7 ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by resolve_type_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("resolve_type_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.QUESTIONCLOSE_RESOLVE_TYPE);
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
@@ -1189,13 +1202,13 @@
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("series", series);
            chartMap.put("categories", categories);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -1207,16 +1220,16 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,influence_id from sc_workflow_question where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(create_time,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by influence_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("influence_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -1241,41 +1254,41 @@
        SqlParameter param = new SqlParameter();
        param.put("cusId", cusId);
        //定义报表变量
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        //查询数据
        StringBuilder sql = new StringBuilder();
        sql.append(" select THIRD_CATEGORY_NAME,total_num,IFNULL(answer_num,0) answer_num,IFNULL(activi_num,0) activi_num,IFNULL(sleep_num,0) sleep_num,   ");
        sql.append(" IFNULL(finish_num,0) finish_num, IFNULL(close_num,0) close_num from (  ");
        sql.append("     select count(b.id) total_num,i.THIRD_CATEGORY_NAME,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i      ");
        sql.append("     where b.ID = i.FLOW_ID  and b.BUSINESSTYPE = 9 and b.customer_id = :cusId ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        sql.append("     GROUP BY I.THIRD_CATEGORY_ID  ");
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     GROUP BY I.THIRD_CATEGORY_ID,i.THIRD_CATEGORY_NAME  ");
        sql.append(" ) mtotal left join (  ");
        sql.append("     select count(b.id) answer_num,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i,(  ");
        sql.append("           select FLOWID from workflow_node where FLOWSTATE = 1 group by FLOWID ");
        sql.append("     ) n    where b.ID = i.FLOW_ID and b.id = n.FLOWID  and b.BUSINESSTYPE = 9 and b.customer_id = :cusId  ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     and b.WFSTATE = 1 GROUP BY I.THIRD_CATEGORY_ID  ");
        sql.append(" ) manswer on mtotal.THIRD_CATEGORY_ID = manswer.THIRD_CATEGORY_ID left join (  ");
        sql.append("     select count(b.id) activi_num,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i  ");
        sql.append("     where b.ID = i.FLOW_ID   and b.BUSINESSTYPE = 9 and b.customer_id = :cusId  ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     and b.WFSTATE=1 GROUP BY I.THIRD_CATEGORY_ID  ");
        sql.append(" ) mactivi on mtotal.THIRD_CATEGORY_ID = mactivi.THIRD_CATEGORY_ID left join (  ");
        sql.append("     select count(b.id) sleep_num,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i  ");
        sql.append("     where b.ID = i.FLOW_ID   and b.BUSINESSTYPE = 9 and b.customer_id = :cusId  ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     and b.WFSTATE=6 GROUP BY I.THIRD_CATEGORY_ID  ");
        sql.append(" ) msleep on mtotal.THIRD_CATEGORY_ID = msleep.THIRD_CATEGORY_ID left join (  ");
        sql.append("     select count(b.id) finish_num,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i  ");
        sql.append("     where b.ID = i.FLOW_ID  and b.BUSINESSTYPE = 9 and b.customer_id = :cusId  ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     and (b.WFSTATE=2 or b.WFSTATE=4) GROUP BY I.THIRD_CATEGORY_ID  ");
        sql.append(" ) mfinish on mtotal.THIRD_CATEGORY_ID = mfinish.THIRD_CATEGORY_ID left join (  ");
        sql.append("     select count(b.id) close_num,i.THIRD_CATEGORY_ID from workflow_base b ,SC_WORKFLOW_QUESTION i     ");
        sql.append("     where b.ID = i.FLOW_ID   and b.BUSINESSTYPE = 9 and b.customer_id = :cusId  ");
        setWhereSql(sql, "b.createtime", selDate, statisType, param);
        setWhereSql(sql, "to_date(b.createtime,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append("     and i.state=7 GROUP BY I.THIRD_CATEGORY_ID  ");
        sql.append(" ) mclose on mtotal.THIRD_CATEGORY_ID = mclose.THIRD_CATEGORY_ID  ");
        List<Map> baseList = baseDao.queryForList(sql.toString(),param);
@@ -1323,7 +1336,7 @@
            sql.append("  and i.state=7 ");
            sql.append(" ) mclose  ");
            Map extendMap = baseDao.queryForMap(sql.toString(),param);
            for(Map base:baseList){
                List<String> tempList = new ArrayList<String>();
                tempList.add(ConvertUtil.obj2StrBlank(base.get("THIRD_CATEGORY_NAME")));
@@ -1344,7 +1357,7 @@
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("finish_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("close_num")));
            dataList.add(tempList);
        }
        Map res = new HashMap();
        res.put("lebalList",lebalList);
@@ -1360,9 +1373,9 @@
             df = new SimpleDateFormat("yyyyw");
        }
        Calendar cal = Calendar.getInstance();
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        cal.setMinimalDaysInFirstWeek(7);
        cal.setFirstDayOfWeek(Calendar.MONDAY); //设置每周的第一天为星期一
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//每周从周一开始
        cal.setMinimalDaysInFirstWeek(7);
        try {
            cal.setTime(df.parse(selDate));
        } catch (ParseException e) {
@@ -1377,34 +1390,39 @@
        if(statisType.equals("quarter")){
            lastDate = getLastQuarter(selDate);
        }
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        param.put("selDate",selDate);
        param.put("lastDate",lastDate);
        param.put("busType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL);
        String gruopByStr = "";
        String newCreateTime = "to_date(createtime,'YYYYMMDDHH24MISS')";
        if(statisType.equals("month")){
            sql.append(" select date_format(createtime,'%Y%m') cate_id,");
            sql.append(" select date_format(" + newCreateTime +",'%Y%m') cate_id,");
            gruopByStr = "date_format("+ newCreateTime +",'%Y%m') ";
        }else if(statisType.equals("week")){
            sql.append(" select concat(year(createtime),week(createtime,5)) cate_id,");
            sql.append(" select concat(year(" + newCreateTime + "),week("+newCreateTime + ",5)) cate_id,");
            gruopByStr = " concat(year(" + newCreateTime + "),week("+newCreateTime + ",5))";
        }else if(statisType.equals("quarter")){
            sql.append(" select concat(year(createtime),quarter(createtime)) cate_id,");
            sql.append(" select concat(year(" + newCreateTime +"),quarter(" + newCreateTime + ")) cate_id,");
            gruopByStr = " concat(year(" + newCreateTime +"),quarter(" + newCreateTime + ")) ";
        }
        sql.append(" ( CASE WHEN WFSTATE = 1 THEN '1' WHEN WFSTATE = 2 THEN '2' WHEN WFSTATE = 3 THEN '3' WHEN WFSTATE = 4 THEN '2' WHEN WFSTATE = 6 THEN '6'  END ) data_name,count(id) num from workflow_base where wfstate in (1,2,3,4) and businesstype=:busType ");
        if(statisType.equals("month")){
            sql.append(" and (date_format(createtime,'%Y%m') = :selDate or date_format(createtime,'%Y%m')=:lastDate) ");
            sql.append(" and (date_format("+newCreateTime+",'%Y%m') = :selDate or date_format("+newCreateTime+",'%Y%m')=:lastDate) ");
        }else if(statisType.equals("week")){
            sql.append(" and year(createtime)=left(:selDate,4) and (week(createtime,5) = substring(:selDate,5) or week(createtime,5)=substring(:lastDate,5)) ");
            sql.append(" and year("+newCreateTime+")=left(:selDate,4) and (week("+newCreateTime+",5) = substring(:selDate,5) or week("+newCreateTime+",5)=substring(:lastDate,5)) ");
        }else if(statisType.equals("quarter")){
            sql.append(" and year(createtime)=left(:selDate,4) and (quarter(createtime) = substring(:selDate,5) or quarter(createtime)=substring(:lastDate,5)) ");
            sql.append(" and year("+newCreateTime+")=left(:selDate,4) and (quarter("+newCreateTime+") = substring(:selDate,5) or quarter("+newCreateTime+")=substring(:lastDate,5)) ");
        }
        sql.append(" and customer_id=:cusId  group by cate_id,data_name ");
        sql.append(" and customer_id=:cusId  group by "+gruopByStr +",WFSTATE ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            sql.setLength(0);
            if(statisType.equals("month")){
@@ -1424,7 +1442,7 @@
            }
            sql.append(" group by cate_id ");
            List<Map> extendList = baseDao.queryForList(sql.toString(),param);
            Map dataSetMap = new HashMap();
            Map extendSetMap = new HashMap();
            for(Map map:dataList){
@@ -1433,7 +1451,7 @@
            for(Map map:extendList){
                extendSetMap.put(map.get("cate_id"), map);
            }
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
            if(statisType.equals("month")){
@@ -1446,7 +1464,7 @@
                categories.add("上季度");
                categories.add("本季度");
            }
            for(int i=0;i<4;i++){
                Map tempMap = new HashMap();
                List tempList = new ArrayList();
@@ -1465,7 +1483,7 @@
                    if(j==1){
                        key = selDate;
                    }
                    if(i==0){
                        if(extendSetMap.get(key)!=null){
                            tempList.add(((Map)extendSetMap.get(key)).get("num"));
@@ -1482,15 +1500,15 @@
                }
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -1502,7 +1520,7 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,source_id from sc_workflow_incident_local where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by source_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
@@ -1510,7 +1528,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("source_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.INCIDENT_SOURCE);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -1527,7 +1545,7 @@
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -1539,15 +1557,15 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,type_id,type_name from sc_workflow_incident_local where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        sql.append(" group by type_id ");
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by type_id ,type_name");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
            for(Map data:dataList){
                dataSetMap.put(data.get("type_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.INCIDENT_TYPE);
            List seriesData = new ArrayList();
            for(Map dic:dicList){
@@ -1575,7 +1593,7 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,resolve_type_id from sc_workflow_incident_local where customer_id = :cusId and resolve_type_id is not null ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by resolve_type_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
@@ -1583,7 +1601,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("resolve_type_id"), data);
            }
            List<Map> dicList = dicService.getDataDictionaryByCategoryKey(Constants.CLOSE_REASON);
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
@@ -1600,7 +1618,7 @@
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("series", series);
            chartMap.put("categories", categories);
        }else{
@@ -1614,12 +1632,12 @@
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId", cusId);
        sql.append(" select TRUNCATE((total_num-IFNULL(outtime_num,0))*100/total_num,2) ontime_rate from ( ");
        sql.append(" select case when total_num=0 then 0 else TRUNCATE((total_num-IFNULL(outtime_num,0))*100/total_num,2) end ontime_rate from ( ");
        sql.append("     select count(id) total_num from sc_workflow_incident_local where customer_id = :cusId  ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" ) mtotal, ( ");
        sql.append("     select count(id) outtime_num from sc_workflow_incident_local where customer_id = :cusId and (answer_timeout=1 or deal_timeout=1)  ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" ) mfinish ");
        Double y = baseDao.queryForDouble(sql.toString(), param);
        Map chartMap = new HashMap();
@@ -1638,7 +1656,7 @@
        param.put("cusId", cusId);
        param.put("selDate", selDate);
        sql.append(" select count(id) num,sla_id from sc_workflow_incident_local where customer_id = :cusId ");
        setWhereSql(sql, "create_time", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by sla_id ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
@@ -1646,7 +1664,7 @@
            for(Map data:dataList){
                dataSetMap.put(data.get("sla_id"), data);
            }
            sql.setLength(0);
            sql.append(" select id,level_name from sc_sla where state=1 order by serial asc");
            List<Map> dicList = baseDao.queryForList(sql.toString(), param);
@@ -1673,49 +1691,49 @@
        SqlParameter param = new SqlParameter();
        param.put("cusId", cusId);
        param.put("nodeTemplateId", Constants.YXCL);
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        List<String> lebalList = new ArrayList<String>();
        List<List<String>> dataList = new ArrayList<List<String>>();
        StringBuilder sql = new StringBuilder();
        sql.append(" select mtotal.THIRD_CATEGORY_NAME,total_num,IFNULL(answer_num,0) answer_num,IFNULL(activi_num,0) activi_num,IFNULL(finish_num,0) finish_num,IFNULL(timeout_num,0) timeout_num,  ");
        sql.append(" IFNULL(pri_num,0) pri_num,IFNULL(ques_num,0) ques_num,IFNULL(avg_time,0) avg_time,truncate(IFNULL(finish_num, 0)*100/total_num,2) first_rate,truncate((total_num-IFNULL(timeout_num, 0))*100/total_num,2) ontime_rate  from  ");
        sql.append(" (select a.THIRD_CATEGORY_NAME,count(a.id) total_num,a.THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL a,workflow_base b where a.customer_id=:cusId and a.id=b.BUSINESS_ID and b.WFSTATE<>3 ");
        setWhereSql(sql, "a.CREATE_TIME", selDate, statisType, param);
        sql.append(" group by a.THIRD_CATEGORY_ID) mtotal   ");
        setWhereSql(sql, "to_date(a.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by a.THIRD_CATEGORY_ID,a.THIRD_CATEGORY_NAME) mtotal   ");
        sql.append(" left join (select count(i.id) answer_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.WFSTATE<>3 and b.CURRENT_NODE_ID=n.ID and n.FLOWSTATE=1 and i.customer_id=:cusId ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) manswer  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = manswer.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) activi_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE=1 and b.WFSTATE<>3  and i.customer_id=:cusId ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mactivi  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mactivi.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) finish_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE in (2,4) and i.customer_id=:cusId   ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mfinish  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mfinish.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) timeout_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL where (ANSWER_TIMEOUT=1 or DEAL_TIMEOUT=1) and customer_id=:cusId  ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mtimeout  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mtimeout.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) pri_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL where SLA_NAME='LEVEL1' and customer_id=:cusId   ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mpri  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mpri.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(id) ques_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL where QUESTIONID is not null and customer_id=:cusId  ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mques  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mques.THIRD_CATEGORY_ID ");
        sql.append(" left join (select truncate(avg(DEAL_USE_TIME)*3600*1000,0) avg_time,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL where customer_id=:cusId   ");
        setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by THIRD_CATEGORY_ID) mdeal  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mdeal.THIRD_CATEGORY_ID ");
        sql.append(" left join (select count(i.id) first_num,THIRD_CATEGORY_ID from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and (b.WFSTATE=2 or b.WFSTATE=4) and n.NODE_TEMPLATE_ID = :nodeTemplateId and i.customer_id=:cusId  ");
        setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
        setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
        sql.append(" group by i.THIRD_CATEGORY_ID) mfirst  ");
        sql.append(" on  mtotal.THIRD_CATEGORY_ID = mfirst.THIRD_CATEGORY_ID ");
        List<Map> baseList = baseDao.queryForList(sql.toString(),param);
        //组织表头
        lebalList.add("服务目录");
        lebalList.add("事件数");
@@ -1728,41 +1746,41 @@
        lebalList.add("平均处理时长");
        lebalList.add("驻场解决率");
        lebalList.add("服务级别达成率");
        //组织数据
        if(baseList!=null&&baseList.size()>0){
            sql.setLength(0);
            sql.append(" select total_num,IFNULL(answer_num,0) answer_num,IFNULL(activi_num,0) activi_num,IFNULL(finish_num,0) finish_num,IFNULL(timeout_num,0) timeout_num,  ");
            sql.append(" IFNULL(pri_num,0) pri_num,IFNULL(ques_num,0) ques_num,IFNULL(avg_time,0) avg_time,truncate(IFNULL(finish_num, 0)*100/total_num,2) first_rate,truncate((total_num-IFNULL(timeout_num, 0))*100/total_num,2) ontime_rate  from  ");
            sql.append(" (select count(a.id) total_num from SC_WORKFLOW_INCIDENT_LOCAL a,workflow_base b where a.customer_id=:cusId and a.id=b.BUSINESS_ID and b.WFSTATE<>3 ");
            setWhereSql(sql, "a.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(a.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mtotal,   ");
            sql.append(" (select count(i.id) answer_num from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.WFSTATE<>3 and b.CURRENT_NODE_ID=n.ID and n.FLOWSTATE=1 and i.customer_id=:cusId ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) manswer,  ");
            sql.append(" (select count(i.id) activi_num from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE=1 and i.customer_id=:cusId ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mactivi,  ");
            sql.append(" (select count(i.id) finish_num from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b where i.FLOW_ID=b.ID and b.WFSTATE in (2,4) and i.customer_id=:cusId   ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mfinish,  ");
            sql.append(" (select count(id) timeout_num from SC_WORKFLOW_INCIDENT_LOCAL where (ANSWER_TIMEOUT=1 or DEAL_TIMEOUT=1) and customer_id=:cusId  ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mtimeout,  ");
            sql.append(" (select count(id) pri_num from SC_WORKFLOW_INCIDENT_LOCAL where SLA_NAME='LEVEL1' and customer_id=:cusId   ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mpri,  ");
            sql.append(" (select count(id) ques_num from SC_WORKFLOW_INCIDENT_LOCAL where QUESTIONID is not null and customer_id=:cusId  ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mques,  ");
            sql.append(" (select truncate(avg(DEAL_USE_TIME)*3600*1000,0) avg_time from SC_WORKFLOW_INCIDENT_LOCAL where customer_id=:cusId   ");
            setWhereSql(sql, "CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mdeal, ");
            sql.append(" (select count(i.id) first_num from SC_WORKFLOW_INCIDENT_LOCAL i,workflow_base b,workflow_node n where i.FLOW_ID=b.ID and b.CURRENT_NODE_ID=n.ID and (b.WFSTATE=2 or b.WFSTATE=4) and n.NODE_TEMPLATE_ID = :nodeTemplateId and i.customer_id=:cusId  ");
            setWhereSql(sql, "i.CREATE_TIME", selDate, statisType, param);
            setWhereSql(sql, "to_date(i.CREATE_TIME,'YYYYMMDDHH24MISS')", selDate, statisType, param);
            sql.append(" ) mfirst  ");
            Map extendMap = baseDao.queryForMap(sql.toString(),param);
            for(Map base:baseList){
                List<String> tempList = new ArrayList<String>();
                tempList.add(ConvertUtil.obj2StrBlank(base.get("THIRD_CATEGORY_NAME")));
@@ -1773,8 +1791,14 @@
                tempList.add(ConvertUtil.obj2StrBlank(base.get("timeout_num")));
                tempList.add(ConvertUtil.obj2StrBlank(base.get("pri_num")));
                tempList.add(ConvertUtil.obj2StrBlank(base.get("ques_num")));
                tempList.add(DateUtil.secToTime(Math.round((Double)base.get("avg_time"))));
                Object avg_time = base.get("avg_time");
                String avgTimeSTr = null;
                if (avg_time == null){
                    avgTimeSTr = "0";
                } else {
                    avgTimeSTr = String.valueOf(avg_time);
                }
                tempList.add(DateUtil.secToTime(Math.round(Double.valueOf(avgTimeSTr))));
                tempList.add(ConvertUtil.obj2StrBlank(base.get("first_rate"))+"%");
                tempList.add(ConvertUtil.obj2StrBlank(base.get("ontime_rate"))+"%");
                dataList.add(tempList);
@@ -1782,13 +1806,21 @@
            List<String> tempList = new ArrayList<String>();
            tempList.add("合计");
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("total_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("answer_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("activi_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("finish_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("timeout_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("pri_num")));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("ques_num")));
            tempList.add(DateUtil.secToTime(Math.round((Double)extendMap.get("avg_time"))));
            Object avg_time = extendMap.get("avg_time");
            String avgTimeSTr = null;
            if (avg_time == null){
                avgTimeSTr = "0";
            } else {
                avgTimeSTr = String.valueOf(avg_time);
            }
            tempList.add(DateUtil.secToTime(Math.round(Double.valueOf(avgTimeSTr))));
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("first_rate"))+"%");
            tempList.add(ConvertUtil.obj2StrBlank(extendMap.get("ontime_rate"))+"%");
            dataList.add(tempList);
@@ -1821,21 +1853,25 @@
        if(statisType.equals("quarter")){
            lastDate = getLastQuarter(selDate);
        }
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        param.put("selDate",selDate);
        param.put("lastDate",lastDate);
        param.put("busType",Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT);
        String cateIdStr = "";
        //查询数据
        if(statisType.equals("month")){
            sql.append(" select i.month cate_id, ");
            cateIdStr = " i.month ";
        }else if(statisType.equals("year")){
            sql.append(" select left(i.month,4) cate_id, ");
            cateIdStr = " left(i.month,4) ";
        }else if(statisType.equals("quarter")){
            sql.append(" select concat(left(i.month,4),quarter(concat(i.month,'01'))) cate_id, ");
            cateIdStr = " concat(left(i.month,4),quarter(concat(i.month,'01'))) ";
        }
        sql.append(" d.satis_type data_name,truncate(avg(d.satis_score),0) num from totle_satis_info i,totle_satis_detail d where i.id = d.bus_id  ");
        if(statisType.equals("month")){
@@ -1845,7 +1881,7 @@
        }else if(statisType.equals("quarter")){
            sql.append(" and  (concat(left(i.month,4),quarter(concat(i.month,'01'))) = :selDate or concat(left(i.month,4),quarter(concat(i.month,'01')))=:lastDate) ");
        }
        sql.append(" and i.customer_id=:cusId  group by cate_id,data_name ");
        sql.append(" and i.customer_id=:cusId  group by "+cateIdStr+",d.satis_type ");
        sql.append(" union ");
        if(statisType.equals("month")){
            sql.append(" select i.month cate_id, ");
@@ -1862,7 +1898,7 @@
        }else if(statisType.equals("quarter")){
            sql.append(" and  (concat(left(i.month,4),quarter(concat(i.month,'01'))) = :selDate or concat(left(i.month,4),quarter(concat(i.month,'01')))=:lastDate) ");
        }
        sql.append(" and i.customer_id=:cusId  group by cate_id,data_name ");
        sql.append(" and i.customer_id=:cusId  group by "+cateIdStr+" ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -1870,8 +1906,8 @@
            for(Map map:dataList){
                dataSetMap.put(map.get("data_name")+"_"+map.get("cate_id"), map);
            }
            List<Map> series = new ArrayList<Map>();
            List<String> categories = new ArrayList<String>();
            if(statisType.equals("month")){
@@ -1884,7 +1920,7 @@
                categories.add("上季度");
                categories.add("本季度");
            }
            for(int i=0;i<=3;i++){
                if(i!=2){
                    Map tempMap = new HashMap();
@@ -1911,9 +1947,9 @@
                    tempMap.put("data", tempList);
                    series.add(tempMap);
                }
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
@@ -1936,7 +1972,7 @@
            sql.append(" and concat(left(i.month,4),quarter(concat(i.month,'01')))=:selDate ");
        }
        sql.append("  and i.customer_id=:cusId group by d.satis_type ");
        List<Map> dataList= baseDao.queryForList(sql.toString(), param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -1952,7 +1988,7 @@
                }
            }
            List<Map> series = new ArrayList<Map>();
            for(int i=1;i<=2;i++){
                Map tempMap = new HashMap();
                if(i==1){
@@ -1978,7 +2014,7 @@
                            }
                        }
                    }
                }
                tempMap.put("data", tempList);
                series.add(tempMap);
@@ -1998,10 +2034,10 @@
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(createtime,'%Y') = :selDate group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2024,13 +2060,13 @@
            }
            tempMap.put("data", tempList);
            series.add(tempMap);
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -2046,16 +2082,16 @@
        }
        cal.add(Calendar.YEAR, -1);
        String lastDate = df.format(cal.getTime());
        SqlParameter param = new SqlParameter();
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT)
            .addValue("lastDate", lastDate);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(createtime,'%Y') = :selDate or date_format(createtime,'%Y') = :lastDate)  group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate or date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :lastDate)  group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2065,7 +2101,7 @@
            List<String> categories = new ArrayList<String>();
            categories.add("数量");
            List<Map> series = new ArrayList<Map>();
            for(int i=1;i<=2;i++){
                Map tempMap = new HashMap();
                tempMap.put("name", "去年");
@@ -2083,13 +2119,13 @@
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -2100,10 +2136,10 @@
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(createtime,'%Y') = :selDate group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2146,16 +2182,16 @@
        }
        cal.add(Calendar.YEAR, -1);
        String lastDate = df.format(cal.getTime());
        SqlParameter param = new SqlParameter();
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION)
            .addValue("lastDate", lastDate);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(createtime,'%Y') = :selDate or date_format(createtime,'%Y') = :lastDate)  group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate or date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :lastDate)  group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2165,7 +2201,7 @@
            List<String> categories = new ArrayList<String>();
            categories.add("数量");
            List<Map> series = new ArrayList<Map>();
            for(int i=1;i<=2;i++){
                Map tempMap = new HashMap();
                tempMap.put("name", "去年");
@@ -2183,13 +2219,13 @@
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -2200,10 +2236,10 @@
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(createtime,'%Y') = :selDate group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y%c')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2226,7 +2262,7 @@
            }
            tempMap.put("data", tempList);
            series.add(tempMap);
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
@@ -2247,16 +2283,16 @@
        }
        cal.add(Calendar.YEAR, -1);
        String lastDate = df.format(cal.getTime());
        SqlParameter param = new SqlParameter();
        param.addValue("cusId", cusId)
            .addValue("selDate", selDate)
            .addValue("busType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL)
            .addValue("lastDate", lastDate);
        StringBuilder sql = new StringBuilder();
        sql.append(" select count(id) num,date_format(createtime,'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(createtime,'%Y') = :selDate or date_format(createtime,'%Y') = :lastDate)  group by cate_id  ");
        sql.append(" select count(id) num,date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') cate_id from workflow_base where businesstype = :busType and customer_id =:cusId  ");
        sql.append(" and (date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :selDate or date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y') = :lastDate)  group by date_format(to_date(createtime,'YYYYMMDDHH24MISS'),'%Y')  ");
        List<Map> dataList = baseDao.queryForList(sql.toString(),param);
        if(dataList!=null&&dataList.size()>0){
            Map dataSetMap = new HashMap();
@@ -2266,7 +2302,7 @@
            List<String> categories = new ArrayList<String>();
            categories.add("数量");
            List<Map> series = new ArrayList<Map>();
            for(int i=1;i<=2;i++){
                Map tempMap = new HashMap();
                tempMap.put("name", "去年");
@@ -2284,13 +2320,13 @@
                tempMap.put("data", tempList);
                series.add(tempMap);
            }
            chartMap.put("categories", categories);
            chartMap.put("series", series);
        }else{
            chartMap.put("nodata", true);
        }
        return chartMap;
    }
@@ -2300,14 +2336,14 @@
        SqlParameter param = new SqlParameter();
        param.put("cusId",cusId);
        param.put("selDate",selDate);
        StringBuilder builder = new StringBuilder();
        builder.append(" SELECT I.ALL_SCORE,D.SATIS_SCORE,D.SATIS_TYPE,I.MONTH FROM TOTLE_SATIS_DETAIL D ,TOTLE_SATIS_INFO I ");
        builder.append(" WHERE LEFT(I.MONTH,4)=:selDate AND D.BUS_ID = I.ID AND I.CUSTOMER_ID = :cusId  GROUP BY D.SATIS_TYPE,I.MONTH  ORDER BY SATIS_TYPE,MONTH");
        builder.append(" WHERE LEFT(I.MONTH,4)=:selDate AND D.BUS_ID = I.ID AND I.CUSTOMER_ID = :cusId  GROUP BY D.SATIS_TYPE,I.MONTH,I.ALL_SCORE, D.SATIS_SCORE  ORDER BY SATIS_TYPE,MONTH");
        List<Map> queryList = baseDao.queryForList(builder.toString(), param);
        builder.setLength(0);
        builder.setLength(0);
        Map<String,Object> queryMap = new HashMap<String,Object>();
        if(queryList!=null&&queryList.size()>0){
            for(Map map:queryList){
                String key = map.get("SATIS_TYPE").toString()+"_"+map.get("MONTH").toString();
@@ -2318,11 +2354,11 @@
            for(int i=1;i<=12;i++){
                categories.add(i+"月");
            }
            List<String> typeList = new ArrayList();
            typeList.add("1");
            typeList.add("3");
            Map tempWholeMap = new HashMap();
            List tempWholeList = new ArrayList();
            tempWholeMap.put("name", "整体得分");
@@ -2343,7 +2379,7 @@
                    }else{
                        key = key + i;
                    }
                    if(queryMap.get(key)!=null){
                        tempList.add(((Map)queryMap.get(key)).get("SATIS_SCORE"));
                        //整体得分
@@ -2358,7 +2394,7 @@
                        }
                    }
                }
                tempMap.put("data", tempList);
                tempMap.put("type", "column");
                series.add(tempMap);
@@ -2369,7 +2405,7 @@
                chartMap.put("series", series);
                chartMap.put("categories", categories);
            }
        }else{
            chartMap.put("nodata", true);
        }
@@ -2378,7 +2414,7 @@
    @Override
    public boolean updateWorkSummary(HttpServletRequest request) {
        String id = request.getParameter("id");
        String note = request.getParameter("note");
        String summaryType = request.getParameter("summaryType");
@@ -2389,7 +2425,7 @@
        String userName = user.get("ZSXM").toString();
        StringBuilder sql = new StringBuilder();
        SqlParameter param = new SqlParameter();
        param.addValue("note", note)
            .addValue("cusId", cusId)
            .addValue("userId", userId)
@@ -2398,7 +2434,7 @@
            .addValue("updateTime", DateUtil.getCurrentDate14())
            .addValue("summaryType", summaryType)
            .addValue("summaryDate", summaryDate);
        if(StringUtil.isBlank(id)){
            sql.append(" insert into work_summary (id,create_time,create_user_id,create_user_name,note,update_time,summary_type,summary_date,cus_id,state) ");
            sql.append(" values (:id,:createTime,:userId,:userName,:note,:updateTime,:summaryType,:summaryDate,:cusId,1) ");
@@ -2470,7 +2506,7 @@
    public List<String> getCusYearToCur(String cusId) {
        SqlParameter param = new SqlParameter();
        param.addValue("cusId", cusId);
        String sql = "select year(CREATE_TIME) from SC_PARTNER_CUSTOMER_INFO where id = :cusId";
        String sql = "select substr(CREATE_TIME||'',1,4) from SC_PARTNER_CUSTOMER_INFO where id = :cusId";
        Integer startYear = baseDao.queryForInteger(sql,param);
        Calendar cal = Calendar.getInstance();
        Integer endYear = cal.get(Calendar.YEAR);
@@ -2480,7 +2516,7 @@
        }
        return years;
    }
    private String getLastQuarter(String selDate){
        Integer year = Integer.valueOf(selDate.substring(0, 4));
        Integer quarter = Integer.valueOf(selDate.substring(4));
@@ -2509,25 +2545,26 @@
    @Override
    public String getNRecordDate(Map<String, String> params) {
        String col = "";
        String createTimeStr = "to_date(createtime,'YYYYMMDDHH24MISS')";
        if(params.get("type").equals("week")){
            col = "week(createtime,5)";
            col = "week("+ createTimeStr +",5)";
        }else if(params.get("type").equals("month")){
            col = "date_format(createtime,'%Y%m')";
            col = "date_format("+ createTimeStr +",'%Y%m')";
        }else if(params.get("type").equals("quarter")){
            col = "quarter(createtime)";
            col = "quarter("+ createTimeStr +")";
        }else if(params.get("type").equals("year")){
            col = "year(createtime)";
            col = "year("+ createTimeStr +")";
        }
        StringBuilder sql = new StringBuilder();
        sql.append(" select GROUP_CONCAT(d) from (  ");
        sql.append(" select wm_CONCAT(d) from (  ");
        sql.append(" select $col d    from workflow_base where businesstype in (8,9,10) and customer_id=:cusId ");
            if(!params.get("type").equals("year")){
                sql.append(" and year(createtime)=:year  ");
                sql.append(" and substr(createtime||'',1,4)=:year  ");
            }
        sql.append("     group by $col ");
        sql.append(" ) t  ");
        String rsql = sql.toString().replace("$col", col);
        String rsql = sql.toString().replace("$col", col);
        return  ConvertUtil.obj2StrBlank(baseDao.queryForString(rsql,params));
    }
}
src/cn/ksource/web/facade/zc/ZcywFacadeImpl.java
@@ -1,37 +1,13 @@
package cn.ksource.web.facade.zc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.beans.CUSTOMER_CONTACTS;
import cn.ksource.beans.GG_MESSAGE;
import cn.ksource.beans.GG_RECORD;
import cn.ksource.beans.SC_WORKFLOW_INCIDENT;
import cn.ksource.beans.SC_WORKFLOW_INCIDENT_LOCAL;
import cn.ksource.beans.WORKFLOW_BASE;
import cn.ksource.beans.WORKFLOW_NODE;
import cn.ksource.beans.*;
import cn.ksource.core.dao.BaseDao;
import cn.ksource.core.dao.SqlParameter;
import cn.ksource.core.page.PageInfo;
import cn.ksource.core.util.AjaxUtil;
import cn.ksource.core.util.ConvertUtil;
import cn.ksource.core.util.DateUtil;
import cn.ksource.core.util.NumberUtil;
import cn.ksource.core.util.StringUtil;
import cn.ksource.core.util.*;
import cn.ksource.core.web.SysInfoMsg;
import cn.ksource.core.web.WebUtil;
import cn.ksource.core.workflow.NodeAnswerEntity;
import cn.ksource.core.workflow.NodeDealEntity;
import cn.ksource.core.workflow.NodeFinishEntity;
import cn.ksource.core.workflow.WorkflowBusinessService;
import cn.ksource.core.workflow.WorkflowCoreService;
import cn.ksource.core.workflow.*;
import cn.ksource.web.Constants;
import cn.ksource.web.controller.wechat.util.WechatConstants;
import cn.ksource.web.facade.incident.IncidentFacade;
@@ -42,39 +18,47 @@
import cn.ksource.web.service.file.FileService;
import cn.ksource.web.service.order.OrderService;
import cn.ksource.web.service.record.RecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("zcywFacade")
public class ZcywFacadeImpl implements ZcywFacade {
    @Autowired
    private BaseDao baseDao;
    @Autowired
    private WorkOrderCodeService workOrderCodeService;
    @Autowired
    private FileService fileService;
    @Autowired
    private WorkflowBusinessService workflowBusinessService;
    @Autowired
    private WorkflowCoreService workflowCoreService;
    @Autowired
    private MessageFacade messageFacade;
    @Autowired
    private RecordService recordService;
    @Autowired
    private OrderService orderService;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private IncidentFacade incidentFacade;
    @Autowired
@@ -82,10 +66,10 @@
    @Override
    public int queryMyZcywCount(Map<String, String> params) {
        StringBuilder builder = new StringBuilder();
        params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
        /**
         * 查询逻辑
         * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
@@ -94,13 +78,13 @@
         * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
         * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
         */
        String flowstate = params.get("flowstate");
        if(StringUtil.notEmpty(flowstate)) {
            if(flowstate.equals("1")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                //查询处理人是我的
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
                String status = params.get("status");
                if(StringUtil.notEmpty(status)) {
                    if(status.equals("0")){
@@ -118,7 +102,7 @@
                params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
            } else if(flowstate.equals("2")) {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
                String status = params.get("status");
                if(StringUtil.notEmpty(status)) {
                    if(status.equals("0")){
@@ -136,7 +120,7 @@
                params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
            }else {
                builder.append(" SELECT DISTINCT D.* FROM ( ");
                builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID  FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C  WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID  AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
                String status = params.get("status");
                if(StringUtil.notEmpty(status)) {
                    if(status.equals("0")){
@@ -156,7 +140,7 @@
        } else {
            builder.append(" SELECT DISTINCT D.* FROM ( ");
            //查询处理人是我的
            builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            builder.append(" SELECT B.ID,B.WFNAME,B.BUSINESSTYPE,B.WFSTATE,B.WORKFLOWTYPE,B.CREATERNAME,B.CREATERID,B.CREATETIME,B.ENDTIME,B.MAINFLOWID,B.CURRENT_NODE_NAME,B.CURRENT_NODE_ID,B.DEAL_TYPE,B.CURRENT_DEALER_ID,B.CURRENT_DEALER_NAME,B.CURRENT_DEAL_ROLEIDA,B.CURRENT_DEAL_ROLENAME,B.WF_TEMPLATE_ID,B.BUSINESS_ID,B.ORDER_CODE,B.CUSTOMER_ID,B.CUSTOMER_NAME,B.PROJECT_ID,B.PROJECT_NAME,B.SUB_CUSTOMER_NAME,B.SUB_CUSTOMER_ID,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_INCIDENT_LOCAL C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
            String status = params.get("status");
            if(StringUtil.notEmpty(status)) {
                if(status.equals("0")){
@@ -172,29 +156,29 @@
            builder.append(")D");
            builder.append(" WHERE  D.WFSTATE != :ysc ");
        }
        builder = getMyZcSql(builder,params);
        builder.append(" AND D.BUSINESSTYPE = :businessType");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        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 queryMyZcywData(PageInfo pageInfo,
            Map<String, String> params) {
        StringBuilder builder = new StringBuilder();
        params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
        /**
         * 查询逻辑
         * 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
@@ -203,7 +187,7 @@
         * 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
         * 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
         */
        String flowstate = params.get("flowstate");
        if(StringUtil.notEmpty(flowstate)) {
            if(flowstate.equals("1")) {
@@ -222,7 +206,7 @@
                        }
                    }
                }
                builder.append(")D");
                builder.append(" WHERE D.FLOWSTATE = :jddcl ");
                params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
@@ -283,10 +267,10 @@
            builder.append(" WHERE D.WFSTATE != :ysc ");
        }
        builder = getMyZcSql(builder,params);
        builder.append(" AND D.BUSINESSTYPE = :businessType");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        String pageSize = pageInfo.getPageSize();
        String currPage = pageInfo.getCurrPage();
        if(!StringUtil.notEmptyNum(pageSize)){
@@ -297,7 +281,7 @@
        }
        int begin = Integer.valueOf(currPage);
        int size = Integer.valueOf(pageSize);
        if(!StringUtil.notEmpty(flowstate)) {
            builder.append( " ORDER BY D.CREATETIME DESC" );
            List<Map> result = baseDao.queryForList(builder.toString(),params);
@@ -320,14 +304,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;
@@ -344,7 +328,7 @@
            return info;
        }
    }
    public StringBuilder getMyZcSql(StringBuilder builder,Map<String, String> params){
        String status = params.get("status");
        if(StringUtil.notEmpty(status)) {
@@ -352,32 +336,32 @@
                builder.append(" AND D.WFSTATE = :status ");
            }
        }
        String orderName = params.get("orderName");
        if(StringUtil.notEmpty(orderName)) {
            builder.append(" AND D.WFNAME LIKE :orderName ");
            params.put("orderName", "%"+orderName+"%");
        }
        String hjName = params.get("hjName");
        if(StringUtil.notEmpty(hjName)) {
            builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
            params.put("hjName", "%"+hjName+"%");
        }
        String orderCode = params.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND D.ORDER_CODE LIKE :orderCode");
            params.put("orderCode", "%"+orderCode+"%");
        }
        String contract = params.get("contract");
        if(StringUtil.notEmpty(contract)) {
            builder.append(" AND D.CONTACT_NAME LIKE :contract ");
            params.put("contract", "%"+contract+"%");
        }
        String pri = params.get("pri");
        if(StringUtil.notEmpty(pri)) {
            String[] pris = pri.split(",");
@@ -395,9 +379,9 @@
                builder.append(")");
            }
        }
        String dg = params.get("dg");
        if(StringUtil.notEmpty(dg)) {
            String[] dgs = dg.split(",");
@@ -415,8 +399,8 @@
                builder.append(")");
            }
        }
        String type = params.get("type");
        if(StringUtil.notEmpty(type)) {
            String[] types = type.split(",");
@@ -434,8 +418,8 @@
                builder.append(")");
            }
        }
        String sl = params.get("sl");
        if(StringUtil.notEmpty(sl)) {
            String[] sls = sl.split(",");
@@ -458,32 +442,32 @@
    @Override
    public int zcywCountForFwt(Map<String, String> params) {
        StringBuilder builder = new StringBuilder();
        builder.append("SELECT COUNT(WB.ID) ");
        builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B WHERE WB.BUSINESS_ID = B.ID ");
        builder.append(" AND WB.BUSINESSTYPE = :businessType ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        builder = getZcSql(builder,params);
        return baseDao.queryForInteger(builder.toString(), params);
    }
    @Override
    public PageInfo zcywDataForFwt(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder builder = new StringBuilder();
        builder.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE, ");
        builder.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.ANSWER_TIMEOUT,B.DEAL_TIMEOUT ");
        builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B WHERE WB.BUSINESS_ID = B.ID ");
        builder.append(" AND WB.BUSINESSTYPE = :businessType ");
        params.put("businessType", ConvertUtil.obj2StrBlank( Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        builder = getZcSql(builder,params);
        builder.append( " ORDER BY WB.CREATETIME DESC ");
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
    }
    public StringBuilder getZcSql(StringBuilder builder,Map<String, String> params){
@@ -491,20 +475,20 @@
        if(StringUtil.notEmpty(customer_id)) {
            builder.append(" AND B.CUSTOMER_ID = :customer_id ");
        }
        String orderName = params.get("orderName");
        if(StringUtil.notEmpty(orderName)) {
            builder.append(" AND WB.WFNAME LIKE :orderName ");
            params.put("orderName", "%"+orderName+"%");
        }
        String orderStatus = params.get("orderStatus");
        if(StringUtil.notEmpty(orderStatus)) {
            builder.append(" AND WB.WFSTATE = :orderStatus ");
            params.put("orderStatus", orderStatus);
        }
        String orderCode = params.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND WB.ORDER_CODE LIKE :orderCode ");
@@ -512,7 +496,7 @@
        }
        return builder;
    }
    @Override
    public Map queryZcMsg(HttpServletRequest request) {
        Map result = new HashMap();
@@ -520,10 +504,10 @@
        String customerName = new String();
        String subCustomerId = new String();
        String subCustomerName = new String();
        String userId = WebUtil.getLoginedUserId(request);
        String selectSql1 = "SELECT A.CUSTOMER_ID FROM SC_CUSTOMER_ZC_UESR A  WHERE A.USER_ID = :userId ";
        Map zcz = baseDao.queryForMap(selectSql1,new SqlParameter("userId",userId));
        if(null!=zcz && zcz.size()>0) {
            String cId = ConvertUtil.obj2StrBlank(zcz.get("CUSTOMER_ID"));
@@ -545,8 +529,8 @@
                }
            }
        }
        result.put("customerId", customerId);
        result.put("customerName", customerName);
        result.put("subCustomerId", subCustomerId);
@@ -558,20 +542,20 @@
    public List queryAllZcry(HttpServletRequest request) {
        String subCustomerId = request.getParameter("subCustomerId");
        String sql = "SELECT * FROM SC_CUSTOMER_ZC_UESR WHERE CUSTOMER_ID = :subCustomerId ";
        return baseDao.queryForList(sql,new SqlParameter("subCustomerId",subCustomerId));
    }
    @Override
    public Map saveZcyw(HttpServletRequest request,SC_WORKFLOW_INCIDENT_LOCAL sc_workflow_incident_local) {
        Map resultMap = new HashMap();
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
        String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        String serivceListId = request.getParameter("serivceListId");
        String serivceList = request.getParameter("serivceList");
        String first_category_id = new String();
@@ -590,11 +574,11 @@
            third_category_id = serivceListIds[2];
            third_category_name = serivceLists[2];
        }
        String dealUserId = userId;
        String dealUserName = userName;
        String type = request.getParameter("type");
        String state = Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_FPDZCGCS;
        String node_template_id = Constants.ZCYW_FWSL;
@@ -606,47 +590,47 @@
                    dealUserId = userMsg[0];
                    dealUserName = userMsg[1];
                }
            }
            }
        }
        String order_code = workOrderCodeService.getIncidentOrderCode();
        long createTime = DateUtil.getCurrentDate14();
        //响应时间为分钟
        Long requestAnswerTime = sc_workflow_incident_local.getRequest_answer_time();
        Long dealTime = sc_workflow_incident_local.getRequest_deal_time();
        if(null == requestAnswerTime) {
            requestAnswerTime = Long.valueOf(0);
        }
        if(null == dealTime) {
            dealTime = Long.valueOf(0);
        }
        //处理时间为小时
        long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime),2);
        long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime),1);
        sc_workflow_incident_local.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
        .setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name).setCreate_user_id(userId).setCreate_user_name(userName)
        .setCreate_time(createTime);
        String id = StringUtil.getUUID();
        sc_workflow_incident_local.setId(id).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(sc_workflow_incident_local.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime);
        sc_workflow_incident_local.insert();
        String bz = request.getParameter("bz");
        //启动流程
        WORKFLOW_BASE base = workflowBusinessService.startIncident_LocalWorkflow(id,bz);
        NodeDealEntity entity = new NodeDealEntity();
        entity.setDealer_type(3);
        entity.setBefore_Dealer_type(2);
@@ -655,13 +639,13 @@
        map.put("USER_ID", dealUserId);
        map.put("USER_NAME", dealUserName);
        map.put("IS_ADMIN", "1");
        dealerList.add(map);
        entity.setDealerList(dealerList);
        workflowBusinessService.toNode(base, node_template_id, entity);
        String hasMsg = request.getParameter("hasMsg");
        /*if(StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
            //保存联系人的信息
@@ -671,8 +655,8 @@
            .setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_incident_local.getSub_customer_id()).setSub_customer_name(sc_workflow_incident_local.getSub_customer_name());
            project_contacts.insert();
        }*/
        String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL;
        //发送消息
        GG_MESSAGE message = new GG_MESSAGE();
@@ -687,29 +671,29 @@
        .setOrder_code(order_code)
        .setType(Constants.GG_MESSAGE_TYPE_XCYW);
        messageFacade.doSendMessage(message, dealerList);
        //所有的业务主键都是flowId(即流程主表的id)
        String flowId = base.getId();
        //提交工单时添加关联工单
        String[] orderId = request.getParameterValues("orderId");
        orderService.saveLinkOrders(flowId,orderId,request);
        //提交工单时上传文档附件
//        /fileService.uploadFile(request, flowId, flowId, null, null);
        //提交工单时上传文档附件
        fileService.uploadFile(request,flowId,flowId,null,null,Constants.GG_FOLDERS_ZCYWSJFOLDERS,Constants.FILE_STATE_SHTG,null);
        //提交工单时添加关联设备
        String[] deviceId = request.getParameterValues("deviceId");
        deviceService.saveLinkDevices(flowId,deviceId);
        //添加处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content("创建事件:"+userName+"创建了驻场运维事件");
@@ -722,19 +706,19 @@
        resultMap.put("incidentId", id);
        return resultMap;
    }
    @Override
    public void doEndTask(HttpServletRequest request) {
        String incidentId = request.getParameter("incidentId");
        String solveWay = request.getParameter("solveWay");
        String solveWayName = request.getParameter("solveWayName");
        String resolve = request.getParameter("resolve");
        String suggest = request.getParameter("suggest");
        String bz = request.getParameter("bz");
        Map user=new HashMap();
        if(request.getParameter("isWechat")!=null && request.getParameter("isWechat").equals("1")){
            user = WebUtil.getEngineerMsg(request);
        }else{
@@ -742,23 +726,23 @@
        }
        String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
        String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        long resolveTime = DateUtil.getCurrentDate14();
        String state = Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_YJJ;
        Map result = getHs(incidentId,baseDao,resolveTime);
        //获取解决耗时
        double sjjjsj = ConvertUtil.obj2Double(result.get("sjjjsj"));
        String deal_timeout = ConvertUtil.obj2StrBlank(result.get("deal_timeout"));
        String updateSql = "UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,DEAL_USE_TIME = :deal_use_time,RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName,RESOLVE = :resolve,SUGGEST = :suggest,DEAL_TIMEOUT = :deal_timeout WHERE ID = :incidentId ";
        Map paramMap = new HashMap();
        paramMap.put("state", state);
        paramMap.put("userId", userId);
@@ -771,77 +755,77 @@
        paramMap.put("incidentId", incidentId);
        paramMap.put("deal_use_time", sjjjsj);
        paramMap.put("deal_timeout", deal_timeout);
        baseDao.execute(updateSql, paramMap);
        //=====================执行结束流程(事件已解决)
        WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT_LOCAL(incidentId).getInstanceById().getFlow_id()).getInstanceById();
        WORKFLOW_NODE workflow_node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
        //事件响应
        NodeAnswerEntity entity = new NodeAnswerEntity();
        entity.setUser_id(userId);
        entity.setUser_name(userName);
        workflowCoreService.answerNode(base, workflow_node, entity);
        //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
        String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ID = :incidentId";
        Map map = baseDao.queryForMap(selectSql,new SqlParameter("incidentId",incidentId));
        String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
        long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
        if(!StringUtil.notEmpty(answerTime)) {
            StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET ");
            long answer_time = DateUtil.getCurrentDate14();
            //判断是否响应超时
            long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
            String answer_timeout = "2";
            if(answer_time>answer_timeout_time) {
                answer_timeout = "1";
            }
            builder.append(" ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
            paramMap.put("answerTime",answer_time);
            paramMap.put("answer_timeout", answer_timeout);
            //计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
            long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
            //将秒转化为分钟
            double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
            paramMap.put("answer_user_time", sjxysj);
            builder.append(" WHERE ID = :incidentId");
            paramMap.put("incidentId", incidentId);
            baseDao.execute(builder.toString(), paramMap);
        }
        NodeFinishEntity finishEntity = new NodeFinishEntity();
        finishEntity.setDeal_result(1);
        finishEntity.setDeal_note_title("流程结束");
        finishEntity.setDeal_note(bz);
        //判断是否能够结束节点
        boolean canFinish = workflowCoreService.finishNode(base, workflow_node, finishEntity);
        if (canFinish) {
            //关闭流程
            workflowCoreService.finishWorkFlow(base);
        }
        }
        //=====================执行结束流程完毕(事件已解决)
        String flowId = base.getId();
        //增加事件处理记录
        GG_RECORD record = new GG_RECORD();
        record.setDeal_content("解决事件:"+userName+"解决了事件");
@@ -849,36 +833,36 @@
        record.setDeal_user_name(userName);
        record.setBusiness_id(flowId);
        recordService.addRecord(record);
    }
    private Map getHs(String incidentId,BaseDao baseDao,long resolveTime) {
        String selectCreateTime = "SELECT CREATE_TIME,DEAL_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ID = :id ";
        Map map = baseDao.queryForMap(selectCreateTime,new SqlParameter("id",incidentId));
        long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
        long deal_timeout_time = ConvertUtil.obj2Long(map.get("DEAL_TIMEOUT_TIME"));
        //计算第解决时间和创建事件的事件差 将时间差转化为小时
        long jjSeconds = DateUtil.getSecondsFormDate2Date(create_time, resolveTime);
        //将秒转化为小时
        double sjjjsj = NumberUtil.div(ConvertUtil.obj2Double(jjSeconds), ConvertUtil.obj2Double(3600), 2);
        Map result = new HashMap();
        result.put("sjjjsj", sjjjsj);
        if(resolveTime>deal_timeout_time) {
            result.put("deal_timeout", 1);
        } else {
            result.put("deal_timeout", 2);
        }
        return result;
    }
    /**
     * 执行关闭事件操作
     */
@@ -887,17 +871,17 @@
        String incidentId = request.getParameter("incidentId");
        String solveWay = request.getParameter("solveWay");
        String solveWayName = request.getParameter("solveWayName");
        String resolve = request.getParameter("resolve");
        String bz = request.getParameter("bz");
        String merged_business_id = new String();
        if(solveWay.equals(Constants.SJCF)) {
            merged_business_id = request.getParameter("merged_business_id");
        }
        Map user=new HashMap();
        if(request.getParameter("isWechat")!=null && request.getParameter("isWechat").equals("1")){
            user = WebUtil.getEngineerMsg(request);
@@ -906,20 +890,20 @@
        }
        String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
        String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        long resolveTime = DateUtil.getCurrentDate14();
        String state = Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_YGB;
        Map result = getHs(incidentId,baseDao,resolveTime);
        //获取解决耗时
        double sjjjsj = ConvertUtil.obj2Double(result.get("sjjjsj"));
        String deal_timeout = ConvertUtil.obj2StrBlank(result.get("deal_timeout"));
        String updateSql = "UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,DEAL_USE_TIME = :deal_use_time,RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName,RESOLVE = :resolve,MERGED_BUSINESS_ID = :merged_business_id,DEAL_TIMEOUT = :deal_timeout WHERE ID = :incidentId";
        Map paramMap = new HashMap();
        paramMap.put("state", state);
        paramMap.put("userId", userId);
@@ -932,70 +916,70 @@
        paramMap.put("incidentId", incidentId);
        paramMap.put("deal_use_time", sjjjsj);
        paramMap.put("deal_timeout", deal_timeout);
        baseDao.execute(updateSql, paramMap);
        //=====================执行结束流程(事件已关闭)
        WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT_LOCAL(incidentId).getInstanceById().getFlow_id()).getInstanceById();
        WORKFLOW_NODE workflow_node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
        //事件响应
        NodeAnswerEntity entity = new NodeAnswerEntity();
        entity.setUser_id(userId);
        entity.setUser_name(userName);
        workflowCoreService.answerNode(base, workflow_node, entity);
        //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
        String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ID = :incidentId";
        Map map = baseDao.queryForMap(selectSql,new SqlParameter("incidentId",incidentId));
        String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
        long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
        if(!StringUtil.notEmpty(answerTime)) {
            StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET ");
            long answer_time = DateUtil.getCurrentDate14();
            //判断是否响应超时
            long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
            String answer_timeout = "2";
            if(answer_time>answer_timeout_time) {
                answer_timeout = "1";
            }
            builder.append(" ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
            paramMap.put("answerTime",answer_time);
            paramMap.put("answer_timeout", answer_timeout);
            //计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
            long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
            //将秒转化为分钟
            double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
            paramMap.put("answer_user_time", sjxysj);
            builder.append(" WHERE ID = :incidentId");
            paramMap.put("incidentId", incidentId);
            baseDao.execute(builder.toString(), paramMap);
        }
        NodeFinishEntity finishEntity = new NodeFinishEntity();
        finishEntity.setDeal_result(1);
        finishEntity.setDeal_note_title("流程关闭");
        finishEntity.setDeal_note(bz);
        //判断是否能够结束节点
        boolean canFinish = workflowCoreService.finishNode(base, workflow_node, finishEntity);
        if (canFinish) {
            //关闭流程
            workflowCoreService.closeWorkFlow(base);
        }
        }
        //=====================执行结束流程完毕(事件已解决)
        String flowId = base.getId();
        //增加事件处理记录
        GG_RECORD record = new GG_RECORD();
@@ -1013,7 +997,7 @@
    public List<Map> incidentLocalLzRecord(String flowId) {
        String selectSql = "SELECT N.* FROM WORKFLOW_NODE N,WORKFLOW_TEMPLATE_NODE B WHERE N.NODE_TEMPLATE_ID = B.ID AND N.FLOWID = :flowId ORDER BY N.CREATETIME DESC,B.ORDERNUMBER DESC ";
        List<Map> lzs = baseDao.queryForList(selectSql,new SqlParameter("flowId",flowId));
        //格式化响应时间为分钟,格式化处理时间为小时
        if(null!=lzs && lzs.size()>0) {
            for(Map lz : lzs) {
@@ -1022,16 +1006,16 @@
                    String answerTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(answer_usertime));
                    lz.put("ANSWER_USERTIME", answerTime);
                }
                String deal_usetime = ConvertUtil.obj2StrBlank(lz.get("DEAL_USETIME"));
                if(StringUtil.notEmpty(deal_usetime) && !deal_usetime.equals("0")) {
                    String dealTime = DateUtil.getFormatSeconds(ConvertUtil.obj2Int(deal_usetime));
                    lz.put("DEAL_USETIME", dealTime);
                }
            }
        }
        return lzs;
    }
@@ -1050,8 +1034,8 @@
        return baseMap;
    }
    @Override
    public List queryDealRecord(String orderId) {
        List<Map> list = recordService.queryRecord(orderId);
@@ -1066,7 +1050,7 @@
                        List cacheList = new ArrayList();
                        if(cacheFile.containsKey(extend)) {
                            cacheList = (List)cacheFile.get(extend);
                        }
                        }
                        cacheList.add(file);
                        cacheFile.put(extend, cacheList);
                    }
@@ -1081,8 +1065,8 @@
                }
            }
        }
        return list;
    }
@@ -1118,7 +1102,7 @@
        if(null!=incident && incident.size()>0) {
            customerId = ConvertUtil.obj2StrBlank(incident.get("CUSTOMER_ID"));
        }
        String name = AjaxUtil.decode(request.getParameter("name"));
        StringBuilder builder = new StringBuilder("SELECT * FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE CUSTOMER_ID = :customerId AND ID <> :incidentId ");
        Map paramMap = new HashMap();
@@ -1131,7 +1115,7 @@
        builder.append(" ORDER BY CREATE_TIME DESC ");
        return baseDao.queryForList(builder.toString(),paramMap);
    }
    /**
     * 执行工单确认操作
     */
@@ -1139,65 +1123,65 @@
    public String doOrderConfirm(HttpServletRequest request) {
        String incidentId = request.getParameter("incidentId");
        String flowId = request.getParameter("flowId");
        Map user = WebUtil.getLoginUser(request).getLoginUser();
        String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
        String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
        NodeAnswerEntity answerEntity = new NodeAnswerEntity();
        answerEntity.setUser_id(userId);
        answerEntity.setUser_name(userName);
        WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
        //工单响应
        workflowCoreService.answerNode(base, new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById(), answerEntity);
        //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
        String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ID = :incidentId";
        Map map = baseDao.queryForMap(selectSql,new SqlParameter("incidentId",incidentId));
        String answerTime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
        long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
        Map paramMap = new HashMap();
        StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = STATE + 1");
        if(!StringUtil.notEmpty(answerTime)) {
            long answer_time = DateUtil.getCurrentDate14();
            //判断是否响应超时
            long answer_timeout_time = ConvertUtil.obj2Long(map.get("ANSWER_TIMEOUT_TIME"));
            String answer_timeout = "2";
            if(answer_time>answer_timeout_time) {
                answer_timeout = "1";
            }
            builder.append(",ANSWER_TIME = :answerTime,ANSWER_USE_TIME = :answer_user_time,ANSWER_TIMEOUT = :answer_timeout ");
            paramMap.put("answerTime",answer_time);
            paramMap.put("answer_timeout", answer_timeout);
            //计算第一次响应时间和创建事件的事件差 将时间差转化为分钟
            long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
            //将秒转化为分钟
            double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
            paramMap.put("answer_user_time", sjxysj);
        }
        builder.append(" WHERE ID = :incidentId");
        paramMap.put("incidentId", incidentId);
        baseDao.execute(builder.toString(), paramMap);
        return "1";
    }
    @Override
    public String updateZcywMsg(HttpServletRequest request,SC_WORKFLOW_INCIDENT_LOCAL incident) {
@@ -1235,7 +1219,7 @@
            third_category_id = serivceListIds[2];
            third_category_name = serivceLists[2];
        }
        //响应时间为分钟
        Long requestAnswerTime = incident.getRequest_answer_time();
        //处理时间为小时
@@ -1243,17 +1227,17 @@
        if(null == requestAnswerTime) {
            requestAnswerTime = Long.valueOf(0);
        }
        if(null == dealTime) {
            dealTime = Long.valueOf(0);
        }
        String selectCreateTimeSql = "SELECT CREATE_TIME,ANSWER_TIME,RESOLVE_TIME FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ID = :incidentId";
        Map m = baseDao.queryForMap(selectCreateTimeSql,new SqlParameter("incidentId",incident.getId()));
        long createTime = ConvertUtil.obj2Long(m.get("CREATE_TIME"));
        long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime),2);
        long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime),1);
        long currentTime = DateUtil.getCurrentDate14();
        //判断当前是否已经响应超时
        String answer_time = ConvertUtil.obj2StrBlank(m.get("ANSWER_TIME"));
@@ -1266,7 +1250,7 @@
                incident.setAnswer_timeout(1);
            }
        }
        //判断当前是否已经处理超时
        String resolve_time = ConvertUtil.obj2StrBlank(m.get("RESOLVE_TIME"));
        if(StringUtil.notEmpty(resolve_time)) {
@@ -1278,18 +1262,18 @@
                incident.setDeal_timeout(1);
            }
        }
        incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id).setSecond_category_name(second_category_name)
        .setThird_category_id(third_category_id).setThird_category_name(third_category_name).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout_time(dealTimeoutTime);
        incident.update();
        String id = incident.getId();
        fileService.uploadFile(request, id,id,null,null);
        return "1";
    }
    /**
     * 执行升级为事件操作
     */
@@ -1304,65 +1288,65 @@
                incident = copyProperties(incident,local);
            } catch (Exception e) {
                e.printStackTrace();
            }
            }
            //查询当前项目的服务台组的编号
            String selectSql = "SELECT A.* FROM AC_ROLE A WHERE A.ID = :roleid  ";
            Map map = baseDao.queryForMap(selectSql,new SqlParameter("roleid",Constants.AC_ROLE_FWT));
            String groupId = ConvertUtil.obj2StrBlank(map.get("ID"));
            String groupName = ConvertUtil.obj2StrBlank(map.get("ROLENAME"));
            String state = Constants.SC_WORKFLOW_INCIDENT_STATE_FPDFWT;
            String node_template_id = Constants.KFRY;
            String order_code = workOrderCodeService.getIncidentOrderCode();
            //响应时间为分钟
            Long requestAnswerTime = incident.getRequest_answer_time();
            Long dealTime = incident.getRequest_deal_time();
            if(null == requestAnswerTime) {
                requestAnswerTime = Long.valueOf(0);
            }
            if(null == dealTime) {
                dealTime = Long.valueOf(0);
            }
            //处理时间为小时
            long createTime = DateUtil.getCurrentDate14();
            long answerTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(requestAnswerTime),2);
            long dealTimeoutTime = DateUtil.getTimeAdd(createTime, ConvertUtil.obj2Int(dealTime),1);
            Map user = WebUtil.getLoginUser(request).getLoginUser();
            String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
            String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
            String incidentId = StringUtil.getUUID();
            incident.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(createTime).setId(incidentId).setState(ConvertUtil.obj2Integer(state)).setOrder_code(order_code).setFlow_name(incident.getName()).setAnswer_timeout(2).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout(2).setDeal_timeout_time(dealTimeoutTime).setCreate_type(3).setDeal_use_time(null).setAnswer_use_time(null);
            incident.insert();
            //启动流程
            WORKFLOW_BASE base = workflowBusinessService.startIncidentWorkflow(incidentId,"");
            //启动流程
            NodeDealEntity entity = new NodeDealEntity();
            entity.setDealer_type(3);
            List<Map> dealerList = new ArrayList<Map>();
            entity.setBefore_Dealer_type(1);
            entity.setRoleID(groupId);
            entity.setRoleName(groupName);
            //查询改组下面的所有人员信息
            String selectUser = "SELECT B.ID AS USER_ID,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.JSBH = :groupId AND A.YHBH = B.ID AND B.ZT = 1 ";
            dealerList = baseDao.queryForList(selectUser,new SqlParameter("groupId",groupId));
            workflowBusinessService.toNode(base, node_template_id, entity);
            String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL;
            //发送消息
@@ -1378,7 +1362,7 @@
            .setOrder_code(order_code)
            .setType(Constants.GG_MESSAGE_TYPE_SJGL);
            messageFacade.doSendMessage(message, dealerList);
            //添加关联工单
            List<Map> orders = orderService.queryLinkOrders(flowId);
            StringBuilder builder = new StringBuilder();
@@ -1392,8 +1376,8 @@
                String[] orderId = builder.toString().split(",");
                orderService.saveLinkOrders(base.getId(),orderId,request);
            }
            //添加关联设备
            String selectDeviceSql = "SELECT * FROM CMDB_CI_REF_ORDER WHERE FLOW_ID = :flowId";
            List<Map> devices = baseDao.queryForList(selectDeviceSql,new SqlParameter("flowId",flowId));
@@ -1409,9 +1393,9 @@
                }
                baseDao.executeBatch(insertSql,list);
            }
            //查询文档附件
            List<Map> files = fileService.getFileList(id,1);
            if(null!=files && files.size()>0) {
@@ -1425,7 +1409,7 @@
                    sqlParameter.put("FILE_PATH", file.get("FILE_PATH"));
                    sqlParameter.put("FILE_SIZE", file.get("FILE_SIZE"));
                    sqlParameter.put("FILE_FORMAT", file.get("FILE_SIZE"));
                    sqlParameter.put("BUSINESS_ID", incidentId);
                    sqlParameter.put("ORDERNUM", file.get("ORDERNUM"));
                    sqlParameter.put("FILE_NOTE", file.get("FILE_NOTE"));
@@ -1437,40 +1421,40 @@
                }
                baseDao.executeBatch(sql,parameters);
            }
            String resolve = request.getParameter("resolve");
            String bz = request.getParameter("bz");
            //设置驻场运维工单为已挂起
            String updateZcyw = "UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = :state,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,RESOLVE = :solveWay,INCIDENT_ID = :incidentId WHERE ID = :id";
            baseDao.execute(updateZcyw, new SqlParameter("state",Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_YGQ).addValue("id", id).addValue("resolveTime", createTime).addValue("incidentId", incidentId).addValue("userId", userId).addValue("userName", userName).addValue("solveWay", resolve));
            //执行挂起操作
            WORKFLOW_BASE base1 = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT_LOCAL(id).getInstanceById().getFlow_id()).getInstanceById();
            WORKFLOW_NODE workflow_node = new WORKFLOW_NODE(base1.getCurrent_node_id()).getInstanceById();
            /*NodeAnswerEntity entity1 = new NodeAnswerEntity();
            entity1.setUser_id(userId);
            entity1.setUser_name(userName);
            workflowCoreService.answerNode(base1, workflow_node, entity1);*/
            NodeFinishEntity finishEntity = new NodeFinishEntity();
            finishEntity.setDeal_result(1);
            finishEntity.setDeal_note_title("流程挂起");
            finishEntity.setDeal_note(bz);
            boolean canFinish = workflowCoreService.finishNode(base, new WORKFLOW_NODE(base1.getCurrent_node_id()).getInstanceById(), finishEntity);
            if (canFinish) {
                workflowCoreService.upWorkFlow(base1);
            }
            }
            //增加事件处理记录
            GG_RECORD record = new GG_RECORD();
            record.setDeal_content("升级事件:"+userName+"升级了事件");
@@ -1478,16 +1462,16 @@
            record.setDeal_user_id("1");
            record.setDeal_user_name(userName);
            record.setBusiness_id(flowId);
            recordService.addRecord(record);
            return incidentId;
        }
        return null;
    }
    /**
     * @param incident
     * @param local
@@ -1505,18 +1489,18 @@
        .setSub_customer_id(local.getSub_customer_id()).setSub_customer_name(local.getSub_customer_name()).setCreate_type(3);
        return incident;
    }
    @Override
    public Map queryWcReport(String orderId) {
        Map incident = new SC_WORKFLOW_INCIDENT_LOCAL(orderId).getBeanMapById();
        String flowId = ConvertUtil.obj2StrBlank(incident.get("FLOW_ID"));
        //查询关联工单
        if(null!=incident && incident.size()>0) {
            List<Map> orders = queryOrders(flowId);
            List<Map> devices = incidentFacade.queryDevices(flowId);
            List<Map> files = queryFiles(flowId);
            incident.put("orders", orders);
            incident.put("devices", devices);
            incident.put("files", files);
@@ -1536,35 +1520,35 @@
        }
        return incident;
    }
    @Override
    public Map saveDispatchTask(HttpServletRequest request) {
        Map resultMap = new HashMap();
        resultMap.put("result", 2);
        String id = request.getParameter("id");
        String selectUser = request.getParameter("userMsg");
        String dealUserId = new String();
        String dealUserName = new String();
        String state = Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_FPDZCGCS;
        String node_template_id = Constants.ZCYW_FWSL;
        if(StringUtil.notEmpty(selectUser)) {
            String[] userMsg = selectUser.split("-");
            if(userMsg.length==2) {
                dealUserId = userMsg[0];
                dealUserName = userMsg[1];
            }
        }
        }
        if(StringUtil.notEmpty(dealUserId) && StringUtil.notEmpty(dealUserName)) {
            //执行分派任务
            WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById();
            NodeDealEntity entity = new NodeDealEntity();
            entity.setDealer_type(3);
            entity.setBefore_Dealer_type(2);
@@ -1573,32 +1557,32 @@
            map.put("USER_ID", dealUserId);
            map.put("USER_NAME", dealUserName);
            map.put("IS_ADMIN", "1");
            dealerList.add(map);
            entity.setDealerList(dealerList);
            String bz = request.getParameter("bz");
            NodeFinishEntity finishEntity = new NodeFinishEntity();
            finishEntity.setDeal_result(1);
            finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
            finishEntity.setDeal_note(bz);
            NodeAnswerEntity answerEntity = new NodeAnswerEntity();
            answerEntity.setUser_id(dealUserId);
            answerEntity.setUser_name(dealUserName);
            WORKFLOW_NODE node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
            boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
            if (canFinish) {
                workflowBusinessService.toNode(base, node_template_id, entity);
            }
            }
            //更新事件状态
            String updateIncidentSql = "UPDATE SC_WORKFLOW_INCIDENT_LOCAL SET STATE = :state WHERE ID = :incidentId ";
            baseDao.execute(updateIncidentSql, new SqlParameter("state",state).addValue("incidentId", base.getBusiness_id()));
            Map user=new HashMap();
            if(request.getParameter("isWechat")!=null && request.getParameter("isWechat").equals("1")){
                user = WebUtil.getEngineerMsg(request);
@@ -1607,7 +1591,7 @@
            }
            String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
            String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
            String flowId = base.getId();
            //增加事件处理记录
            GG_RECORD record = new GG_RECORD();
@@ -1616,11 +1600,11 @@
            record.setDeal_user_id("1");
            record.setDeal_user_name(userName);
            record.setBusiness_id(base.getId());
            recordService.addRecord(record);
            String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL;
            //发送消息
            GG_MESSAGE message = new GG_MESSAGE();
@@ -1634,10 +1618,10 @@
            .setWx_url(wxUrl)
            .setType(Constants.GG_MESSAGE_TYPE_XCYW);
            messageFacade.doSendMessage(message, dealerList);
            resultMap.put("result", 1);
        }
        SysInfoMsg msg = new SysInfoMsg("2",dealUserName,"服务受理");
@@ -1678,7 +1662,7 @@
    public int queryZcywTimeoutCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB,WORKFLOW_NODE N   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB,WORKFLOW_NODE N   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 )  AND N.CURRENT_DEALER_ID = :current_dealer_id  ");
        params.put("current_dealer_id", params.get("userId"));
        sql.append(sqlpart);
@@ -1746,12 +1730,12 @@
        params.put("endTime", endDay + "600000");
        if (StringUtil.isBlank(userId)) {
            builder.append(" select count(ID) NUM,DATE_FORMAT(CREATE_TIME,'%Y%m%d') CREATEDAY  from SC_WORKFLOW_INCIDENT_LOCAL  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_INCIDENT_LOCAL 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);
@@ -1832,7 +1816,7 @@
        }
        return chartMap;
    }
    @Override
    public Map getLastMonthZcywPri(Map<String, String> params) {
        Map chartMap = new HashMap();
@@ -1888,12 +1872,12 @@
        StringBuilder builder = new StringBuilder();
        if (StringUtil.isBlank(userId)) {
            builder.append(" select count(ID) NUM,THIRD_CATEGORY_ID SERVER_ID  from SC_WORKFLOW_INCIDENT_LOCAL  where CUSTOMER_ID = :cusId ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by SERVER_ID ");
            builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by THIRD_CATEGORY_ID ");
        } else {
            builder.append(" select count(q.ID) NUM,q.THIRD_CATEGORY_ID SERVER_ID  from SC_WORKFLOW_INCIDENT_LOCAL 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);
@@ -1952,7 +1936,7 @@
    public int getOrederZcywNumDxy(Map params){
         StringBuilder sql = new StringBuilder();
            StringBuilder sqlpart = new StringBuilder();
            sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB , WORKFLOW_NODE C   ");
            sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT_LOCAL 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 ");
            String customerId=ConvertUtil.obj2StrBlank(params.get("customerId"));
            if(StringUtil.notEmpty(customerId)){
@@ -1968,7 +1952,7 @@
    public int getOrederZcywNumJxz(Map params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1 ");
        String customerId=ConvertUtil.obj2StrBlank(params.get("customerId"));
        if(StringUtil.notEmpty(customerId)){
@@ -1985,7 +1969,7 @@
    public int getOrederZcywTimeoutCount(Map<String, String> params) {
        StringBuilder sql = new StringBuilder();
        StringBuilder sqlpart = new StringBuilder();
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.* FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB   ");
        sql.append("SELECT COUNT(D.ID) FROM (SELECT B.ID FROM SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_BASE WB   ");
        sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID  AND WB.BUSINESSTYPE = :businessType  AND WB.WFSTATE = 1  AND (B.ANSWER_TIMEOUT = 1 OR B.DEAL_TIMEOUT  = 1 )   ");
        params.put("current_dealer_id", params.get("userId"));
        String customerId=ConvertUtil.obj2StrBlank(params.get("customerId"));
@@ -2003,7 +1987,7 @@
    public PageInfo zcywNodeData(PageInfo pageInfo, Map<String, String> params) {
        StringBuilder builder = new StringBuilder();
        String state=params.get("state");
        builder.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE, ");
        builder.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.ANSWER_TIMEOUT,B.DEAL_TIMEOUT ");
        builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B  ");
@@ -2030,8 +2014,8 @@
            builder.append(" group by B.ID  ");
        }
        builder.append( " ORDER BY WB.CREATETIME DESC ");
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
    }
@@ -2044,11 +2028,11 @@
            builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B,WORKFLOW_NODE N WHERE WB.BUSINESS_ID = B.ID AND N.FLOWID=WB.ID AND WB.WFSTATE=1 AND N.FLOWSTATE=1 ");
            builder.append(" AND WB.BUSINESSTYPE = :businessType ");
            params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
            builder = getZcSql(builder,params);
            builder.append(" group by B.ID) d ");
        }else{
            builder.append("SELECT COUNT(WB.ID) ");
            builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B WHERE WB.BUSINESS_ID = B.ID ");
            builder.append(" AND WB.BUSINESSTYPE = :businessType ");
@@ -2061,10 +2045,10 @@
                builder.append(" and WB.WFSTATE=2 ");
            }else if(state.equals("4")){
                builder.append(" and WB.WFSTATE=4 ");
            }
            }
            builder = getZcSql(builder,params);
        }
        return baseDao.queryForInteger(builder.toString(), params);
    }
}
src/cn/ksource/web/service/knowledge/KmServiceImpl.java
@@ -1,18 +1,6 @@
package cn.ksource.web.service.knowledge;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.ksource.beans.KM_LIBRARY;
import cn.ksource.beans.KM_LIBRARY_FAVORITE;
import cn.ksource.beans.KM_LIBRARY_TEMP;
import cn.ksource.core.dao.BaseDao;
@@ -23,13 +11,18 @@
import cn.ksource.core.web.WebUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.service.file.FileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Service
public class KmServiceImpl implements KmService {
    @Autowired
    private BaseDao baseDao;
    @Autowired
    private FileService fileService;
@@ -38,10 +31,10 @@
        StringBuffer sql=new StringBuffer(" SELECT A.*,COUNT(B.ID) AS NUM FROM KM_LIBRARY_CATEGORY A LEFT JOIN KM_LIBRARY B ON A.ID = B.CATEGORY_ID and B.STATE = 1 WHERE  A.STATE=1 ");
        sql.append(" GROUP BY A.ID ORDER BY A.LEVEL,A.SERIAL,A.TITLE");
        List<Map> categoryList = baseDao.queryForList(sql.toString());
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
@@ -67,9 +60,9 @@
                }
            }
        }
        for (Map map : categoryList) {
            //一级树
            if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
                yjgnCache.put(map.get("ID").toString(), map);
@@ -84,7 +77,7 @@
                List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                map.put("sjTree", new LinkedList<Map>());
                list.add(map);
                ejgnCache.put(map.get("ID").toString(), map);
                continue;
            }
@@ -125,21 +118,21 @@
        }else{
            sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON A.ID = B.CATEGORY_ID and B.STATE = 1");
        }
        sql.append(" WHERE A.STATE=1  GROUP BY A.ID ORDER BY A.LEVEL,A.SERIAL,A.TITLE");
        sql.append(" WHERE A.STATE=1  GROUP BY A.ID,A.TITLE, A.TAG , A.LEVEL,A.SERIAL ORDER BY A.LEVEL,A.SERIAL,A.TITLE");
        List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
        List<Map> resultList = new LinkedList<Map>();
        String firstCate = "";
        String secondCate = "";
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : categoryList) {
            //一级树
            if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
                yjgnCache.put(map.get("ID").toString(), map);
@@ -154,7 +147,7 @@
                List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                map.put("sjTree", new LinkedList<Map>());
                list.add(map);
                ejgnCache.put(map.get("ID").toString(), map);
                continue;
            }
@@ -168,14 +161,14 @@
                    List<Map> list = (List<Map>)ejgnMap.get("sjTree");
                    list.add(map);
                }
            }
        }
        return resultList;
    }
    @Override
    public List<Map> getmyFavourite(String userId) {
        StringBuilder sql = new StringBuilder();
@@ -184,7 +177,7 @@
        sql.append("where k.CREATE_USER_ID=:create_user_id  ");
        SqlParameter param = new SqlParameter();
        param.addValue("create_user_id", userId);
        return baseDao.queryForList(sql.toString(), param);
    }
@@ -203,13 +196,13 @@
        StringBuilder sql = new StringBuilder();
        sql.append("select t.ID,t.TITLE,t.TAG,t.CATEGORY_ID,t.SUMMARY,t.CREATE_TIME,t.CREATE_USER_NAME,t.IS_EDITOR,t.STATE from ( ");
        sql.append("select DISTINCT k.ID,k.TITLE,k.TAG,k.SUMMARY,k.CREATE_TIME,k.CREATE_USER_NAME,k.CATEGORY_ID,k.IS_EDITOR,p.STATE ");
        if(StringUtil.isEmpty(cusId)){
            sql.append("from km_library k   ");
        }else{
            sql.append("from (SELECT A.* FROM KM_LIBRARY A,KM_LIBRARY_KNOWLEDGE_ACCESS B WHERE A.ID = B.KNOWLEDGE_ID AND B.CUSTOMER_ID = :cusId ) k   ");
        }
        sql.append(" LEFT JOIN KM_LIBRARY_TEMP p on p.ORIGINAL_ID = k.ID where k.STATE=1  ");
        sql.append("order by k.CREATE_TIME desc) t ");
        sql.append("limit :limit1,:limit2 ");
@@ -220,7 +213,7 @@
        param.addValue("cusId", cusId);
        param.addValue("limit1", (begin-1)*size);
        param.addValue("limit2", size);
        List<Map> list = baseDao.queryForList(sql.toString(), param);
        List<Map> mylist = getmyFavourite(userId);
        for (Map map : list) {
@@ -251,7 +244,7 @@
        }
        sql.append("where k.STATE=1   ");
        sql.append("order by k.CREATE_TIME desc) t ");
        return baseDao.queryForInteger(sql.toString());
    }
@@ -277,12 +270,12 @@
            sql.append("and k.THIRD_CATEGORY_ID=:category_id ");
        }
        sql.append("order by k.CREATE_TIME desc) t ");
        SqlParameter param = new SqlParameter();
        param.addValue("category_id", categoryId);
        param.addValue("userId", userId);
        param.addValue("cusId", cusId);
        return baseDao.queryForInteger(sql.toString(), param);
    }
@@ -303,7 +296,7 @@
        StringBuilder sql = new StringBuilder();
        sql.append("select t.ID,t.TITLE,t.TAG,t.SUMMARY,t.CREATE_TIME,t.CREATE_USER_NAME,t.IS_EDITOR,t.STATE from ( ");
        sql.append("select DISTINCT k.ID,k.TITLE,k.TAG,k.SUMMARY,k.CREATE_TIME,k.CREATE_USER_NAME,k.IS_EDITOR,p.STATE ");
        if(StringUtil.isEmpty(cusId)){
            sql.append("from km_library k   ");
        }else{
@@ -327,7 +320,7 @@
        param.addValue("category_id", categoryId);
        param.addValue("userId", userId);
        param.addValue("cusId", cusId);
        List<Map> list = baseDao.queryForList(sql.toString(), param);
        List<Map> mylist = getmyFavourite(userId);
        for (Map map : list) {
@@ -363,7 +356,7 @@
        sql.append(" WHERE k.ID = :id ");
        SqlParameter param = new SqlParameter();
        param.addValue("id", libraryId);
        Map map = baseDao.queryForMap(sql.toString(), param);
        List<Map> mylist = getmyFavourite(userId);
        List<Map> myrecord = getmyknowRecord(userId);
@@ -393,18 +386,18 @@
                }
            }
            map.put("tag_list", tagList);
        }
        //附件
        map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID"))));
        //知识关联
        String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
        List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", libraryId));
        map.put("link_list", linkList);
        //历史版本列表
        String historySql = "select ID,VERSION,CREATE_USER_NAME,CREATE_TIME from KM_LIBRARY_HISTORY "
            +"where ORIGINAL_ID=:original_id and STATE=1  order by VERSION ";
@@ -413,10 +406,10 @@
        //点击排名
        Map rankMap = this.getLibraryRankForHits();
        map.put("RANK", rankMap.get(libraryId));
        return map;
    }
    @Override
    public Map getLibraryZjbById(String libraryId, HttpServletRequest request) {
        String userId = WebUtil.getLoginedUserId(request);
@@ -426,7 +419,7 @@
        sql.append(" WHERE k.ID = :id ");
        SqlParameter param = new SqlParameter();
        param.addValue("id", libraryId);
        Map map = baseDao.queryForMap(sql.toString(), param);
        List<Map> mylist = getmyFavourite(userId);
        for(Map mymap :mylist){
@@ -445,13 +438,13 @@
                }
            }
            map.put("tag_list", tagList);
        }
        //附件
        map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("ID"))));
        //知识关联
        String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
        List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", new  KM_LIBRARY_TEMP(libraryId).getInstanceById().getOriginal_id()));
@@ -459,7 +452,7 @@
            linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", libraryId));
        }
        map.put("link_list", linkList);
        /*//历史版本列表
        String historySql = "select ID,VERSION from KM_LIBRARY_HISTORY "
            +"where ORIGINAL_ID=:original_id and STATE=1  order by VERSION ";
@@ -468,10 +461,10 @@
        //点击排名
        Map rankMap = this.getLibraryRankForHits();
        map.put("RANK", rankMap.get(libraryId));*/
        return map;
    }
    /**
     * 获取文库点击排名
     * @param partnerId
@@ -479,16 +472,16 @@
     */
    private Map getLibraryRankForHits() {
        Map resultMap = new HashMap();
        String sql = "select ID,HITS from km_library where STATE=1 order by HITS desc ";
        List<Map> list = baseDao.queryForList(sql);
        if (list != null && list.size() > 0) {
            for (int i=0; i<list.size(); i++) {
                resultMap.put(list.get(i).get("ID"), i+1);
            }
        }
        return resultMap;
    }
@@ -496,7 +489,7 @@
    public boolean addMyLibraryFavourite(String libraryId, String userId) {
        KM_LIBRARY_FAVORITE fav = new KM_LIBRARY_FAVORITE().setLibrary_id(libraryId)
        .setCreate_user_id(userId).queryForBean();
        if (fav != null && fav.getCreate_time() > 0) {
            return false;//不重复收藏
        } else {
@@ -513,12 +506,12 @@
        //基本信息
        StringBuilder sql = new StringBuilder("select ID,TITLE,TAG,SUMMARY,CONTENT,CATEGORY_ID,CATEGORY_NAME,CREATE_USER_ID,CREATE_USER_NAME,CREATE_TIME,VERSION,HITS,STATE,FILE_ID ");
        sql.append("from km_library_history where ID=:id ");
        SqlParameter param = new SqlParameter();
        param.addValue("id", historyId);
        Map map = baseDao.queryForMap(sql.toString(), param);
        //标签
        String tag = ConvertUtil.obj2Str(map.get("TAG"));
        if (tag != null) {
@@ -531,17 +524,17 @@
            }
            map.put("tag_list", tagList);
        }
        //附件
        map.put("file_list", fileService.getFileList(ConvertUtil.obj2StrBlank(map.get("FILE_ID"))));
        //知识关联
        String linksql = "select B.ID,B.TITLE from KM_LIBRARY_KNOWLEDGE_TEMP A,KM_LIBRARY B where A.KNOWLEDGE_ID = B.ID AND A.LIBRARY_ID=:library_id ";
        List<Map> linkList = baseDao.queryForList(linksql, new SqlParameter("library_id", historyId));
        map.put("link_list", linkList);
        return map;
    }
@@ -549,26 +542,26 @@
    public Map thirdlevelListTree(HttpServletRequest request) {
        String category_id = request.getParameter("category_id");
        String cusId = request.getParameter("cusId");
        StringBuilder sql=new StringBuilder("SELECT A.* ,COUNT(B.ID) AS NUM FROM CMDB_CI_CATEGORY A LEFT JOIN ");
        StringBuilder sql=new StringBuilder("SELECT A.ID,A.PID,A.TYPE,A.NAME,A.CODE,A.LV,A.SERIAL,A.STATE,A.LV1_ID,A.LV1_NAME,A.LV2_ID,A.LV2_NAME,A.LV3_ID,A.LV3_NAME,A.FULL_ID,A.FULL_NAME,A.CATE_TYPE,COUNT(B.ID) AS NUM FROM CMDB_CI_CATEGORY A LEFT JOIN ");
        if(StringUtil.isEmpty(cusId)){
            sql.append(" KM_LIBRARY B ON A.ID = B.THIRDLEVEL_ID AND B.STATE = 1 ");
        }else{
            sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON A.ID = B.THIRDLEVEL_ID and B.STATE = 1");
        }
        sql.append(" WHERE A.STATE = 1 and a.cate_type=1 GROUP BY A.ID ORDER BY A.LV,A.SERIAL,A.NAME");
        sql.append(" WHERE A.STATE = 1 and a.cate_type=1 GROUP BY  A.ID,A.PID,A.TYPE,A.NAME,A.CODE,A.LV,A.SERIAL,A.STATE,A.LV1_ID,A.LV1_NAME,A.LV2_ID,A.LV2_NAME,A.LV3_ID,A.LV3_NAME,A.FULL_ID,A.FULL_NAME,A.CATE_TYPE ORDER BY A.LV,A.SERIAL,A.NAME");
        List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : categoryList) {
            //一级树
            if (map.get("LV").toString().equalsIgnoreCase("1")) {
                yjgnCache.put(map.get("ID").toString(), map);
@@ -583,7 +576,7 @@
                List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                map.put("sjTree", new LinkedList<Map>());
                list.add(map);
                ejgnCache.put(map.get("ID").toString(), map);
                continue;
            }
@@ -593,7 +586,7 @@
                    map.put("select", 1);
                }
                if(null!=map.get("PID")){
                    Map ejgnMap = ejgnCache.get(map.get("PID").toString());
                    List<Map> list = (List<Map>)ejgnMap.get("sjTree");
                    list.add(map);
@@ -610,29 +603,29 @@
        String category_id = request.getParameter("category_id");
        String cusId = request.getParameter("cusId");
        String type = request.getParameter("type");
        StringBuffer sql = new StringBuffer("SELECT D.*,COUNT(B.ID) AS NUM FROM (");
        StringBuffer sql = new StringBuffer("SELECT D.ID,D.CATEGORY_CODE,D.CATEGORY_NAME,D.LEVEL,D.P_ID,D.STATE,D.SERIAL,D.TYPE, D.PHOTOPATH,COUNT(B.ID) AS NUM FROM (");
        String sqlpart="SELECT * FROM SC_SERVCE_CATEGORY WHERE STATE = 1 AND TYPE = 2 ORDER BY LEVEL,SERIAL ";
        sql.append(sqlpart);
        sql.append(" ) D LEFT JOIN  ");
        if(StringUtil.isEmpty(cusId)){
            sql.append(" KM_LIBRARY B ON D.ID = B.THIRD_CATEGORY_ID  and B.STATE = 1  ");
        }else{
            sql.append(" (SELECT C.* FROM KM_LIBRARY C,KM_LIBRARY_KNOWLEDGE_ACCESS D WHERE C.ID = D.KNOWLEDGE_ID AND D.CUSTOMER_ID = :cusId) B ON D.ID = B.THIRD_CATEGORY_ID and B.STATE = 1");
        }
        sql.append(" GROUP BY D.ID ORDER BY D.LEVEL,D.SERIAL,D.CATEGORY_NAME");
        sql.append(" GROUP BY D.ID,D.CATEGORY_CODE,D.CATEGORY_NAME,D.LEVEL,D.P_ID,D.STATE,D.SERIAL,D.TYPE, D.PHOTOPATH ORDER BY D.LEVEL,D.SERIAL,D.CATEGORY_NAME");
        List<Map> categoryList = baseDao.queryForList(sql.toString(),new SqlParameter("cusId",cusId));
        Map result = new HashMap();
        List<Map> resultList = new LinkedList<Map>();
        Map<String, Map> yjgnCache = new HashMap<String, Map>();
        Map<String, Map> ejgnCache = new HashMap<String, Map>();
        Map<String, Map> sjgnCache = new HashMap<String, Map>();
        for (Map map : categoryList) {
            //一级树
            if (map.get("LEVEL").toString().equalsIgnoreCase("1")) {
                yjgnCache.put(map.get("ID").toString(), map);
@@ -647,7 +640,7 @@
                List<Map> list = (List<Map>)yjgnMap.get("ejTree");
                map.put("sjTree", new LinkedList<Map>());
                list.add(map);
                ejgnCache.put(map.get("ID").toString(), map);
                continue;
            }
@@ -657,7 +650,7 @@
                    map.put("select", 1);
                }
                if(null!=map.get("P_ID")){
                    Map ejgnMap = ejgnCache.get(map.get("P_ID").toString());
                    List<Map> list = (List<Map>)ejgnMap.get("sjTree");
                    list.add(map);