package cn.ksource.web.facade.wechat.ewyw; 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.GG_MESSAGE; import cn.ksource.beans.GG_RECORD; import cn.ksource.beans.SC_WORKFLOW_INCIDENT_LOCAL; import cn.ksource.beans.WORKFLOW_BASE; 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.NumberUtil; 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.NodeDealEntity; import cn.ksource.core.workflow.NodeFinishEntity; import cn.ksource.core.workflow.WorkflowBusinessService; import cn.ksource.core.workflow.WorkflowCoreService; import cn.ksource.web.Constants; import cn.ksource.web.controller.wechat.util.WechatConstants; import cn.ksource.web.facade.message.MessageFacade; import cn.ksource.web.service.WorkOrderCodeService; import cn.ksource.web.service.device.DeviceService; import cn.ksource.web.service.order.OrderService; import cn.ksource.web.service.record.RecordService; @Service("ewZcFacade") public class EwZcFacadeImpl implements EwZcFacade { @Autowired private BaseDao baseDao; @Autowired private WorkflowCoreService workflowCoreService; @Autowired private WorkOrderCodeService workOrderCodeService; @Autowired private WorkflowBusinessService workflowBusinessService; @Autowired private MessageFacade messageFacade; @Autowired private OrderService orderService; @Autowired private DeviceService deviceService; @Autowired private RecordService recordService; @Override public String doOrderConfirm(Map params) { String incidentId = params.get("incidentId"); String flowId = params.get("flowId"); String userId = ConvertUtil.obj2StrBlank(params.get("ID")); String userName = ConvertUtil.obj2StrBlank(params.get("ZSXM")); NodeAnswerEntity answerEntity = new NodeAnswerEntity(); answerEntity.setUser_id(userId); answerEntity.setUser_name(userName); WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById(); //工单响应 boolean result = workflowCoreService.answerNode(base, new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById(), answerEntity); if(!result) { return "2"; } //判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间) String selectSql = "SELECT ANSWER_TIME,CREATE_TIME,ANSWER_TIMEOUT_TIME FROM SC_WORKFLOW_INCIDENT_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 int eZcCount(Map params) { String status = params.get("flowstate"); StringBuilder builder = new StringBuilder(); builder.append("SELECT COUNT(WB.ID) "); builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B "); if(status.equals("11")){ builder.append(", WORKFLOW_NODE C "); } builder.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType "); if(status.equals("11")){ builder.append(" AND C.FLOWID = WB.ID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL "); } params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL)); if(StringUtil.notEmpty(status) && !status.equals("11")) { builder.append(" AND WB.WFSTATE = :orderStatus "); params.put("orderStatus", status); } return baseDao.queryForInteger(builder.toString(), params); } @Override public PageInfo eZcData(PageInfo pageInfo,Map params) { String status = params.get("flowstate"); StringBuilder builder = new StringBuilder(); builder.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE,WB.PROJECT_NAME, "); 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 "); if(status.equals("11")){ builder.append(", WORKFLOW_NODE C "); } builder.append(" WHERE WB.BUSINESS_ID = B.ID AND WB.BUSINESSTYPE = :businessType "); if(status.equals("11")){ builder.append(" AND C.FLOWID = WB.ID AND C.FLOWSTATE = 1 AND C.CURRENT_DEALER_ID IS NOT NULL "); } params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL)); if(StringUtil.notEmpty(status) && !status.equals("11")) { builder.append(" AND WB.WFSTATE = :orderStatus "); params.put("orderStatus", status); } builder.append( " ORDER BY WB.CREATETIME DESC "); return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params); } /* (non-Javadoc) * @see cn.ksource.web.facade.wechat.ewyw.EwZcFacade#queryZcMsg(javax.servlet.http.HttpServletRequest) */ @Override public Map queryZcMsg(HttpServletRequest request) { Map result = new HashMap(); String customerId = new String(); String customerName = new String(); String subCustomerId = new String(); String subCustomerName = new String(); String userId = WebUtil.getEngineerUserId(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")); if(StringUtil.notEmpty(cId)) { subCustomerId = cId; String selectName = "SELECT CUSTOMER_NAME,CUSTOMER_ID FROM SC_PARTNER_CUSTOMER_SUB WHERE ID = :id"; Map subCustomer = baseDao.queryForMap(selectName,new SqlParameter("id",cId)); if(null!=subCustomer && subCustomer.size()>0){ customerId = ConvertUtil.obj2StrBlank(subCustomer.get("CUSTOMER_ID")); subCustomerName = ConvertUtil.obj2StrBlank(subCustomer.get("CUSTOMER_NAME")); String selectcusName = "SELECT CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_INFO WHERE ID = :id"; customerName = baseDao.queryForString(selectcusName,new SqlParameter("id",customerId)); }else{ customerId = cId; subCustomerId = cId; String selectcusName = "SELECT CUSTOMER_NAME FROM SC_PARTNER_CUSTOMER_INFO WHERE ID = :id"; customerName = baseDao.queryForString(selectcusName,new SqlParameter("id",cId)); subCustomerName = customerName; } } } result.put("customerId", customerId); result.put("customerName", customerName); result.put("subCustomerId", subCustomerId); result.put("subCustomerName", subCustomerName); return result; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public Map saveZcyw(Map map,HttpServletRequest request, SC_WORKFLOW_INCIDENT_LOCAL sc_workflow_incident_local) { Map resultMap = new HashMap(); Map user = WebUtil.getEngineerMsg(request); String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); String serivceListId = ConvertUtil.obj2Str(map.get("serivceListId")); String serivceList = ConvertUtil.obj2Str(map.get("serivceList")); String first_category_id = new String(); String first_category_name = new String(); String second_category_id = new String(); String second_category_name = new String(); String third_category_id = new String(); String third_category_name = new String(); if(StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) { String[] serivceListIds = serivceListId.split("-"); String[] serivceLists = serivceList.split("->"); first_category_id = serivceListIds[0]; first_category_name = serivceLists[0]; second_category_id = serivceListIds[1]; second_category_name = serivceLists[1]; third_category_id = serivceListIds[2]; third_category_name = serivceLists[2]; } String dealUserId = userId; String dealUserName = userName; String type = ConvertUtil.obj2Str(map.get("type")); String state = Constants.SC_WORKFLOW_INCIDENT_LOCAL_STATE_FPDZCGCS; String node_template_id = Constants.ZCYW_FWSL; if(type.equals("1")) { String selectUser = request.getParameter("userMsg"); if(StringUtil.notEmpty(selectUser)) { String[] userMsg = selectUser.split("-"); if(userMsg.length==2) { 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); List dealerList = new ArrayList(); Map mapa = new HashMap(); mapa.put("USER_ID", dealUserId); mapa.put("USER_NAME", dealUserName); mapa.put("IS_ADMIN", "1"); dealerList.add(mapa); entity.setDealerList(dealerList); 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; //发送消息 GG_MESSAGE message = new GG_MESSAGE(); message.setTitle(sc_workflow_incident_local.getName()) .setContent(sc_workflow_incident_local.getName()) .setSender_id(userId) .setSender_name(userName) .setSend_time(DateUtil.getCurrentDate14()) .setBusiness_id(base.getBusiness_id()) .setWeb_url(Constants.INCIDENT_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id()) .setWx_url(wxUrl) .setOrder_code(order_code) .setType(Constants.GG_MESSAGE_TYPE_XCYW); messageFacade.doSendMessage(message, dealerList); //所有的业务主键都是flowId(即流程主表的id) String flowId = base.getId(); //提交工单时添加关联工单 String orderIds=ConvertUtil.obj2Str(map.get("orderId")); if(StringUtil.notEmpty(orderIds)){ String[] orderId = orderIds.split(","); orderService.saveLinkOrders(flowId,orderId,request); } //提交工单时添加关联设备 String deviceIds=ConvertUtil.obj2Str(map.get("deviceId")); if(StringUtil.notEmpty(deviceIds)){ String[] deviceId = deviceIds.split(","); deviceService.saveLinkDevices(flowId,deviceId); } //添加处理记录 GG_RECORD record = new GG_RECORD(); record.setDeal_content("创建事件:"+userName+"创建了驻场运维事件"); record.setDeal_user_id("1"); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); SysInfoMsg msg = new SysInfoMsg("2",dealUserName,"驻场工程师"); resultMap.put("msg", msg); resultMap.put("incidentId", id); return resultMap; } /* (non-Javadoc) * @see cn.ksource.web.facade.wechat.ewyw.EwZcFacade#doEndTask(javax.servlet.http.HttpServletRequest, java.lang.String) */ @Override public void doEndTask(HttpServletRequest request, String orderId) { String incidentId = orderId; 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{ user = WebUtil.getLoginUser(request).getLoginUser(); } String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); long resolveTime = DateUtil.getCurrentDate14(); String state = Constants.SC_WORKFLOW_INCIDENT_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); paramMap.put("userName", userName); paramMap.put("resolveTime", resolveTime); paramMap.put("solveWay", solveWay); paramMap.put("solveWayName", solveWayName); paramMap.put("resolve", resolve); paramMap.put("suggest", suggest); paramMap.put("incidentId", incidentId); paramMap.put("deal_use_time", sjjjsj); paramMap.put("deal_timeout", deal_timeout); 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+"解决了事件"); record.setDeal_user_id("1"); 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; } /* (non-Javadoc) * @see cn.ksource.web.facade.wechat.ewyw.EwZcFacade#doCloseReason(javax.servlet.http.HttpServletRequest, java.lang.String) */ @Override public void doCloseReason(HttpServletRequest request, String 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); }else{ user = WebUtil.getLoginUser(request).getLoginUser(); } String userId = ConvertUtil.obj2StrBlank(user.get("ID")); String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM")); long resolveTime = DateUtil.getCurrentDate14(); String state = Constants.SC_WORKFLOW_INCIDENT_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); paramMap.put("userName", userName); paramMap.put("resolveTime", resolveTime); paramMap.put("solveWay", solveWay); paramMap.put("solveWayName", solveWayName); paramMap.put("resolve", resolve); paramMap.put("merged_business_id", merged_business_id); paramMap.put("incidentId", incidentId); paramMap.put("deal_use_time", sjjjsj); paramMap.put("deal_timeout", deal_timeout); baseDao.execute(updateSql, paramMap); //=====================执行结束流程(事件已关闭) WORKFLOW_BASE base = new WORKFLOW_BASE(new SC_WORKFLOW_INCIDENT_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(); record.setDeal_content("关闭事件:"+userName+"关闭了驻场运维事件"); record.setDeal_user_id("1"); record.setDeal_user_name(userName); record.setBusiness_id(flowId); recordService.addRecord(record); } }