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.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.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.incident.IncidentFacade;
|
import cn.ksource.web.facade.message.MessageFacade;
|
import cn.ksource.web.service.DataDictionaryService;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
import cn.ksource.web.service.device.DeviceService;
|
import cn.ksource.web.service.file.FileService;
|
import cn.ksource.web.service.order.OrderService;
|
import cn.ksource.web.service.record.RecordService;
|
|
@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
|
private DataDictionaryService dataDictionaryService;
|
|
@Override
|
public int queryMyZcywCount(Map<String, String> params) {
|
|
StringBuilder builder = new StringBuilder();
|
params.put("ysc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_WFSTATE_DELETE));
|
|
/**
|
* 查询逻辑
|
* 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
String flowstate = params.get("flowstate");
|
if(StringUtil.notEmpty(flowstate)) {
|
if(flowstate.equals("1")) {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
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_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
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_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1 ");
|
params.put("jdywc", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_FINISH));
|
}
|
} else {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
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.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
String flowstate = params.get("flowstate");
|
if(StringUtil.notEmpty(flowstate)) {
|
if(flowstate.equals("1")) {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID,C.INCIDENT_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
|
builder.append(")D");
|
builder.append(" WHERE D.FLOWSTATE = :jddcl ");
|
params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
|
} else if(flowstate.equals("2")) {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID,C.INCIDENT_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1 ");
|
params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
|
}else {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT DISTINCT B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID,C.INCIDENT_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
}
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
builder.append(")D");
|
builder.append(" WHERE 1 = 1 ");
|
params.put("jdywc",ConvertUtil.obj2StrBlank( Constants.WORKFLOW_NODE_FLOWSTATE_FINISH));
|
}
|
} else {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.PRIORITY_ID,C.INFLUENCE_ID,C.SLA_ID,C.THIRD_CATEGORY_ID,C.TYPE_ID,C.INCIDENT_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")){
|
builder.append(" AND (C.DEAL_TIMEOUT =1 or C.ANSWER_TIMEOUT=1) ");
|
String csstate=params.get("csstate");
|
if(StringUtil.notEmpty(csstate)){
|
if(csstate.equals("1")){
|
builder.append(" AND B.WFSTATE=1 ");
|
}
|
}
|
}
|
}
|
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));
|
|
String pageSize = pageInfo.getPageSize();
|
String currPage = pageInfo.getCurrPage();
|
if(!StringUtil.notEmptyNum(pageSize)){
|
pageSize = "10";
|
}
|
if(!StringUtil.notEmptyNum(currPage)){
|
currPage = "1";
|
}
|
int begin = Integer.valueOf(currPage);
|
int size = Integer.valueOf(pageSize);
|
|
if(!StringUtil.notEmpty(flowstate)) {
|
builder.append( " ORDER BY D.CREATETIME DESC" );
|
List<Map> result = baseDao.queryForList(builder.toString(),params);
|
List resultList = new ArrayList();
|
List<String> list = new ArrayList<String>();
|
Map cacheMap = new HashMap();
|
if(null!=result && result.size()>0) {
|
for(Map m : result) {
|
String flowId = ConvertUtil.obj2StrBlank(m.get("ID"));
|
if(cacheMap.containsKey(flowId)) {
|
String flowState = ConvertUtil.obj2StrBlank(m.get("FLOWSTATE"));
|
if(flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE.toString()) || flowState.equals(Constants.WORKFLOW_NODE_FLOWSTATE_DOING.toString())) {
|
cacheMap.put(flowId, m);
|
if(!list.contains(flowId)) {
|
list.add(flowId);
|
}
|
}
|
} else {
|
cacheMap.put(flowId, m);
|
list.add(flowId);
|
}
|
}
|
|
if(cacheMap.size()>0) {
|
for(String str : list) {
|
resultList.add(cacheMap.get(str));
|
}
|
}
|
}
|
|
int infoCount = resultList.size();
|
int bin = (begin-1)* size ;
|
int end = (begin-1)* size + size;
|
if(end>infoCount){
|
end=infoCount;
|
}
|
PageInfo info = new PageInfo();
|
info.setDatas(resultList.subList(bin, end));
|
info.setRowNum(infoCount);
|
return info;
|
} else {
|
builder.append( " ORDER BY D.CREATETIME DESC ");
|
PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
return info;
|
}
|
}
|
|
public StringBuilder getMyZcSql(StringBuilder builder,Map<String, String> params){
|
String status = params.get("status");
|
if(StringUtil.notEmpty(status)) {
|
if(!status.equals("0")){
|
builder.append(" AND D.WFSTATE = :status ");
|
}
|
}
|
|
String orderName = params.get("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
params.put("orderName", "%"+orderName+"%");
|
}
|
|
|
String hjName = params.get("hjName");
|
if(StringUtil.notEmpty(hjName)) {
|
builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
|
params.put("hjName", "%"+hjName+"%");
|
}
|
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String contract = params.get("contract");
|
if(StringUtil.notEmpty(contract)) {
|
builder.append(" AND D.CONTACT_NAME LIKE :contract ");
|
params.put("contract", "%"+contract+"%");
|
}
|
|
String pri = params.get("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
builder.append(" AND D.PRIORITY_ID = :priority_id");
|
params.put("priority_id", pris[0]);
|
} else {
|
builder.append(" AND D.PRIORITY_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
builder.append(" :pri"+i);
|
builder.append(",");
|
params.put("pri"+i, pris[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
|
String dg = params.get("dg");
|
if(StringUtil.notEmpty(dg)) {
|
String[] dgs = dg.split(",");
|
if(dgs.length==1) {
|
builder.append(" AND D.INFLUENCE_ID = :influence_id");
|
params.put("influence_id", dgs[0]);
|
} else {
|
builder.append(" AND D.INFLUENCE_ID IN (");
|
for(int i=0; i<dgs.length; i++) {
|
builder.append(" :dg"+i);
|
builder.append(",");
|
params.put("dg"+i, dgs[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String type = params.get("type");
|
if(StringUtil.notEmpty(type)) {
|
String[] types = type.split(",");
|
if(types.length==1) {
|
builder.append(" AND D.TYPE_ID = :type_id");
|
params.put("type_id", types[0]);
|
} else {
|
builder.append(" AND D.TYPE_ID IN (");
|
for(int i=0; i<types.length; i++) {
|
builder.append(" :type"+i);
|
builder.append(",");
|
params.put("type"+i, types[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String sl = params.get("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id");
|
params.put("third_category_id", sls[0]);
|
} else {
|
builder.append(" AND D.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
builder.append(" :third_category_id"+i);
|
builder.append(",");
|
params.put("third_category_id"+i, sls[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
return builder;
|
}
|
|
@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){
|
String customer_id = params.get("customer_id");
|
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 ");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
return builder;
|
}
|
|
@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.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"));
|
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;
|
}
|
|
@Override
|
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();
|
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 = request.getParameter("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("selectUser");
|
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<Map> dealerList = new ArrayList<Map>();
|
Map map = new HashMap();
|
map.put("USER_ID", dealUserId);
|
map.put("USER_NAME", dealUserName);
|
map.put("IS_ADMIN", "1");
|
|
dealerList.add(map);
|
|
entity.setDealerList(dealerList);
|
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
|
String hasMsg = request.getParameter("hasMsg");
|
/*if(StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_incident_local.getCustomer_id())
|
.setContact_name(sc_workflow_incident_local.getContact_name()).setContacts_type(sc_workflow_incident_local.getContact_phone()).setYwks(sc_workflow_incident_local.getKeshi())
|
.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();
|
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[] 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+"创建了驻场运维事件");
|
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;
|
}
|
|
@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{
|
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;
|
}
|
|
|
|
/**
|
* 执行关闭事件操作
|
*/
|
@Override
|
public void doCloseReason(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String solveWay = request.getParameter("solveWay");
|
String solveWayName = request.getParameter("solveWayName");
|
|
|
String resolve = request.getParameter("resolve");
|
String bz = request.getParameter("bz");
|
|
String merged_business_id = new String();
|
|
if(solveWay.equals(Constants.SJCF)) {
|
merged_business_id = request.getParameter("merged_business_id");
|
}
|
|
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);
|
}
|
|
/**
|
* 查询驻场运维事件流转记录
|
*/
|
@Override
|
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) {
|
String answer_usertime = ConvertUtil.obj2StrBlank(lz.get("ANSWER_USERTIME"));
|
if(StringUtil.notEmpty(answer_usertime) && !answer_usertime.equals("0")) {
|
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;
|
}
|
|
/**
|
* 查询驻场运维记录基本信息
|
*/
|
@Override
|
public Map queryIncidentLocalBaseMsg(String orderId) {
|
String selectSql = "SELECT A.*,N.ANSWER_TIME AS XY_TIME,B.WFSTATE FROM SC_WORKFLOW_INCIDENT_LOCAL A LEFT JOIN WORKFLOW_BASE B ON A.ID = B.BUSINESS_ID LEFT JOIN WORKFLOW_NODE N ON B.CURRENT_NODE_ID = N.ID WHERE A.ID = :orderId ";
|
Map baseMap = baseDao.queryForMap(selectSql,new SqlParameter("orderId",orderId));
|
if(null!=baseMap && baseMap.size()>0) {
|
//查询附件
|
List<Map> files = fileService.getFileList(orderId);
|
baseMap.put("files", files);
|
}
|
return baseMap;
|
}
|
|
|
|
@Override
|
public List queryDealRecord(String orderId) {
|
List<Map> list = recordService.queryRecord(orderId);
|
if(null!=list && list.size()>0) {
|
Map cacheFile = new HashMap();
|
//查询所有该事件工单下的文档
|
List<Map> files = fileService.getFileList(orderId,1);
|
if(null!=files && files.size()>0) {
|
for(Map file :files) {
|
String extend = ConvertUtil.obj2StrBlank(file.get("BUSINESS_ID"));
|
if(StringUtil.notEmpty(extend)) {
|
List cacheList = new ArrayList();
|
if(cacheFile.containsKey(extend)) {
|
cacheList = (List)cacheFile.get(extend);
|
}
|
cacheList.add(file);
|
cacheFile.put(extend, cacheList);
|
}
|
}
|
}
|
if(null!=cacheFile && cacheFile.size()>0) {
|
for(Map record : list) {
|
String recordId = ConvertUtil.obj2StrBlank(record.get("ID"));
|
if(cacheFile.containsKey(recordId)) {
|
record.put("files", cacheFile.get(recordId));
|
}
|
}
|
}
|
}
|
|
|
return list;
|
}
|
|
@Override
|
public List queryDevices(String flowId) {
|
//查询流程所有的关联设备
|
List devices = deviceService.queryLinkDevices(flowId);
|
return devices;
|
}
|
|
@Override
|
public List queryFiles(String flowId) {
|
List<Map> files = fileService.getFileList(flowId,1);
|
if(null!=files && files.size()>0) {
|
for(Map file : files) {
|
file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
|
}
|
}
|
return files;
|
}
|
|
@Override
|
public List queryOrders(String flowId) {
|
List<Map> orders = orderService.queryLinkOrders(flowId);
|
return orders;
|
}
|
|
@Override
|
public List queryZcyws(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
Map incident = queryIncidentLocalBaseMsg(incidentId);
|
String customerId = new String();
|
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();
|
paramMap.put("customerId", customerId);
|
paramMap.put("incidentId", incidentId);
|
if(StringUtil.notEmpty(name)) {
|
builder.append(" AND NAME LIKE :name ");
|
paramMap.put("name", "%"+name+"%");
|
}
|
builder.append(" ORDER BY CREATE_TIME DESC ");
|
return baseDao.queryForList(builder.toString(),paramMap);
|
}
|
|
/**
|
* 执行工单确认操作
|
*/
|
@Override
|
public String doOrderConfirm(HttpServletRequest request) {
|
String incidentId = request.getParameter("incidentId");
|
String flowId = request.getParameter("flowId");
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
NodeAnswerEntity answerEntity = new NodeAnswerEntity();
|
answerEntity.setUser_id(userId);
|
answerEntity.setUser_name(userName);
|
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
//工单响应
|
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) {
|
|
SC_WORKFLOW_INCIDENT_LOCAL incident_old= new SC_WORKFLOW_INCIDENT_LOCAL(incident.getId()).getInstanceById();
|
String name_old= incident_old.getName();
|
String descrip_old= incident_old.getDescrip();
|
String name=request.getParameter("name");
|
String descrip=request.getParameter("descrip");
|
//当事件名称和事件备注改变时同时改变流程表里的信息
|
if(!name_old.equals(name) || !descrip.equals(descrip_old)){
|
String sql="update WORKFLOW_BASE set wfname=:name, wfnote=:descrip where BUSINESS_ID=:business_id";
|
Map map=new HashMap();
|
map.put("name",name);
|
map.put("descrip",descrip);
|
map.put("business_id",incident.getId());
|
baseDao.execute(sql,map);
|
}
|
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceList");
|
String first_category_id = new String();
|
String first_category_name = new String();
|
String second_category_id = new String();
|
String second_category_name = new String();
|
String third_category_id = new String();
|
String third_category_name = new String();
|
|
if(StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split("-");
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
|
//响应时间为分钟
|
Long requestAnswerTime = incident.getRequest_answer_time();
|
//处理时间为小时
|
Long dealTime = incident.getRequest_deal_time();
|
if(null == requestAnswerTime) {
|
requestAnswerTime = Long.valueOf(0);
|
}
|
|
if(null == dealTime) {
|
dealTime = Long.valueOf(0);
|
}
|
|
String selectCreateTimeSql = "SELECT CREATE_TIME,ANSWER_TIME,RESOLVE_TIME FROM SC_WORKFLOW_INCIDENT_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"));
|
if(StringUtil.notEmpty(answer_time)) {
|
if(ConvertUtil.obj2Long(answer_time) > answerTimeoutTime) {
|
incident.setAnswer_timeout(1);
|
}
|
} else {
|
if(currentTime > answerTimeoutTime) {
|
incident.setAnswer_timeout(1);
|
}
|
}
|
|
//判断当前是否已经处理超时
|
String resolve_time = ConvertUtil.obj2StrBlank(m.get("RESOLVE_TIME"));
|
if(StringUtil.notEmpty(resolve_time)) {
|
if(ConvertUtil.obj2Long(resolve_time) > dealTimeoutTime) {
|
incident.setDeal_timeout(1);
|
}
|
} else {
|
if(currentTime > dealTimeoutTime) {
|
incident.setDeal_timeout(1);
|
}
|
}
|
|
|
|
incident.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id).setSecond_category_name(second_category_name)
|
.setThird_category_id(third_category_id).setThird_category_name(third_category_name).setAnswer_timeout_time(answerTimeoutTime).setDeal_timeout_time(dealTimeoutTime);
|
|
incident.update();
|
String id = incident.getId();
|
fileService.uploadFile(request, id,id,null,null);
|
return "1";
|
}
|
|
/**
|
* 执行升级为事件操作
|
*/
|
@Override
|
public String updateUpTask(HttpServletRequest request) {
|
String id = request.getParameter("id");
|
if(StringUtil.notEmpty(id)) {
|
SC_WORKFLOW_INCIDENT_LOCAL local = new SC_WORKFLOW_INCIDENT_LOCAL(id).getInstanceById();
|
String flowId = local.getFlow_id();
|
SC_WORKFLOW_INCIDENT incident = new SC_WORKFLOW_INCIDENT();
|
try {
|
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;
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(incident.getName())
|
.setContent(incident.getName())
|
.setSender_id(userId)
|
.setSender_name(userName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(order_code)
|
.setType(Constants.GG_MESSAGE_TYPE_SJGL);
|
messageFacade.doSendMessage(message, dealerList);
|
|
//添加关联工单
|
List<Map> orders = orderService.queryLinkOrders(flowId);
|
StringBuilder builder = new StringBuilder();
|
List<String> orderIds = new ArrayList<String>();
|
if(null!=orders && orders.size()>0) {
|
for(Map order : orders) {
|
String orderId = ConvertUtil.obj2StrBlank(order.get("RELATE_FLOW_ID"));
|
builder.append(orderId).append(",");
|
}
|
builder.deleteCharAt(builder.length()-1);
|
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));
|
if(null!=devices && devices.size()>0) {
|
List<SqlParameter> list = new ArrayList<SqlParameter>();
|
String insertSql = "INSERT INTO CMDB_CI_REF_ORDER(ID,FLOW_ID,CI_ID) VALUES (:id,:flowId,:ciId)";
|
for(Map device : devices) {
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("ciId", device.get("CI_ID"));
|
sqlParameter.put("flowId", base.getId());
|
list.add(sqlParameter);
|
}
|
baseDao.executeBatch(insertSql,list);
|
}
|
|
|
|
//查询文档附件
|
List<Map> files = fileService.getFileList(id,1);
|
if(null!=files && files.size()>0) {
|
String sql = "INSERT INTO GG_FILES(ID,FILE_NAME,FILE_PATH,FILE_SIZE,FILE_FORMAT,BUSINESS_ID,FILE_NOTE,ORDERNUM,EXTEND1,EXTEND2,EXTEND3,CREATE_TIME,DEL_FLAG)" +
|
"VALUES(:ID,:FILE_NAME,:FILE_PATH,:FILE_SIZE,:FILE_FORMAT,:BUSINESS_ID,:FILE_NOTE,:ORDERNUM,:EXTEND1,:EXTEND2,:EXTEND3,:CREATE_TIME,1)";
|
List<SqlParameter> parameters = new ArrayList<SqlParameter>();
|
for(Map file : files) {
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.put("ID", StringUtil.getUUID());
|
sqlParameter.put("FILE_NAME", file.get("FILE_NAME"));
|
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"));
|
sqlParameter.put("EXTEND1", incidentId);
|
sqlParameter.put("EXTEND2", null);
|
sqlParameter.put("EXTEND3", null);
|
sqlParameter.put("CREATE_TIME", createTime);
|
parameters.add(sqlParameter);
|
}
|
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+"升级了事件");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
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
|
* @return
|
*/
|
private SC_WORKFLOW_INCIDENT copyProperties(SC_WORKFLOW_INCIDENT incident,SC_WORKFLOW_INCIDENT_LOCAL local) {
|
incident.setName(local.getName()).setDescrip(local.getDescrip()).setHappen_time(local.getHappen_time()).setFirst_category_id(local.getFirst_category_id()).setFirst_category_name(local.getFirst_category_name())
|
.setSecond_category_id(local.getSecond_category_id()).setSecond_category_name(local.getSecond_category_name()).setThird_category_id(local.getThird_category_id())
|
.setThird_category_name(local.getThird_category_name()).setPriority_id(local.getPriority_id()).setPriority_name(local.getPriority_name()).setInfluence_id(local.getInfluence_id())
|
.setInfluence_name(local.getInfluence_name()).setSla_id(local.getSla_id()).setSla_name(local.getSla_name()).setCustomer_id(local.getCustomer_id())
|
.setCustomer_name(local.getCustomer_name()).setContact_id(local.getContact_id()).setContact_name(local.getContact_name()).setContact_phone(local.getContact_phone()).setKeshi(local.getKeshi()).setApply_type_id(local.getApply_type_id())
|
.setApply_type_name(local.getApply_type_name()).setApply_user_name(local.getApply_user_name()).setApply_user_phone(local.getApply_user_phone()).setApply_time(local.getApply_time())
|
.setCreate_user_id(local.getCreate_user_id()).setCreate_user_name(local.getCreate_user_name()).setType_id(local.getType_id()).setType_name(local.getType_name()).setSource_id(local.getSource_id()).setSource_name(local.getSource_name())
|
.setRequest_answer_time(local.getRequest_answer_time()).setRequest_deal_time(local.getRequest_deal_time()).setAnswer_timeout(2).setDeal_timeout(2)
|
.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);
|
}
|
return incident;
|
}
|
|
@Override
|
public Map queryCloseReport(String orderId) {
|
Map incident = new SC_WORKFLOW_INCIDENT_LOCAL(orderId).getBeanMapById();
|
if(null!=incident && incident.size()>0) {
|
String merged_business_id = ConvertUtil.obj2StrBlank(incident.get("MERGED_BUSINESS_ID"));
|
if(StringUtil.notEmpty(merged_business_id)) {
|
Map linkIncident = new SC_WORKFLOW_INCIDENT_LOCAL(merged_business_id).getBeanMapById();
|
incident.put("linkIncident", linkIncident);
|
}
|
}
|
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);
|
List<Map> dealerList = new ArrayList<Map>();
|
Map map = new HashMap();
|
map.put("USER_ID", dealUserId);
|
map.put("USER_NAME", dealUserName);
|
map.put("IS_ADMIN", "1");
|
|
dealerList.add(map);
|
|
entity.setDealerList(dealerList);
|
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);
|
}else{
|
user = WebUtil.getLoginUser(request).getLoginUser();
|
}
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
String flowId = base.getId();
|
//增加事件处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("指派任务:"+userName+"将事件指派给了"+dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(base.getId());
|
|
recordService.addRecord(record);
|
|
|
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL;
|
//发送消息
|
GG_MESSAGE message = new GG_MESSAGE();
|
message.setTitle(base.getWfname())
|
.setContent(base.getWfname())
|
.setSender_id(userId)
|
.setSender_name(userName)
|
.setSend_time(DateUtil.getCurrentDate14())
|
.setBusiness_id(base.getBusiness_id())
|
.setWeb_url(Constants.INCIDENT_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setType(Constants.GG_MESSAGE_TYPE_XCYW);
|
messageFacade.doSendMessage(message, dealerList);
|
|
|
|
|
resultMap.put("result", 1);
|
}
|
SysInfoMsg msg = new SysInfoMsg("2",dealUserName,"服务受理");
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
@Override
|
public Map getOrderNum(Map<String, String> params) {
|
String type = params.get("type");
|
//事件待响应
|
int dxycount = 0;
|
//事件已超时
|
int ycscount = 0;
|
//事件进行中
|
int jxzcount = 0;
|
params.put("state", "1");
|
dxycount = getOrederStateNum(params);
|
params.put("state", "2");
|
jxzcount = getOrederStateNum(params);
|
params.put("state", "3");
|
ycscount = queryZcywTimeoutCount(params);
|
|
Map map = new HashMap();
|
map.put("dxycount", dxycount);
|
map.put("jxzcount", jxzcount);
|
map.put("ycscount", ycscount);
|
return map;
|
}
|
@Override
|
public int getOrederStateNum(Map param){
|
String sql="select count(w.num) from (select COUNT(a.id) num from sc_workflow_incident_local a," +
|
"workflow_base b,workflow_node n where a.id=b.BUSINESS_ID and n.FLOWID=b.id" +
|
" and n.FLOWSTATE=:state and n.CURRENT_DEALER_ID=:userId ";
|
sql+=" GROUP BY a.id) w ";
|
return baseDao.queryForInteger(sql, param);
|
}
|
@Override
|
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 ");
|
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);
|
sql.append(" AND N.FLOWID=WB.ID GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
@Override
|
public Map getLastMonthZcywEffect(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
StringBuilder builder = new StringBuilder();
|
if (StringUtil.isBlank(userId)) {
|
builder.append(" SELECT count(ID) NUM,INFLUENCE_ID FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY INFLUENCE_ID ");
|
} else {
|
builder.append(" SELECT count(q.ID) NUM,q.INFLUENCE_ID FROM SC_WORKFLOW_INCIDENT_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 q.INFLUENCE_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(), params);
|
if (dataList != null && dataList.size() > 0) {
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
for (Map data : dataList) {
|
dataMap.put(data.get("INFLUENCE_ID").toString(), data);
|
}
|
List<Map> catelist = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_EFFECT_DG);
|
if (catelist != null && catelist.size() > 0) {
|
for (Map cate : catelist) {
|
List tempList = new ArrayList();
|
tempList.add(cate.get("DATAVALUE").toString());
|
if (dataMap.get(cate.get("DATAKEY").toString()) != null) {
|
tempList.add(((Map) dataMap.get(cate.get("DATAKEY").toString())).get("NUM"));
|
} else {
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
@Override
|
public Map getLastMonthZcywCount(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
String userId = params.get("userId");
|
StringBuilder builder = new StringBuilder();
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
if (StringUtil.isBlank(userId)) {
|
builder.append(" select count(ID) NUM,DATE_FORMAT(CREATE_TIME,'%Y%m%d') CREATEDAY from SC_WORKFLOW_INCIDENT_LOCAL where CUSTOMER_ID = :cusId ");
|
builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by CREATEDAY ");
|
} 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 ");
|
}
|
|
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>();
|
tempMap.put("name", "驻场事件数量");
|
List tempList = new ArrayList();
|
for (Map data : dataList) {
|
dataMap.put(data.get("CREATEDAY").toString(), data);
|
}
|
for (String day : categories) {
|
categories_format.add(DateUtil.format("yyyy-MM-dd", day));
|
if (dataMap.get(day) != null) {
|
tempList.add(((Map) dataMap.get(day)).get("NUM"));
|
} else {
|
tempList.add(0);
|
}
|
}
|
tempMap.put("data", tempList);
|
series.add(tempMap);
|
chartMap.put("categories", categories_format);
|
chartMap.put("step", Math.ceil(categories.size() / 9));
|
chartMap.put("series", series);
|
}
|
return chartMap;
|
}
|
@Override
|
public Map getLastMonthZcywLv(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
StringBuilder builder = new StringBuilder();
|
if (StringUtil.isBlank(userId)) {
|
builder.append(" SELECT count(ID) NUM,SLA_ID FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY SLA_ID ");
|
} else {
|
builder.append(" SELECT count(q.ID) NUM,q.SLA_ID FROM SC_WORKFLOW_INCIDENT_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 q.SLA_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(), params);
|
if (dataList != null && dataList.size() > 0) {
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
|
for (Map data : dataList) {
|
dataMap.put(data.get("SLA_ID").toString(), data);
|
}
|
|
builder.setLength(0);
|
builder.append(" select ID LEVEL_ID,LEVEL_NAME from SC_SLA where state=1 order by SERIAL ");
|
List<Map> catelist = baseDao.queryForList(builder.toString(), params);
|
for (Map cate : catelist) {
|
List tempList = new ArrayList();
|
tempList.add(cate.get("LEVEL_NAME").toString());
|
if (dataMap.get(cate.get("LEVEL_ID").toString()) != null) {
|
tempList.add(((Map) dataMap.get(cate.get("LEVEL_ID").toString())).get("NUM"));
|
} else {
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
|
@Override
|
public Map getLastMonthZcywPri(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
String userId = params.get("userId");
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
|
StringBuilder builder = new StringBuilder();
|
if (StringUtil.isBlank(userId)) {
|
builder.append(" SELECT count(ID) NUM,PRIORITY_ID FROM SC_WORKFLOW_INCIDENT_LOCAL WHERE ");
|
builder.append(" CUSTOMER_ID = :cusId AND CREATE_TIME >= :startTime AND CREATE_TIME <= :endTime ");
|
builder.append(" GROUP BY PRIORITY_ID ");
|
} else {
|
builder.append(" SELECT count(q.ID) NUM,q.PRIORITY_ID FROM SC_WORKFLOW_INCIDENT_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 q.PRIORITY_ID ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(), params);
|
if (dataList != null && dataList.size() > 0) {
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List serieslist = new ArrayList();
|
for (Map data : dataList) {
|
dataMap.put(data.get("PRIORITY_ID").toString(), data);
|
}
|
List<Map> catelist = dataDictionaryService.getDataDictionaryByCategoryKey(Constants.EVENT_PRI);
|
for (Map cate : catelist) {
|
List tempList = new ArrayList();
|
tempList.add(cate.get("DATAVALUE").toString());
|
if (dataMap.get(cate.get("DATAKEY").toString()) != null) {
|
tempList.add(((Map) dataMap.get(cate.get("DATAKEY").toString())).get("NUM"));
|
} else {
|
tempList.add(0);
|
}
|
serieslist.add(tempList);
|
}
|
chartMap.put("seriesData", serieslist);
|
}
|
return chartMap;
|
}
|
@Override
|
public Map getLastMonthZcywServer(Map<String, String> params) {
|
Map chartMap = new HashMap();
|
Long endDay = DateUtil.getCurrentDate8();
|
Long startDay = DateUtil.getDateAdd(endDay, -30, 8);
|
String userId = params.get("userId");
|
params.put("startTime", startDay + "000000");
|
params.put("endTime", endDay + "600000");
|
StringBuilder builder = new StringBuilder();
|
if (StringUtil.isBlank(userId)) {
|
builder.append(" select count(ID) NUM,THIRD_CATEGORY_ID SERVER_ID from SC_WORKFLOW_INCIDENT_LOCAL where CUSTOMER_ID = :cusId ");
|
builder.append(" and CREATE_TIME>=:startTime and CREATE_TIME<=:endTime group by SERVER_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 ");
|
}
|
|
List<Map> dataList = baseDao.queryForList(builder.toString(), params);
|
if (dataList != null && dataList.size() > 0) {
|
builder.setLength(0);
|
builder.append(" SELECT C.ID SERVER_ID,C.CATEGORY_NAME SERVER_NAME FROM SC_SERVCE_CATEGORY C,SC_SERVCE_CATEGORY_CUSTOMER P ");
|
builder.append(" WHERE C.ID = P.CATEGORY_ID and C.LEVEL = 3 and C.STATE=1 ");
|
builder.append(" AND P.STATE = 1 AND P.CUSTOMER_ID = :cusId ORDER BY SERIAL ASC ");
|
List<Map> categoriesList = baseDao.queryForList(builder.toString(), params);
|
List<String> categories = new ArrayList<String>();
|
Map dataMap = new HashMap();
|
Map tempMap = new HashMap();
|
List<Map> series = new ArrayList<Map>();
|
tempMap.put("name", "数量");
|
List tempList = new ArrayList();
|
for (Map data : dataList) {
|
dataMap.put(data.get("SERVER_ID").toString(), data);
|
}
|
for (Map cate : categoriesList) {
|
categories.add(cate.get("SERVER_NAME").toString());
|
if (dataMap.get(cate.get("SERVER_ID").toString()) != null) {
|
tempList.add(((Map) dataMap.get(cate.get("SERVER_ID").toString())).get("NUM"));
|
} else {
|
tempList.add(0);
|
}
|
}
|
tempMap.put("data", tempList);
|
series.add(tempMap);
|
chartMap.put("categories", categories);
|
chartMap.put("series", series);
|
}
|
return chartMap;
|
}
|
@Override
|
public Map getZcywNum(Map<String, String> params) {
|
//驻场事件待响应
|
int dxycount = 0;
|
//驻场事件已超时
|
int ycscount = 0;
|
//驻场事件进行中
|
int jxzcount = 0;
|
params.put("state", "1");
|
dxycount = getOrederZcywNumDxy(params);
|
params.put("state", "2");
|
jxzcount = getOrederZcywNumJxz(params);
|
params.put("state", "3");
|
ycscount = getOrederZcywTimeoutCount(params);
|
|
Map map = new HashMap();
|
map.put("dxycount", dxycount);
|
map.put("jxzcount", jxzcount);
|
map.put("ycscount", ycscount);
|
return map;
|
}
|
@Override
|
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 ");
|
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)){
|
sqlpart.append(" AND B.CUSTOMER_ID=:customerId ");
|
}
|
sql.append(sqlpart);
|
sql.append(" GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
@Override
|
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 ");
|
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)){
|
sqlpart.append(" AND B.CUSTOMER_ID=:customerId ");
|
}
|
sql.append(sqlpart);
|
sql.append(" GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
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 ");
|
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"));
|
if(StringUtil.notEmpty(customerId)){
|
sqlpart.append(" AND B.CUSTOMER_ID=:customerId ");
|
}
|
sql.append(sqlpart);
|
sql.append(" GROUP BY B.ID ) D");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
|
return baseDao.queryForInteger(sql.toString(), params);
|
}
|
|
@Override
|
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 ");
|
if(state.equals("1")){
|
builder.append(",WORKFLOW_NODE N ");
|
}
|
builder.append(" WHERE WB.BUSINESS_ID = B.ID ");
|
if(state.equals("1")){
|
builder.append(" AND N.FLOWID=WB.ID AND N.FLOWSTATE=1 ");
|
}
|
builder.append(" AND WB.BUSINESSTYPE = :businessType ");
|
params.put("businessType", ConvertUtil.obj2StrBlank( Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
if(state.equals("0")){
|
builder.append(" and (B.ANSWER_TIMEOUT=1 or B.DEAL_TIMEOUT=1) and WB.WFSTATE=1 ");
|
}else if(state.equals("2")){
|
builder.append(" and WB.WFSTATE=1 ");
|
}else if(state.equals("3")){
|
builder.append(" and WB.WFSTATE=2 ");
|
}else if(state.equals("4")){
|
builder.append(" and WB.WFSTATE=4 ");
|
}
|
builder = getZcSql(builder,params);
|
if(state.equals("1")){
|
builder.append(" group by B.ID ");
|
}
|
builder.append( " ORDER BY WB.CREATETIME DESC ");
|
|
|
return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
}
|
|
@Override
|
public int zcywNodeCount(Map<String, String> params) {
|
StringBuilder builder = new StringBuilder();
|
String state=params.get("state");
|
if(state.equals("1")){
|
builder.append("select count(d.num) from (SELECT COUNT(WB.ID) num ");
|
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 ");
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
|
if(state.equals("0")){
|
builder.append(" and (B.ANSWER_TIMEOUT=1 or B.DEAL_TIMEOUT=1) and WB.WFSTATE=1 ");
|
}else if(state.equals("2")){
|
builder.append(" and WB.WFSTATE=1 ");
|
}else if(state.equals("3")){
|
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);
|
}
|
}
|