package cn.ksource.web.facade.change;
|
|
import cn.ksource.beans.*;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.JsonUtil;
|
import cn.ksource.core.util.NumberUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.SysInfoMsg;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.core.workflow.*;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.controller.wechat.util.WechatConstants;
|
import cn.ksource.web.entity.WorkFlowSupportEntity;
|
import cn.ksource.web.facade.dsl.DSLFacade;
|
import cn.ksource.web.facade.incident.IncidentFacade;
|
import cn.ksource.web.facade.message.MessageFacade;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
import cn.ksource.web.service.device.DeviceService;
|
import cn.ksource.web.service.file.FileService;
|
import cn.ksource.web.service.order.OrderService;
|
import cn.ksource.web.service.record.RecordService;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Service("changeFacade")
|
public class ChangeFacadeImpl implements ChangeFacade {
|
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private RecordService recordService;
|
|
@Autowired
|
private FileService fileService;
|
|
@Autowired
|
private WorkOrderCodeService workOrderCodeService;
|
|
@Autowired
|
private WorkFlowSupportService workFlowSupportService;
|
|
@Autowired
|
private WorkflowBusinessService workflowBusinessService;
|
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private DeviceService deviceService;
|
|
@Autowired
|
private IncidentFacade incidentFacade;
|
@Autowired
|
private DSLFacade dslFacade;
|
|
|
/**
|
* 保存变更基本信息
|
*/
|
@Override
|
public Map saveChange(HttpServletRequest request, SC_WORKFLOW_CHANGE sc_workflow_change) {
|
sc_workflow_change.setIs_sys_change(2);//硬件变更
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String sh = request.getParameter("sh");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
|
String 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];
|
}
|
|
Map<String, String> serviceUsers = new HashMap<String, String>();
|
String dealer = request.getParameter("dealer");
|
String[] dealerAry = dealer.split("-");
|
String dealId = dealerAry[0];
|
String dealName = dealerAry[1];
|
serviceUsers.put("USER_ID", dealId);
|
serviceUsers.put("USER_NAME", dealName);
|
String dealerType = "2";
|
if (!StringUtil.isEmpty(dealerType)) {
|
String state = "1";
|
String order_code = workOrderCodeService.getChangeOrderCode();
|
String partnerId = "";
|
long createTime = DateUtil.getCurrentDate14();
|
sc_workflow_change.setFirst_category_id(first_category_id).setFirst_category_name(first_category_name).setSecond_category_id(second_category_id)
|
.setSecond_category_name(second_category_name).setThird_category_id(third_category_id).setThird_category_name(third_category_name);
|
if (StringUtil.isBlank(sc_workflow_change.getId())) {
|
sc_workflow_change.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(createTime);
|
sc_workflow_change.setState(ConvertUtil.obj2Integer(state)).setFlow_name(sc_workflow_change.getName()).setOrder_code(order_code).setPartner_id(partnerId);
|
}
|
sc_workflow_change.insertOrUpdate();
|
String dealUserName = "";
|
if (dealerType.equals("1")) {
|
dealUserName = ConvertUtil.obj2StrBlank(serviceUsers.get("GROUP_NAME"));
|
} else {
|
dealUserName = ConvertUtil.obj2StrBlank(serviceUsers.get("USER_NAME"));
|
}
|
if ("1".equals(sh)) {
|
//获取当前所处的节点
|
Map flowMsg = getFlowMsg(flowId, userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//添加修改信息处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("修改变更:" + userName + "修改了变更信息");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeId).setNode_name(nodeName);
|
recordService.addRecord(record);
|
}
|
WORKFLOW_BASE base = new WORKFLOW_BASE();
|
if (!"2".equals(sh)) {
|
//发起标准变更流程
|
base = workflowBusinessService.startChangeWorkflow(sc_workflow_change.getId());
|
flowId = base.getId();
|
// 2017-9-13 标准变更流程修复 流程第一个节点由知识管理流程的节点 变更受理 变为 标准流程的第一个节点 变更申请
|
SqlParameter parameter=new SqlParameter("flowId",flowId).addValue("node_template_id",Constants.BGSQ)
|
.addValue("nodeName",Constants.getchangeNodeLabel(Constants.BGSQ))
|
.addValue("bz",request.getParameter("bz"));
|
baseDao.execute("update workflow_node set node_template_id=:node_template_id,nodename=:nodeName,deal_note=:bz where flowid=:flowId",parameter);
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("申请变更:" + userName + "申请了变更信息,受理人:" + dealName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setBusiness_id(flowId);
|
record.setDeal_user_name(userName);
|
recordService.addRecord(record);
|
|
} else {
|
base = new WORKFLOW_BASE(flowId).getInstanceById();
|
base.setWfname(sc_workflow_change.getName()).setWfnote(sc_workflow_change.getDescrip()).update();
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("变更修改:" + userName + "修改了变更信息,受理人:" + dealName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName + "完成了节点");
|
finishEntity.setDeal_note(userName + "完成了节点");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
}
|
|
Map param = new HashMap();
|
param.put("flowId", flowId);
|
//提交工单时添加关联工单
|
//先删除已存在的工单
|
baseDao.execute("DELETE FROM ORDER_REF_ORDER WHERE BUSINESS_ID = :flowId ", param);
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId,orderId,request);
|
|
//提交工单时上传文档附件
|
fileService.uploadFile(request, flowId, flowId, null, null);
|
// fileService.newuploadFileAll(request,flowId,userId, Constants.GG_FOLDERS_BGFOLDERS, Constants.FILE_STATE_SHTG,"",sc_workflow_change.getCustomer_id(),sc_workflow_change.getProject_id(),sc_workflow_change.getProject_name(),sc_workflow_change.getCustomer_name());
|
//提交工单时添加关联配置
|
//先删除已存在的配置
|
baseDao.execute("DELETE FROM CMDB_CI_REF_ORDER WHERE FLOW_ID = :flowId ", param);
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId,deviceId);
|
|
sc_workflow_change.setFlow_id(flowId);
|
List<Map> userMap = new ArrayList();
|
NodeDealEntity entity = new NodeDealEntity();
|
if ("2".equals(sh)) {//回退到申请环节后提交
|
dealerType = "2";
|
/*String nextNode = request.getParameter("nextNode");*/
|
|
/*WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById();
|
String node_template_id = beforenode.getNode_template_id();
|
String sql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :node_template_id AND IS_ADMIN = :is_admin order by createtime desc limit 1 ";
|
Map paramMap = new HashMap();
|
paramMap.put("flowid", beforenode.getFlowid());
|
paramMap.put("node_template_id", node_template_id);
|
paramMap.put("is_admin", "1");
|
Map nodeMap = baseDao.queryForMap(sql, paramMap);*/
|
Map map = new HashMap();
|
map.put("USER_ID", dealId);
|
map.put("USER_NAME", dealName);
|
map.put("IS_ADMIN", "1");
|
userMap.add(map);
|
entity.setDealerList(userMap);
|
dealUserName = ConvertUtil.obj2StrBlank(dealerAry[1]);
|
} else {
|
List<Map> users = new ArrayList<Map>();
|
Map uMap = new HashMap();
|
uMap.put("USER_ID", dealId);
|
uMap.put("USER_NAME", dealName);
|
uMap.put("IS_ADMIN", 1);
|
users.add(uMap);
|
entity.setDealerList(users);
|
|
Map tParam = new HashMap();
|
tParam.put("ID", StringUtil.getUUID());
|
tParam.put("WORKFLOWID", sc_workflow_change.getFlow_id());
|
tParam.put("PNAME", "处理人");
|
tParam.put("PVALUE", "1" + "&" + dealId + "-1");
|
baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", tParam);
|
|
}
|
entity.setDealer_type(ConvertUtil.obj2Integer(dealerType));
|
workflowCoreService.toNode(base, Constants.BGSL, entity);
|
//发送消息
|
resultMap.put("result", 1);
|
} else {
|
resultMap.put("nouser", "1");
|
}
|
return resultMap;
|
|
}
|
|
/**
|
* 通过orderid获取流程信息
|
*/
|
@Override
|
public Map getFlowMsg(String flowId, String userId) {
|
String selectSql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowId AND CURRENT_DEALER_ID = :userId AND FLOWSTATE <> 3 ";
|
return baseDao.queryForMap(selectSql, new SqlParameter("flowId", flowId).addValue("userId", userId));
|
}
|
|
@Override
|
public int queryMyChangeCount(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
Map<String, String> jsMap = WebUtil.getLoginUser(request).getRoleMap();
|
Map paramMap = new HashMap();
|
|
StringBuilder builder = new StringBuilder();
|
paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
paramMap.put("userId", userId);
|
|
|
/**
|
* 查询逻辑
|
* 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
String flowstate = request.getParameter("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.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jddcl ");
|
builder.append(")D");
|
paramMap.put("jddcl", Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE);
|
} else if (flowstate.equals("2")) {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
|
builder.append(")D");
|
paramMap.put("jdjxz", Constants.WORKFLOW_NODE_FLOWSTATE_DOING);
|
} else {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
|
builder.append(")D");
|
paramMap.put("jdywc", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH);
|
}
|
} else {
|
builder.append(" SELECT DISTINCT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
}
|
builder.append(" WHERE 1=1 ");
|
|
String project_Id = request.getParameter("project_Id");
|
if (!StringUtil.isEmpty(project_Id)) {
|
builder.append(" AND D.PROJECT_ID = :project_Id ");
|
paramMap.put("project_Id", project_Id);
|
}
|
String customerId = request.getParameter("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
paramMap.put("customerId", customerId);
|
}
|
String subCustomerId = request.getParameter("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
paramMap.put("subCustomerId", subCustomerId);
|
}
|
|
String status = request.getParameter("status");
|
if (StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
paramMap.put("status", status);
|
}
|
|
String orderName = request.getParameter("orderName");
|
if (StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
paramMap.put("orderName", "%" + orderName + "%");
|
}
|
|
|
String hjName = request.getParameter("hjName");
|
if (StringUtil.notEmpty(hjName)) {
|
builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
|
paramMap.put("hjName", "%" + hjName + "%");
|
}
|
|
String orderCode = request.getParameter("orderCode");
|
if (StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
paramMap.put("orderCode", "%" + orderCode + "%");
|
}
|
|
String customerName = request.getParameter("customerName");
|
if (StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
paramMap.put("customerName", "%" + customerName + "%");
|
}
|
|
String contract = request.getParameter("contract");
|
if (StringUtil.notEmpty(contract)) {
|
builder.append(" AND D.CONTACT_NAME LIKE :contract ");
|
paramMap.put("contract", "%" + contract + "&");
|
}
|
|
String pri = request.getParameter("pri");
|
if (StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if (pris.length == 1) {
|
builder.append(" AND D.RISK_LEVEL_ID = :priority_id");
|
paramMap.put("priority_id", pris[0]);
|
} else {
|
builder.append(" AND D.RISK_LEVEL_ID IN (");
|
for (int i = 0; i < pris.length; i++) {
|
builder.append(" :pri" + i);
|
builder.append(",");
|
paramMap.put("pri" + i, pris[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String source = request.getParameter("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
builder.append(" AND D.SOURCE_ID = :type_id");
|
paramMap.put("type_id", sources[0]);
|
} else {
|
builder.append(" AND D.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
builder.append(" :type" + i);
|
builder.append(",");
|
paramMap.put("type" + i, sources[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String sl = request.getParameter("sl");
|
if (StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if (sls.length == 1) {
|
builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id");
|
paramMap.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(",");
|
paramMap.put("third_category_id" + i, sls[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String business = ConvertUtil.obj2Str(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE);
|
|
builder.append(" AND D.BUSINESSTYPE = " + business);
|
|
StringBuilder newBuild = new StringBuilder();
|
newBuild.append("SELECT COUNT(*) FROM ( ");
|
newBuild.append(builder.toString());
|
newBuild.append(") E");
|
|
return baseDao.queryForInteger(newBuild.toString(), paramMap);
|
}
|
|
@Override
|
public List queryMyChangeData(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
Map<String, String> jsMap = WebUtil.getLoginUser(request).getRoleMap();
|
Map paramMap = new HashMap();
|
|
StringBuilder builder = new StringBuilder();
|
paramMap.put("ysc", Constants.WORKFLOW_BASE_WFSTATE_DELETE);
|
paramMap.put("userId", userId);
|
|
|
/**
|
* 查询逻辑
|
* 1.如果节点状态选择为全部,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的,
|
* 但查询出来的数据会有重复,因为一个节点我可以处理多次,这样查询出来会有重复的工单,需要过滤,如果同一个工单 有待处理,已处理 或者进行中,已处理,则显示待处理 或进行中,不显示已处理 (待处理和进行中是不会同时存在的)
|
* 2.如果节点状态选择为待处理,则查询节点表中处理人是我的,或者处理角色是我的并且没有分配处理人的 (不需要过滤,因为一个工单待处理节点,只会有一个)
|
* 3.如果节点状态选择为进行中,则查询节点表中处理人是我的 (不需要过滤,因为一个工单进行中节点,只会有一个)
|
* 4.如果节点状态查询未已处理,则查询节点表中处理人是我的,需要过滤(因为一个节点一个人可以处理多次,通过节点表作为主表查询出来的工单会有重复)
|
*/
|
|
String flowstate = request.getParameter("flowstate");
|
if (StringUtil.notEmpty(flowstate)) {
|
if (flowstate.equals("1")) {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT C.RISK_LEVEL_NAME,C.CREATE_TIME,B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
builder.append(" AND D.FLOWSTATE = :jddcl ");
|
paramMap.put("jddcl", Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE);
|
} else if (flowstate.equals("2")) {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT C.RISK_LEVEL_NAME,C.CREATE_TIME,B.*,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdjxz");
|
builder.append(")D");
|
paramMap.put("jdjxz", Constants.WORKFLOW_NODE_FLOWSTATE_DOING);
|
} else {
|
builder.append(" SELECT D.* FROM ( ");
|
builder.append(" SELECT DISTINCT C.RISK_LEVEL_NAME,B.*,C.CREATE_TIME,A.FLOWSTATE,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId AND A.FLOWSTATE = :jdywc ");
|
builder.append(")D");
|
paramMap.put("jdywc", Constants.WORKFLOW_NODE_FLOWSTATE_FINISH);
|
}
|
} else {
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT C.RISK_LEVEL_NAME,B.*,A.FLOWSTATE,C.CREATE_TIME,C.NAME,C.CONTACT_NAME,C.RISK_LEVEL_ID,C.THIRD_CATEGORY_ID,C.SOURCE_ID,C.TYPE AS CHANGETYPE FROM WORKFLOW_NODE A,WORKFLOW_BASE B,SC_WORKFLOW_CHANGE C WHERE A.FLOWID = B.ID AND B.BUSINESS_ID = C.ID AND A.CURRENT_DEALER_ID = :userId ");
|
builder.append(")D");
|
}
|
builder.append(" WHERE 1=1 ");
|
|
String project_Id = request.getParameter("project_Id");
|
if (!StringUtil.isEmpty(project_Id)) {
|
builder.append(" AND D.PROJECT_ID = :project_Id ");
|
paramMap.put("project_Id", project_Id);
|
}
|
String customerId = request.getParameter("customerId");
|
if (StringUtil.notEmpty(customerId)) {
|
builder.append(" AND D.CUSTOMER_ID = :customerId ");
|
paramMap.put("customerId", customerId);
|
}
|
String subCustomerId = request.getParameter("subCustomerId");
|
if (StringUtil.notEmpty(subCustomerId)) {
|
builder.append(" AND D.SUB_CUSTOMER_ID = :subCustomerId ");
|
paramMap.put("subCustomerId", subCustomerId);
|
}
|
|
String status = request.getParameter("status");
|
if (StringUtil.notEmpty(status)) {
|
builder.append(" AND D.WFSTATE = :status ");
|
paramMap.put("status", status);
|
}
|
|
String orderName = request.getParameter("orderName");
|
if (StringUtil.notEmpty(orderName)) {
|
builder.append(" AND D.WFNAME LIKE :orderName ");
|
paramMap.put("orderName", "%" + orderName + "%");
|
}
|
|
|
String hjName = request.getParameter("hjName");
|
if (StringUtil.notEmpty(hjName)) {
|
builder.append(" AND D.CURRENT_NODE_NAME LIKE :hjName ");
|
paramMap.put("hjName", "%" + hjName + "%");
|
}
|
|
String orderCode = request.getParameter("orderCode");
|
if (StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND D.ORDER_CODE LIKE :orderCode");
|
paramMap.put("orderCode", "%" + orderCode + "%");
|
}
|
|
String customerName = request.getParameter("customerName");
|
if (StringUtil.notEmpty(customerName)) {
|
builder.append(" AND D.CUSTOMER_NAME LIKE :customerName ");
|
paramMap.put("customerName", "%" + customerName + "%");
|
}
|
|
|
String contract = request.getParameter("contract");
|
if (StringUtil.notEmpty(contract)) {
|
builder.append(" AND D.CONTACT_NAME LIKE :contract ");
|
paramMap.put("contract", "%" + contract + "%");
|
}
|
|
String pri = request.getParameter("pri");
|
if (StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if (pris.length == 1) {
|
builder.append(" AND D.RISK_LEVEL_ID = :priority_id");
|
paramMap.put("priority_id", pris[0]);
|
} else {
|
builder.append(" AND D.RISK_LEVEL_ID IN (");
|
for (int i = 0; i < pris.length; i++) {
|
builder.append(" :pri" + i);
|
builder.append(",");
|
paramMap.put("pri" + i, pris[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String source = request.getParameter("source");
|
if (StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if (sources.length == 1) {
|
builder.append(" AND D.SOURCE_ID = :type_id");
|
paramMap.put("type_id", sources[0]);
|
} else {
|
builder.append(" AND D.SOURCE_ID IN (");
|
for (int i = 0; i < sources.length; i++) {
|
builder.append(" :type" + i);
|
builder.append(",");
|
paramMap.put("type" + i, sources[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
|
String sl = request.getParameter("sl");
|
if (StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if (sls.length == 1) {
|
builder.append(" AND D.THIRD_CATEGORY_ID = :third_category_id");
|
paramMap.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(",");
|
paramMap.put("third_category_id" + i, sls[i]);
|
}
|
builder.deleteCharAt(builder.lastIndexOf(","));
|
builder.append(")");
|
}
|
}
|
|
String startDate = request.getParameter("startDate");
|
if (StringUtil.notEmpty(startDate)) {
|
builder.append(" AND D.CREATE_TIME >= :startDate ");
|
paramMap.put("startDate", startDate + "000000");
|
}
|
|
String endDate = request.getParameter("endDate");
|
if (StringUtil.notEmpty(startDate)) {
|
builder.append(" AND D.CREATE_TIME <= :endDate ");
|
paramMap.put("endDate", endDate + "666666");
|
}
|
|
String business = ConvertUtil.obj2Str(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE);
|
builder.append(" AND D.BUSINESSTYPE = " + business);
|
|
String pageSize = request.getParameter("pageSize");
|
String currPage = request.getParameter("currPage");
|
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(), paramMap);
|
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;
|
}
|
return resultList.subList(bin, end);
|
} else {
|
builder.append(" ORDER BY D.CREATETIME DESC ");
|
List<Map> result = baseDao.queryforSplitPage(request, builder.toString(), paramMap);
|
return result;
|
}
|
}
|
|
@Override
|
public Map getChangeMsgById(String orderId) {
|
Map changeMap = new SC_WORKFLOW_CHANGE(orderId).getBeanMapById();
|
//查询当前节点能是否能关闭工单
|
Map param = new HashMap();
|
param.put("partnerId", changeMap.get("PARTNER_ID"));
|
param.put("projectId", changeMap.get("PROJECT_ID"));
|
param.put("rolu_type", changeMap.get("TYPE"));
|
changeMap.put("closejd", "");
|
changeMap.put("backjd", "");
|
return changeMap;
|
}
|
|
@Override
|
public Map queryChangeBaseMsg(String partnerId, String orderId) {
|
String selectSql = "SELECT A.*,N.ANSWER_TIME FROM SC_WORKFLOW_CHANGE 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 AND A.PARTNER_ID = :partnerId ";
|
Map baseMap = baseDao.queryForMap(selectSql, new SqlParameter("orderId", orderId).addValue("partnerId", partnerId));
|
if (null != baseMap && baseMap.size() > 0) {
|
//查询附件
|
List<Map> files = fileService.getFileList(orderId);
|
baseMap.put("files", files);
|
}
|
return baseMap;
|
}
|
|
public String anwerSubmit(HttpServletRequest request) {
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(request.getParameter("flowId")).getInstanceById();
|
|
WORKFLOW_NODE node = new WORKFLOW_NODE(request.getParameter("nodeId")).getInstanceById();
|
NodeAnswerEntity entity = new NodeAnswerEntity();
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
entity.setUser_id(user.get("ID").toString());
|
entity.setUser_name(user.get("ZSXM").toString());
|
boolean result = workflowCoreService.answerNode(base, node, entity);
|
//工单响应
|
if (!result) {
|
return "2";
|
} else {
|
return "1";
|
}
|
|
}
|
|
@Override
|
public Map getPsResult(String orderId) {
|
SC_WORKFLOW_CHANGE change = new SC_WORKFLOW_CHANGE(orderId).getInstanceById();
|
String pssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :psnode_template_id ORDER BY DEALTIME ";
|
String sssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :ssnode_template_id ORDER BY DEALTIME ";
|
String sspssql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :sspsnode_template_id ORDER BY DEALTIME ";
|
Map param = new HashMap();
|
param.put("flowid", change.getFlow_id());
|
param.put("psnode_template_id", Constants.CCBSP);
|
param.put("ssnode_template_id", Constants.BGSH);
|
param.put("sspsnode_template_id", Constants.BGHG);
|
List<Map> psList = baseDao.queryForList(pssql, param);
|
List<Map> ssList = baseDao.queryForList(sssql, param);
|
List<Map> sspsList = baseDao.queryForList(sspssql, param);
|
String psstarttime = "";
|
String psendtime = "";
|
String psuser = "";
|
String psresult = "";
|
String ssstarttime = "";
|
String ssendtime = "";
|
String ssuser = "";
|
String ssresult = "";
|
String sspsstarttime = "";
|
String sspsendtime = "";
|
String sspsuser = "";
|
String sspsresult = "";
|
if (psList.size() > 0) {
|
for (Map map : psList) {
|
if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) {
|
psstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
psendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME"));
|
psresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE"));
|
}
|
psuser = psuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ",";
|
}
|
psuser = psuser.substring(0, psuser.length() - 1);
|
}
|
if (ssList.size() > 0) {
|
for (Map map : ssList) {
|
if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) {
|
ssstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
ssendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME"));
|
ssresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE"));
|
}
|
ssuser = ssuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ",";
|
}
|
ssuser = ssuser.substring(0, ssuser.length() - 1);
|
}
|
if (sspsList.size() > 0) {
|
for (Map map : sspsList) {
|
if ("1".equals(ConvertUtil.obj2StrBlank(map.get("IS_ADMIN")))) {
|
sspsstarttime = ConvertUtil.obj2StrBlank(map.get("ANSWER_TIME"));
|
sspsendtime = ConvertUtil.obj2StrBlank(map.get("DEALTIME"));
|
sspsresult = ConvertUtil.obj2StrBlank(map.get("DEAL_NOTE"));
|
}
|
sspsuser = sspsuser + ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME")) + ",";
|
}
|
sspsuser = sspsuser.substring(0, sspsuser.length() - 1);
|
}
|
|
Map result = new HashMap();
|
result.put("psstarttime", psstarttime);
|
result.put("psendtime", psendtime);
|
result.put("psuser", psuser);
|
result.put("psresult", psresult);
|
result.put("ssstarttime", ssstarttime);
|
result.put("ssendtime", ssendtime);
|
result.put("ssuser", ssuser);
|
result.put("ssresult", ssresult);
|
result.put("sspsstarttime", sspsstarttime);
|
result.put("sspsendtime", sspsendtime);
|
result.put("sspsuser", sspsuser);
|
result.put("sspsresult", sspsresult);
|
return result;
|
}
|
|
@Override
|
public Map getCcbRule(String proId, String partner_id) {
|
Map param = new HashMap();
|
param.put("project_id", proId);
|
param.put("partner_id", partner_id);
|
|
String sql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE PROJECT_ID = :project_id ";
|
Map ccbMap = baseDao.queryForMap(sql, param);
|
if (StringUtil.isEmpty(ConvertUtil.obj2StrBlank(ccbMap.get("ID")))) {
|
String sqlpartner = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE PROJECT_ID IS NULL AND PARTNER_ID = :partner_id ";
|
ccbMap = baseDao.queryForMap(sqlpartner, param);
|
}
|
return ccbMap;
|
}
|
|
@Override
|
public Map saveCcbEndResult(HttpServletRequest request) {
|
|
String flowId = request.getParameter("flowId");
|
String resolve = request.getParameter("resolve");
|
String suggest = request.getParameter("suggest");
|
String proId = request.getParameter("projectId");
|
String nodeId = request.getParameter("nodeId");
|
String partnerId = "";
|
|
//ccb评审规则
|
Map ccbrule = getCcbRule(proId, partnerId);
|
double bfjpz = 0;
|
double bfb = 0;
|
int is_tg = 0;
|
if (!StringUtil.isEmpty(ConvertUtil.obj2StrBlank(ccbrule.get("ID")))) {
|
|
String userId = WebUtil.getLoginedUserId(request);
|
String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM"));
|
//保存评审结果
|
|
Map param = new HashMap();
|
param.put("flow_id", flowId);
|
param.put("create_id", userId);
|
// baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND CREATE_ID =:create_id ", param);
|
|
SC_WORKFLOW_CHANGE_CCBRESULT result = new SC_WORKFLOW_CHANGE_CCBRESULT();
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
String sameKey = node.getSame_node_key();
|
param.put("sameKey", sameKey);
|
String sqla = "SELECT MAX(NUM) FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID=:flow_id";
|
String number = baseDao.queryForString(sqla, param);
|
String sqlb = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey";
|
Map mapr = baseDao.queryForMap(sqlb, param);
|
int num = 0;
|
if (number == null) {
|
num = 1;
|
} else {
|
num = Integer.parseInt(number) + 1;
|
}
|
param.put("num", num);
|
if (mapr.size() > 0) {
|
num = ConvertUtil.obj2Int(mapr.get("NUM"));
|
}
|
result.setFlow_id(flowId).setResult(ConvertUtil.obj2Integer(resolve)).setSuggest(suggest)
|
.setIs_end(2).setIs_main(1).setCreate_id(userId).setCreate_name(userName)
|
.setSamekey(sameKey).setNum(num).insert();
|
//获取所有评审结果
|
List<Map> ccbList = getCcbResult(flowId);
|
List<Map> ccb = (List<Map>) ccbList.get(ccbList.size() - 1).get("result");
|
int count = 0;
|
for (Map map : ccb) {
|
|
if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) {
|
bfjpz = ConvertUtil.obj2Double(ccbrule.get("BFJ"));
|
//计算通过百分比
|
if (ConvertUtil.obj2Integer(map.get("RESULT")) == 1) {
|
count = count + 1;
|
}
|
}
|
}
|
if(ccb.size()>0){
|
if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) {
|
bfb = NumberUtil.div(ConvertUtil.obj2Double(count), ConvertUtil.obj2Double(ccb.size()), 3);
|
bfb = NumberUtil.mul(bfb, 100.0);
|
if (bfb >= bfjpz) {
|
is_tg = 1;
|
}
|
ccbrule.put("is_tg", is_tg);
|
}
|
}
|
// baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND IS_END = 1 ", param);
|
|
SC_WORKFLOW_CHANGE_CCBRESULT resultmain = new SC_WORKFLOW_CHANGE_CCBRESULT();
|
if (ConvertUtil.obj2Integer(ccbrule.get("TGTJ")) == 2) {
|
if (is_tg == 1) {
|
resultmain.setResult(1);
|
if (bfb == bfjpz) {
|
resultmain.setSuggest("通过率为" + bfb + "%,等于" + bfjpz + "%,评审通过");
|
} else if (bfb > bfjpz) {
|
resultmain.setSuggest("通过率为" + bfb + "%,大于" + bfjpz + "%,评审通过");
|
}
|
} else {
|
resultmain.setResult(2);
|
resultmain.setSuggest("通过率为" + bfb + "%,小于" + bfjpz + "%,评审不通过");
|
}
|
|
} else {
|
if ("1".equals(resolve)) {
|
resultmain.setResult(1);
|
resultmain.setSuggest("主负责人通过则评审通过");
|
} else {
|
resultmain.setResult(2);
|
resultmain.setSuggest("主负责人不通过则评审不通过");
|
}
|
}
|
resultmain.setIs_main(2).setFlow_id(flowId).setIs_end(1).setCreate_name("系统生成").
|
setSamekey(sameKey).setNum(num).insert();
|
} else {
|
ccbrule.put("norule", "1");
|
}
|
return ccbrule;
|
}
|
|
@Override
|
public List<Map> getCcbResult(String flowId) {
|
String sqla = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY ORDER BY NUM ";
|
List<Map> fzList = baseDao.queryForList(sqla, new SqlParameter("flow_id", flowId));
|
for (Map mapa : fzList) {
|
String sqlb = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey ORDER BY IS_END ,IS_MAIN";
|
List<Map> ccbList = baseDao.queryForList(sqlb, new SqlParameter("sameKey", mapa.get("SAMEKEY")));
|
for (Map map : ccbList) {
|
if (ConvertUtil.obj2Integer(map.get("RESULT")) == 1) {
|
map.put("RESULT_TEXT", "通过");
|
} else if (ConvertUtil.obj2Integer(map.get("RESULT")) == 2) {
|
map.put("RESULT_TEXT", "不通过");
|
}
|
if (ConvertUtil.obj2Integer(map.get("IS_END")) == 1) {
|
map.put("IS_END_TEXT", "是");
|
} else if (ConvertUtil.obj2Integer(map.get("IS_END")) == 2) {
|
map.put("IS_END_TEXT", "否");
|
}
|
}
|
mapa.put("result", ccbList);
|
}
|
return fzList;
|
}
|
|
@Override
|
public List<Map> getCcbTjResult(String flowId) {
|
Map param = new HashMap();
|
param.put("flow_id", flowId);
|
String sqla="SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id GROUP BY SAMEKEY ORDER BY NUM";
|
List<Map> ccbList = baseDao.queryForList(sqla,param);
|
for(Map mapa:ccbList){
|
param.put("sameKey", mapa.get("SAMEKEY"));
|
String sql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY = :sameKey ";
|
List<Map> resultList = baseDao.queryForList(sql,param);
|
//通过人数
|
int tgnum = 0;
|
//反对人数
|
int fdnum = 0;
|
//通过率
|
double tgrate = 0;
|
//评审结果
|
int result = 0 ;
|
//处理结果数量
|
int resultNum = 0 ;
|
for(Map map:resultList){
|
if(ConvertUtil.obj2Integer(map.get("RESULT"))==1 && ConvertUtil.obj2Integer(map.get("IS_END"))!=1){
|
tgnum = tgnum + 1;
|
}else if(ConvertUtil.obj2Integer(map.get("RESULT"))==2 && ConvertUtil.obj2Integer(map.get("IS_END"))!=1){
|
fdnum = fdnum + 1;
|
}
|
if(ConvertUtil.obj2Integer(map.get("IS_END"))==1){
|
result = ConvertUtil.obj2Integer(map.get("RESULT"));
|
}
|
}
|
//主负责人没处理
|
if(result == 0){
|
resultNum = resultList.size();
|
}else{
|
resultNum = resultList.size()-1;
|
}
|
if(resultNum != 0){
|
//CCB评审人数
|
String sqlcount = "SELECT DISTINCT CURRENT_DEALER_ID FROM WORKFLOW_NODE WHERE FLOWID = :flow_id AND NODE_TEMPLATE_ID = :node_template_id AND SAME_NODE_KEY=:sameKey";
|
param.put("node_template_id", Constants.CCBSP);
|
List<Map> usercount = baseDao.queryForList(sqlcount, param);
|
tgrate = NumberUtil.div(ConvertUtil.obj2Double(tgnum),ConvertUtil.obj2Double(usercount.size()) , 3);
|
tgrate = NumberUtil.mul(tgrate, 100.0);
|
}
|
Map resultMap = new HashMap();
|
mapa.put("tgnum", tgnum);
|
mapa.put("tgrate", tgrate);
|
mapa.put("result", result);
|
mapa.put("fdnum", fdnum);
|
}
|
return ccbList;
|
}
|
|
@Override
|
public String issave(HttpServletRequest request) {
|
String nodeId = request.getParameter("nodeId");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
|
List<Map> nodeList = baseDao.queryForList("select * from WORKFLOW_NODE where FLOWID=:FLOWID and NODE_TEMPLATE_ID=:NODE_TEMPLATE_ID and FLOWSTATE <> 3 and ID <> :NODEID",
|
new SqlParameter("FLOWID",node.getFlowid()).addValue("NODEID", nodeId).addValue("NODE_TEMPLATE_ID", node.getNode_template_id()));
|
String result="";
|
|
//如果存在其他环节,且当前环节是主负责人,不可以关闭
|
if (nodeList.size() > 0 && node.getIs_admin() != null) {
|
for(Map map:nodeList){
|
result+=ConvertUtil.obj2StrBlank(map.get("CURRENT_DEALER_NAME"))+",";
|
}
|
}else if(nodeList.size() == 0 && node.getIs_admin() == 1){
|
result = "0";
|
}else {
|
result = "2";
|
}
|
return result;
|
}
|
|
|
public Map getCurrentNode(String flowId) {
|
String selectSql = "SELECT B.NODE_TEMPLATE_ID FROM WORKFLOW_BASE A,WORKFLOW_NODE B WHERE A.CURRENT_NODE_ID = B.ID AND A.ID = :id";
|
return baseDao.queryForMap(selectSql,new SqlParameter("id",flowId));
|
}
|
|
@Override
|
public Map updateAssign(HttpServletRequest request) {
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
String partnerId = "";
|
String id = request.getParameter("flowId");
|
String selectUser = request.getParameter("alluserid");
|
String usertype = request.getParameter("type");
|
String nextnodeid = request.getParameter("node");
|
String bz = request.getParameter("bz");
|
String resolve = request.getParameter("resolve");
|
String result = request.getParameter("result");
|
|
String release_order = request.getParameter("release_order");
|
String is_notice = request.getParameter("is_notice");
|
String curnodeId = request.getParameter("curnodeId");
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById();
|
SC_WORKFLOW_CHANGE mychange = new SC_WORKFLOW_CHANGE(base.getBusiness_id()).getInstanceById();
|
|
//获取当前所处的节点
|
Map flowMsg = getFlowMsg(id,userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
|
String dealUserId = new String();
|
String dealUserName = new String();
|
String state = new String();
|
String type = new String();
|
|
String node_template_id = Constants.BGSQ;
|
if(StringUtil.notEmpty(selectUser)) {
|
if(usertype.equals("3")){
|
usertype = "1";
|
}
|
node_template_id = nextnodeid;
|
Map param = new HashMap();
|
param.put("ID", StringUtil.getUUID());
|
param.put("WORKFLOWID", id);
|
param.put("PNAME", "处理人");
|
param.put("PVALUE", usertype+"&"+selectUser);
|
state = "1";
|
}
|
if(StringUtil.notEmpty(selectUser)) {
|
//执行分派任务
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
List<Map> dealerList = new ArrayList<Map>();
|
if(usertype.equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
String[] userList2 = selectUser.split(",");
|
for(int i=0;i<userList2.length;i++){
|
String dealId = userList2[i].split("-")[0];
|
String dealName = userList2[i].split("-")[1];
|
|
Map map = new HashMap();
|
if(userList2[i].split("-").length == 3){
|
map.put("USER_ID", dealId);
|
map.put("IS_ADMIN", "1");
|
map.put("USER_NAME", dealName);
|
dealUserName += dealName+",";
|
}else{
|
map.put("USER_ID", dealId);
|
map.put("USER_NAME", dealName);
|
dealUserName += dealName+",";
|
}
|
|
dealerList.add(map);
|
}
|
dealUserName = dealUserName.substring(0, dealUserName.length()-1);
|
|
}
|
entity.setDealerList(dealerList);
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
|
finishEntity.setDeal_note(bz);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
|
String hours = request.getParameter("hours");
|
boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
|
if (canFinish) {
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
}
|
|
//更新问题状态
|
Map param = new HashMap();
|
param.put("state", state);
|
param.put("orderId", base.getBusiness_id());
|
param.put("resolve", resolve);
|
param.put("result", result);
|
param.put("release_id", release_order);
|
param.put("userId", userId);
|
param.put("userName", userName);
|
param.put("resolveTime", DateUtil.getCurrentDate14());
|
String updateIncidentSql = "UPDATE SC_WORKFLOW_CHANGE SET STATE = :state ";
|
if(!StringUtil.isEmpty(resolve)){
|
updateIncidentSql += ",RESOLVE = :resolve,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime ";
|
}
|
if(!StringUtil.isEmpty(release_order)){
|
updateIncidentSql += ",RELEASE_ID = :release_id ";
|
}
|
if("1".equals(resolve)){
|
updateIncidentSql += ",SSBZ = :result ";
|
}else if("2".equals(resolve)){
|
updateIncidentSql += ",HTBZ = :result ";
|
}
|
updateIncidentSql += " WHERE ID = :orderId ";
|
baseDao.execute(updateIncidentSql, param);
|
|
|
//增加问题处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("指派任务:"+userName+"将变更指派给了"+dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(id);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
recordService.addRecord(record);
|
//发送消息
|
resultMap.put("result", 1);
|
type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
}
|
SysInfoMsg msg = new SysInfoMsg(type,dealUserName,Constants.changeNode.get(node_template_id));
|
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
@Override
|
public void updatecloseChange(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
//修改变更信息的解决方式
|
SC_WORKFLOW_CHANGE question = new SC_WORKFLOW_CHANGE(orderId).getInstanceById();
|
question.setId(orderId).setResolve_type_name("CCB评审不通过").setState(1).update();
|
|
//添加处理记录
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
//获取当前所处的节点
|
Map flowMsg = getFlowMsg(flowId,createUserId);
|
String curnodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//添加修改信息处理记录
|
String id = StringUtil.getUUID();
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("CCB评审不通过,关闭了变更工单");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(createUserId);
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(curnodeid).setNode_name(nodeName);
|
|
recordService.addRecord(record);
|
//fileService.uploadFile(request, id, flowId, null, null);
|
//fileService.newuploadFile(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",question.getCustomer_id(),question.getProject_id(),question.getProject_name(),question.getCustomer_name());
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(createUserName+"结束节点");
|
finishEntity.setDeal_note(createUserName+"结束节点");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
//关闭节点
|
workflowCoreService.finishNode(base,node , finishEntity);
|
//关闭工单
|
workflowCoreService.closeWorkFlow(base);
|
}
|
|
@Override
|
public SysInfoMsg doSendToStart(Map<String, String> params) {
|
String flowId = params.get("flowId");
|
String nodeId = params.get("nodeId");
|
String userId = params.get("userId");
|
String userName = params.get("userName");
|
params.put("templateId", Constants.BGSQ);
|
String sql = " select b.business_id,n.current_dealer_id,n.current_dealer_name from workflow_base b,workflow_node n where b.id = n.flowid" +
|
" and b.id = :flowId and n.node_template_id = :templateId order by n.createtime limit 1 ";
|
Map startNode = baseDao.queryForMap(sql.toString(), params);
|
String orderId = ConvertUtil.obj2StrBlank(startNode.get("business_id"));
|
String dealId = ConvertUtil.obj2StrBlank(startNode.get("current_dealer_id"));
|
String dealName = ConvertUtil.obj2StrBlank(startNode.get("current_dealer_name"));
|
List<Map> userList = new ArrayList<Map>();
|
Map<String, String> user = new HashMap<String, String>();
|
user.put("USER_ID",dealId);
|
user.put("USER_NAME",dealName);
|
user.put("IS_ADMIN","1");
|
userList.add(user);
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNextUserList(userList);
|
support.setOrderId(orderId);
|
support.setNextNodeTemplateId(Constants.BGSQ);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
return msg;
|
}
|
|
@Override
|
public Map queryChangeCcbConfig(HttpServletRequest request) {
|
String selectSql = "SELECT * FROM SC_WORKFLOW_CHANGE_CCBRULE WHERE CUSTOMER_ID IS NULL AND PROJECT_ID IS NULL AND PARTNER_ID = :partner_id ";
|
Map map = baseDao.queryForMap(selectSql,new SqlParameter("partner_id",""));
|
return map;
|
}
|
|
@Override
|
public void saveChangeCcbConfig(HttpServletRequest request) {
|
String tgtj = request.getParameter("tgtj");
|
String tgbfj = request.getParameter("tgbfj");
|
String lzfa = request.getParameter("lzfa");
|
String updateSql = "";
|
String id = request.getParameter("id");
|
if(StringUtil.isEmpty(id)){
|
id = StringUtil.getUUID();
|
updateSql = "INSERT INTO SC_WORKFLOW_CHANGE_CCBRULE(ID,TGTJ,BFJ,LZFA,PARTNER_ID) VALUES(:id,:tgtj,:tgbfj,:lzfa,:partner_id)";
|
} else {
|
updateSql = "UPDATE SC_WORKFLOW_CHANGE_CCBRULE SET TGTJ = :tgtj,BFJ=:tgbfj,LZFA=:lzfa WHERE ID = :id ";
|
}
|
Map paramMap = new HashMap();
|
paramMap.put("id", id);
|
paramMap.put("tgtj", tgtj);
|
paramMap.put("tgbfj", tgbfj);
|
paramMap.put("lzfa", lzfa);
|
paramMap.put("partner_id", "");
|
|
baseDao.execute(updateSql, paramMap);
|
}
|
|
@Override
|
public Map getNextNode(String flowId) {
|
Map nodeMap = new HashMap();
|
nodeMap.put("userId", "");
|
nodeMap.put("userName", "");
|
StringBuilder sql = new StringBuilder("select b.node_template_id from workflow_base a,workflow_node b where a.current_node_id = b.id and a.id = :flowId ORDER BY b.CREATETIME DESC");
|
String templateId = baseDao.queryForString(sql.toString(), new SqlParameter("flowId", flowId));
|
if (templateId.equals(Constants.BGSQ)) {
|
nodeMap.put("nodeId", Constants.BGSL);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSL));
|
}else if(templateId.equals(Constants.BGSL)) {
|
nodeMap.put("nodeId", Constants.CCBSP);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.CCBSP));
|
}else if(templateId.equals(Constants.CCBSP)) {
|
nodeMap.put("nodeId", Constants.BGSP);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSP));
|
}else if(templateId.equals(Constants.BGSP)) {
|
sql.setLength(0);
|
//查询创建人
|
Map<String,String> user = queryUserByTemplateId(flowId,Constants.BGSQ);
|
nodeMap.put("userId", user.get("current_dealer_id"));
|
nodeMap.put("userName", user.get("current_dealer_name"));
|
nodeMap.put("nodeId", Constants.BGZX);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGZX));
|
}else if(templateId.equals(Constants.BGZX)) {
|
nodeMap.put("nodeId", Constants.BGSH);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGSH));
|
}else if(templateId.equals(Constants.BGSH)) {
|
Map<String,String> user = queryUserByTemplateId(flowId,Constants.BGSL);
|
nodeMap.put("userId", user.get("current_dealer_id"));
|
nodeMap.put("userName", user.get("current_dealer_name"));
|
nodeMap.put("nodeId", Constants.BGHG);
|
nodeMap.put("nodeName", Constants.getchangeNodeLabel(Constants.BGHG));
|
}
|
return nodeMap;
|
}
|
|
public Map<String,String> queryUserByTemplateId(String flowId,String templateId){
|
String sql = " select n.current_dealer_id,n.current_dealer_name from workflow_base b,workflow_node n where b.id = n.flowid" +
|
" and b.id=:flowId and n.node_template_id = :templateId and is_admin=1 order by n.createtime DESC limit 1 ";
|
SqlParameter sqlParameter = new SqlParameter();
|
sqlParameter.addValue("templateId", templateId)
|
.addValue("flowId", flowId);
|
return baseDao.queryForMap(sql, sqlParameter);
|
}
|
|
@Override
|
public void orderSubmit(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
String solveWay = "";
|
String solveWayName = request.getParameter("solveWayName");
|
String solve = request.getParameter("solve");
|
if (solve.equals("1")) {
|
solveWay = request.getParameter("solveWay");
|
} else {
|
solveWay = request.getParameter("solveWay1");
|
}
|
String content = request.getParameter("content");
|
String state = "";
|
if ("1".equals(solve)) {
|
state = Constants.SC_WORKFLOW_CHANGE_STATE_YJJ;
|
} else {
|
state = Constants.SC_WORKFLOW_CHANGE_STATE_YGB;
|
}
|
//修改变更信息的解决方式
|
SC_WORKFLOW_CHANGE change = new SC_WORKFLOW_CHANGE(orderId).getInstanceById();
|
change.setId(orderId).setResolve(ConvertUtil.obj2Integer(solve)).setResolve_type_id(solveWay).setResolve_type_name(solveWayName).setState(ConvertUtil.obj2Integer(state)).update();
|
|
//添加处理记录
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
//获取当前所处的节点
|
Map flowMsg = getFlowMsg(flowId, createUserId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//添加修改信息处理记录
|
String id = StringUtil.getUUID();
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("结束变更:" + createUserName + "结束了变更工单");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(createUserId);
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
recordService.addRecord(record);
|
fileService.uploadFile(request, id, flowId, null, null);
|
fileService.newuploadFileAll(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",change.getCustomer_id(),change.getProject_id(),change.getProject_name(),change.getCustomer_name());
|
/*if("1".equals(solve)){
|
//流程结束,将变更中的配置信息存档,修改正式库中的信息,并将相应的正式库的版本号+1
|
propformFacade.updateConfigMsg(flowId);
|
//配置关系保存到记录表-结束工单
|
saveRelationWhenClose(flowId);
|
//保存配置关系-结束工单
|
updateRelationWhenFinish(flowId);
|
//删除变更中的配置关系-结束工单
|
delRelationWhenClose(flowId);
|
|
//保存DSL资料修改
|
saveDsl(flowId);
|
|
//保存关联DSL变更到记录表--结束工单
|
dslFacade.saveConfigDslDealRecord(flowId);
|
//保存关联DSL-结束工单
|
dslFacade.updateConfigDslWhenFinish(flowId);
|
}else{
|
//配置关系保存到记录表-关闭工单
|
saveRelationWhenClose(flowId);
|
//删除变更中的配置关系-关闭工单
|
delRelationWhenClose(flowId);
|
//保存关联DSL变更到记录表--关闭工单
|
dslFacade.saveConfigDslDealRecord(flowId);
|
//恢复关联DSL-关闭工单
|
dslFacade.updateConfigDslWhenClose(flowId);
|
|
//恢复DSL资料
|
delDslMsg(flowId);
|
}*/
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(createUserName + "结束节点");
|
finishEntity.setDeal_note(content);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
|
if ("1".equals(solve)) {
|
workflowCoreService.finishWorkFlow(base);
|
} else {
|
workflowCoreService.closeWorkFlow(base);
|
}
|
}
|
|
@Override
|
public void saveRelationWhenClose(String flowId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("flowId", flowId);
|
//变更中的操作记录
|
String sql = "SELECT * FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId AND DEAL_TYPE IS NOT NULL ";
|
List<Map> recordList = baseDao.queryForList(sql,param);
|
List<SqlParameter> addparamList = new ArrayList();
|
for(Map map:recordList){
|
SqlParameter params = new SqlParameter();
|
params.putAll(map);
|
String id = StringUtil.getUUID();
|
params.put("ID", id);
|
params.put("MAINCIID", map.get("MAINID"));
|
if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 2){
|
if(!ConvertUtil.obj2Integer(map.get("RELATION_TYPE")).equals(ConvertUtil.obj2Integer(map.get("AFTER_RELATION_TYPE")))){
|
addparamList.add(params);
|
}
|
}else{
|
addparamList.add(params);
|
}
|
}
|
//新增配置变更记录
|
baseDao.executeBatch("INSERT INTO CMDB_CI_RELATION_RECORD(ID,MAINCIID,SUBCIID,BUSINESS_ID,DEAL_TYPE,RELATION_TYPE,AFTER_RELATION_TYPE,DEALER_ID,DEALER_NAME,UPDATE_TIME) VALUES(:ID,:MAINCIID,:SUBCIID,:BUSINESS_ID,:DEAL_TYPE,:RELATION_TYPE,:AFTER_RELATION_TYPE,:DEALER_ID,:DEALER_NAME,:CREATE_TIME) ", addparamList);
|
}
|
|
@Override
|
public List<Map> changeLzRecord(String flowId) {
|
String selectSql = "SELECT DISTINCT N.* FROM WORKFLOW_NODE N WHERE FLOWID = :flowId AND N.IS_ADMIN = 1 ORDER BY CREATETIME 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 void delRelationWhenClose(String flowId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("flowId", flowId);
|
|
//新增配置变更记录
|
baseDao.execute("DELETE FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId ", param);
|
}
|
|
@Override
|
public void updateRelationWhenFinish(String flowId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("flowId", flowId);
|
//变更中的操作记录
|
String sql = "SELECT * FROM CMDB_CI_RELATION_ING WHERE BUSINESS_ID = :flowId AND DEAL_TYPE IS NOT NULL ";
|
List<Map> recordList = baseDao.queryForList(sql,param);
|
List<SqlParameter> addparamList = new ArrayList();
|
List<SqlParameter> updparamList = new ArrayList();
|
List<SqlParameter> delparamList = new ArrayList();
|
for(Map map:recordList){
|
SqlParameter params = new SqlParameter();
|
params.putAll(map);
|
params.put("MAINCIID", map.get("MAINID"));
|
|
if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 1){
|
String id = StringUtil.getUUID();
|
params.put("ID", id);
|
params.put("STATE", 1);
|
addparamList.add(params);
|
} else if(ConvertUtil.obj2Integer(map.get("DEAL_TYPE")) == 2){
|
if(!ConvertUtil.obj2Integer(map.get("RELATION_TYPE")).equals(ConvertUtil.obj2Integer(map.get("AFTER_RELATION_TYPE")))){
|
updparamList.add(params);
|
}
|
}else{
|
delparamList.add(params);
|
}
|
}
|
//保存配置关系变更
|
baseDao.executeBatch("DELETE FROM CMDB_CI_RELATION WHERE MAINCIID = :MAINCIID AND SUBCIID = :SUBCIID ", delparamList);
|
baseDao.executeBatch("UPDATE CMDB_CI_RELATION SET RELATION = :AFTER_RELATION_TYPE WHERE MAINCIID = :MAINCIID AND SUBCIID = :SUBCIID ", updparamList);
|
baseDao.executeBatch("INSERT INTO CMDB_CI_RELATION(ID,MAINCIID,SUBCIID,BUSINESS_ID,RELATION,STATE,CREATE_TIME) VALUES(:ID,:MAINCIID,:SUBCIID,:BUSINESS_ID,:AFTER_RELATION_TYPE,:STATE,:CREATE_TIME) ", addparamList);
|
}
|
|
@Override
|
public List queryChangeOrderList(HttpServletRequest request) {
|
|
String partner_id = "";
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
sql.append("SELECT B.DESCRIP,WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE,C.FLOWSTATE ,WB.CURRENT_DEALER_NAME,B.RISK_LEVEL_NAME, ");
|
sql.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.SUB_CUSTOMER_NAME,WB.PROJECT_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE ");
|
sql.append(" FROM SC_WORKFLOW_CHANGE B ,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID AND WB.CURRENT_NODE_ID = C.ID ");
|
sqlpart.append(" WHERE WB.BUSINESS_ID = B.ID ");
|
Map paramMap = new HashMap();
|
String business = ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE);
|
|
sqlpart.append(" AND WB.BUSINESSTYPE = "+business);
|
//========================================================================不同服务台的权限控制
|
|
//只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台)
|
List<Map> customers = incidentFacade.getCustomerList();
|
String project_Id = request.getParameter("project_Id");
|
String customerid = request.getParameter("customerId");
|
|
if(!StringUtil.isEmpty(project_Id)){
|
sqlpart.append(" AND B.PROJECT_ID = :project_Id ");
|
paramMap.put("project_Id",project_Id);
|
}
|
if(StringUtil.notEmpty(customerid)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
paramMap.put("customerId", customerid);
|
}
|
|
|
//========================================================================不同服务台的权限控制
|
|
String subCustomerId = request.getParameter("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
paramMap.put("subCustomerId", subCustomerId);
|
}
|
|
String orderName = request.getParameter("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
paramMap.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = request.getParameter("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
paramMap.put("orderCode", "%"+orderCode+"%");
|
}
|
|
|
String contract = request.getParameter("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
paramMap.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = request.getParameter("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.RISK_LEVEL_ID = :priority_id");
|
paramMap.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.RISK_LEVEL_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
paramMap.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String source = request.getParameter("source");
|
if(StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if(sources.length==1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
paramMap.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for(int i=0; i<sources.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
paramMap.put("type"+i, sources[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String sl = request.getParameter("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
paramMap.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
paramMap.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
String status = request.getParameter("status");
|
sql.append(sqlpart);
|
sql.append( " ORDER BY WB.CREATETIME DESC ");
|
return baseDao.queryforSplitPage(request, sql.toString(), paramMap);
|
}
|
|
@Override
|
public int queryChangeOrderCount(HttpServletRequest request) {
|
StringBuilder sql = new StringBuilder();
|
StringBuilder sqlpart = new StringBuilder();
|
String partner_id = "";
|
sql.append("SELECT COUNT(WB.ID) FROM SC_WORKFLOW_CHANGE B,WORKFLOW_BASE WB LEFT JOIN WORKFLOW_NODE C ON C.FLOWID = WB.ID AND WB.CURRENT_NODE_ID = C.ID AND C.FLOWSTATE <> 3 " );
|
sqlpart.append("WHERE WB.BUSINESS_ID = B.ID ");
|
|
Map paramMap = new HashMap();
|
//========================================================================不同服务台的权限控制
|
|
//只有服务台和管理人员才可以看到所有的工单,(所以查询当前的用户属于那种服务台)
|
List<Map> customers = incidentFacade.getCustomerList();
|
String project_Id = request.getParameter("project_Id");
|
String customerid = request.getParameter("customerId");
|
|
if(!StringUtil.isEmpty(project_Id)){
|
sqlpart.append(" AND B.PROJECT_ID = :project_Id ");
|
paramMap.put("project_Id",project_Id);
|
}
|
if(StringUtil.notEmpty(customerid)) {
|
sqlpart.append(" AND B.CUSTOMER_ID = :customerId ");
|
paramMap.put("customerId", customerid);
|
}
|
|
String subCustomerId = request.getParameter("subCustomerId");
|
if(StringUtil.notEmpty(subCustomerId)) {
|
sqlpart.append(" AND B.SUB_CUSTOMER_ID = :subCustomerId ");
|
paramMap.put("subCustomerId", subCustomerId);
|
}
|
|
String orderName = request.getParameter("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
sqlpart.append(" AND B.NAME LIKE :orderName ");
|
paramMap.put("orderName", "%"+orderName+"%");
|
}
|
|
String orderCode = request.getParameter("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
sqlpart.append(" AND B.ORDER_CODE LIKE :orderCode ");
|
paramMap.put("orderCode", "%"+orderCode+"%");
|
}
|
|
String contract = request.getParameter("contract");
|
if(StringUtil.notEmpty(contract)) {
|
sqlpart.append(" AND B.CONTACT_NAME LIKE :contract ");
|
paramMap.put("contract", "%"+contract+"%");
|
}
|
|
|
String pri = request.getParameter("pri");
|
if(StringUtil.notEmpty(pri)) {
|
String[] pris = pri.split(",");
|
if(pris.length==1) {
|
sqlpart.append(" AND B.RISK_LEVEL_ID = :priority_id");
|
paramMap.put("priority_id", pris[0]);
|
} else {
|
sqlpart.append(" AND B.RISK_LEVEL_ID IN (");
|
for(int i=0; i<pris.length; i++) {
|
sqlpart.append(" :pri"+i);
|
sqlpart.append(",");
|
paramMap.put("pri"+i, pris[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
String source = request.getParameter("source");
|
if(StringUtil.notEmpty(source)) {
|
String[] sources = source.split(",");
|
if(sources.length==1) {
|
sqlpart.append(" AND B.SOURCE_ID = :type_id");
|
paramMap.put("type_id", sources[0]);
|
} else {
|
sqlpart.append(" AND B.SOURCE_ID IN (");
|
for(int i=0; i<sources.length; i++) {
|
sqlpart.append(" :type"+i);
|
sqlpart.append(",");
|
paramMap.put("type"+i, sources[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
String sl = request.getParameter("sl");
|
if(StringUtil.notEmpty(sl)) {
|
String[] sls = sl.split(",");
|
if(sls.length==1) {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID = :third_category_id");
|
paramMap.put("third_category_id", sls[0]);
|
} else {
|
sqlpart.append(" AND B.THIRD_CATEGORY_ID IN (");
|
for(int i=0; i<sls.length; i++) {
|
sqlpart.append(" :third_category_id"+i);
|
sqlpart.append(",");
|
paramMap.put("third_category_id"+i, sls[i]);
|
}
|
sqlpart.deleteCharAt(sqlpart.lastIndexOf(","));
|
sqlpart.append(")");
|
}
|
}
|
|
|
paramMap.put("partner_id", partner_id);
|
String business = ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_CHANGE);
|
|
sqlpart.append(" AND WB.BUSINESSTYPE = "+business);
|
String status = request.getParameter("status");
|
sql.append(sqlpart);
|
return baseDao.queryForInteger(sql.toString(),paramMap);
|
}
|
|
@Override
|
public Map gobackNodeSubmit(HttpServletRequest request) {
|
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
String orderId = request.getParameter("orderId");
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(3);
|
finishEntity.setDeal_note_title(userName+"回退了节点");
|
finishEntity.setDeal_note(request.getParameter("backReason"));
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
/*WORKFLOW_NODE beforenode = new WORKFLOW_NODE(node.getSource_node_instance_id()).getInstanceById();
|
String node_template_id = beforenode.getNode_template_id();*/
|
//回退到变更发起环节
|
String nodeTemplateId = Constants.BGSQ;
|
//Map nodeMap = getBeforeNodeMsg(nodeId);
|
String sql = " select n.NODE_TEMPLATE_ID,b.BUSINESS_ID,n.CURRENT_DEALER_ID,n.CURRENT_DEALER_NAME from workflow_base b,workflow_node n where b.id = n.flowid" +
|
" and b.id = :flowId and n.node_template_id = :nodeTemplateId order by n.createtime limit 1 ";
|
SqlParameter parameter = new SqlParameter();
|
parameter.put("nodeTemplateId",nodeTemplateId );
|
parameter.put("flowId",flowId );
|
Map nodeMap = baseDao.queryForMap(sql.toString(), parameter);
|
|
List<Map> nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key()));
|
//回退时,关闭所有节点
|
for(Map nodes:nodesList){
|
WORKFLOW_NODE nodeid = new WORKFLOW_NODE(ConvertUtil.obj2StrBlank(nodes.get("ID")));
|
nodeid.setDealtime(ConvertUtil.obj2Long(nodes.get("DEALTIME"))).setAnswer_time(ConvertUtil.obj2Long(nodes.get("ANSWER_TIME")));
|
workflowCoreService.finishNode(base,nodeid , finishEntity);
|
}
|
|
String state = "1";
|
//更新状态
|
String updateSql = "UPDATE SC_WORKFLOW_CHANGE SET STATE = :state WHERE ID = :questionId ";
|
baseDao.execute(updateSql, new SqlParameter("state",state).addValue("questionId", orderId));
|
|
List<Map> list = new ArrayList<Map>();
|
Map map = new HashMap();
|
map.put("USER_ID", nodeMap.get("CURRENT_DEALER_ID"));
|
map.put("USER_NAME", nodeMap.get("CURRENT_DEALER_NAME"));
|
map.put("IS_ADMIN", "1");
|
list.add(map);
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setBefore_Dealer_type(2);
|
entity.setDealer_type(2);
|
entity.setDealerList(list);
|
entity.setFlow_type(2);
|
entity.setSource_node_instance_id(node.getId());
|
//回退到上一节点
|
workflowCoreService.toNode(base, ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID")), entity);
|
Map resultMap = new HashMap();
|
SysInfoMsg msg = new SysInfoMsg("2",ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME")),Constants.changeNode.get(ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID"))));
|
resultMap.put("msg", msg);
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("回退变更:"+userName+"回退了变更工单,节点处理人:"+ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME")));
|
record.setBusiness_id(flowId);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_name(userName);
|
recordService.addRecord(record);
|
return resultMap;
|
}
|
|
@Override
|
public int getDslLinkCiCount(HttpServletRequest request) {
|
String dslId = request.getParameter("id");
|
String flowId = request.getParameter("flowId");
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
String sql = "";
|
if(base!=null){
|
if(base.getWfstate()==1){
|
sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId AND A.FLOW_ID = :flowId AND A.STATE <> 3 ";
|
}else{
|
sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId ";
|
}
|
}else{
|
sql = "SELECT COUNT(A.ID) FROM CMDB_DSL_LINK A WHERE A.DSL_ID = :dslId AND A.FLOW_ID = :flowId AND A.STATE <> 3 ";
|
}
|
|
Map param = new HashMap();
|
param.put("dslId", dslId);
|
param.put("flowId", flowId);
|
int count = baseDao.queryForInteger( sql, param);
|
return count;
|
}
|
|
@Override
|
public PageInfo getDslLinkCiData(HttpServletRequest request) {
|
String dslId = request.getParameter("dslId");
|
String flowId = request.getParameter("flowId");
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
String sql = "";
|
if(base!=null){
|
if(base.getWfstate()==1){
|
sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE B.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE B.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE B.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_DSL_LINK A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.DSL_ID = :dslId AND A.FLOW_ID = :flowId ";
|
}else{
|
sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE B.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE B.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE B.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_DSL_LINK A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.DSL_ID = :dslId ";
|
}
|
}else{
|
sql = "SELECT A.*,B.CINAME,B.SEARCHCODE SEACHCODE,B.STATE USINGSTATE,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE B.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE B.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE B.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_DSL_LINK A,CMDB_CI_BASE B WHERE A.CI_ID = B.ID AND A.DSL_ID = :dslId AND A.FLOW_ID = :flowId ";
|
}
|
|
Map param = new HashMap();
|
param.put("dslId", dslId);
|
param.put("flowId", flowId);
|
PageInfo info = baseDao.queryforSplitPageInfo(request, sql, param);
|
return info;
|
}
|
|
@Override
|
public int queryDslVersionCount(HttpServletRequest request) {
|
StringBuilder builder = new StringBuilder("SELECT COUNT(A.ID) FROM DSL_VERSION A WHERE A.DSL_ID = :dslId ");
|
|
String dslId = request.getParameter("dslId");
|
|
Map paramMap = new HashMap();
|
paramMap.put("dslId", dslId);
|
int count = baseDao.queryForInteger(builder.toString(), paramMap);
|
return count;
|
}
|
|
@Override
|
public PageInfo queryDslVersionData(HttpServletRequest request) {
|
StringBuilder builder = new StringBuilder("SELECT A.*,B.WFNAME FROM DSL_VERSION A LEFT JOIN WORKFLOW_BASE B ON A.CREATE_FLOW_ID = B.ID WHERE A.DSL_ID = :dslId ORDER BY A.CREATE_TIME DESC ");
|
|
String dslId = request.getParameter("dslId");
|
|
Map paramMap = new HashMap();
|
paramMap.put("dslId", dslId);
|
PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
|
|
return pageInfo;
|
}
|
|
@Override
|
public int queryDslConfigRecordCount(HttpServletRequest request,
|
String versionId) {
|
String flowId = request.getParameter("flowId");
|
String id = request.getParameter("id");
|
StringBuilder builder = new StringBuilder("SELECT COUNT(B.ID) FROM DSL_CONFIG_FILE_CHANGE_DETAIL B WHERE B.DSL_VERSION_ID = :versionId AND B.FLOW_ID = :flowId ");
|
Map paramMap = new HashMap();
|
paramMap.put("versionId", versionId);
|
paramMap.put("flowId", flowId);
|
if(StringUtil.notEmpty(id)) {
|
builder.append(" AND SECOND_CONFIG_CATE = :folderId ");
|
paramMap.put("folderId", id);
|
}
|
|
|
int count = baseDao.queryForInteger(builder.toString(), paramMap);
|
|
return count;
|
}
|
|
@Override
|
public PageInfo queryDslConfigRecordData(HttpServletRequest request,
|
String versionId) {
|
|
String flowId = request.getParameter("flowId");
|
String id = request.getParameter("id");
|
StringBuilder builder = new StringBuilder("SELECT B.*,A.FILE_NAME,A.FILE_SIZE,A.USER_NAME,A.CREATE_TIME FROM DSL_CONFIG_FILE A,DSL_CONFIG_FILE_CHANGE_DETAIL B WHERE B.FILE_ID = A.ID AND B.DSL_VERSION_ID = :versionId AND B.FLOW_ID = :flowId ");
|
Map paramMap = new HashMap();
|
paramMap.put("versionId", versionId);
|
paramMap.put("flowId", flowId);
|
if(StringUtil.notEmpty(id)) {
|
builder.append(" AND SECOND_CONFIG_CATE = :folderId ");
|
paramMap.put("folderId", id);
|
}
|
|
builder.append(" ORDER BY A.CREATE_TIME DESC ");
|
|
PageInfo pageInfo = baseDao.queryforSplitPageInfo(request, builder.toString(), paramMap);
|
|
List<Map> files = pageInfo.getDatas();
|
if(null!=files && files.size()>0) {
|
for(Map file : files) {
|
file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
|
}
|
}
|
return pageInfo;
|
}
|
|
@Override
|
public List<Map> getDslciData(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String dslId = request.getParameter("dslId");
|
String projectId = request.getParameter("proId");
|
|
/*if(!StringUtil.notEmpty(projectId)) {
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
projectId = base.getProject_id();
|
}*/
|
Map param = new HashMap();
|
param.put("project_id", projectId);
|
param.put("flow_id", flowId);
|
param.put("dsl_id", dslId);
|
|
StringBuffer sql1 = new StringBuffer("select * from (SELECT 1 AS UPDTYPE, A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND A.ID NOT IN (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE B.DSL_ID = :dsl_id )");//A.LEIX = 1 AND
|
|
StringBuffer sql2 = new StringBuffer("SELECT 2 AS UPDTYPE,A.*,(SELECT E.NAME FROM CMDB_CI_CATEGORY E WHERE A.LV1_ID = E.ID) AS FIRSTLEVELNAME,(SELECT C.NAME FROM CMDB_CI_CATEGORY C WHERE A.LV2_ID = C.ID) AS SECONDLEVELNAME,(SELECT D.NAME FROM CMDB_CI_CATEGORY D WHERE A.LV3_ID = D.ID) AS THIRDLEVELNAME FROM CMDB_CI_BASE A WHERE A.STATE = 1 AND A.ID IN (SELECT B.CI_ID FROM CMDB_DSL_LINK B WHERE B.FLOW_ID IS NULL AND B.DSL_ID = :dsl_id )");
|
sql1.append(" UNION ALL ");
|
|
sql1.append(sql2);
|
sql1.append(" ) s where 1 = 1");
|
String searchCode = request.getParameter("searchCode");
|
if(StringUtil.notEmpty(searchCode)) {
|
sql1.append(" AND SEARCHCODE LIKE :searchCode ");
|
param.put("searchCode", "%"+searchCode+"%");
|
}
|
|
String ciName = request.getParameter("cmdbName");
|
if(StringUtil.notEmpty(ciName)) {
|
sql1.append(" AND CINAME LIKE :cmdbName ");
|
param.put("cmdbName", "%"+ciName+"%");
|
}
|
|
String cate = request.getParameter("categoryId");
|
if(StringUtil.notEmpty(cate)) {
|
sql1.append(" AND LV3_ID = :cate ");
|
param.put("cate", cate);
|
}
|
List<Map> cilist = baseDao.queryForList(sql1.toString(),param);
|
return cilist;
|
}
|
|
@Override
|
public String deleteDslci(HttpServletRequest request) {
|
String id = request.getParameter("id");
|
CMDB_DSL_LINK dslci = new CMDB_DSL_LINK(id).getInstanceById();
|
if(dslci.getState() == 2){
|
dslci.setState(null).setNew_version_id(dslci.getDsl_version_id())
|
.setFlow_id(null).setDealer_id(null).setDealer_name(null).setUpdate_time(null).update();
|
}else{
|
dslci.deleteById();
|
}
|
return "1";
|
}
|
|
@Override
|
public String saveDslci(HttpServletRequest request) {
|
String ids = request.getParameter("devices");
|
String dslId = request.getParameter("dslId");
|
String flowId = request.getParameter("flowId");
|
//获取最新版本
|
String newvesion = "SELECT A.*,C.EDITION,C.VER_ID FROM PROJECT_DSL A LEFT JOIN (SELECT B.DSL_ID,B.EDITION,B.ID AS VER_ID FROM DSL_VERSION B WHERE B.DSL_ID = :id ORDER BY B.CREATE_TIME DESC LIMIT 0,1 ) C ON A.ID = C.DSL_ID WHERE A.ID = :id ";
|
Map vesion = baseDao.queryForMap(newvesion, new SqlParameter("id",dslId));
|
String insertSql = "INSERT INTO CMDB_DSL_LINK(ID,DSL_VERSION_ID,CI_ID,DSL_ID,NEW_VERSION_ID,STATE,FLOW_ID,DEALER_ID,DEALER_NAME,UPDATE_TIME) VALUES (:id,:dsl_version_id,:ci_id,:dsl_id,:new_version_id,:state,:flow_id,:dealer_id,:dealer_name,:update_time)";
|
String updSql = "UPDATE CMDB_DSL_LINK SET NEW_VERSION_ID = :new_version_id,STATE = 2 ,DEALER_ID = :dealer_id,DEALER_NAME= :dealer_name,UPDATE_TIME= :update_time, FLOW_ID = :flow_id WHERE DSL_ID = :dsl_id AND CI_ID = :ci_id ";
|
long create_time = DateUtil.getCurrentDate14();
|
List<SqlParameter> listParams = new ArrayList<SqlParameter>();
|
List<SqlParameter> updParams = new ArrayList<SqlParameter>();
|
|
String[] linkIds = ids.split(",");
|
|
String userId = "";
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
List<SqlParameter> listParamsRecord = new ArrayList<SqlParameter>();
|
|
for(String linkId : linkIds) {
|
SqlParameter sqlParameter = new SqlParameter();
|
String citype[] = linkId.split("-");
|
sqlParameter.put("id", StringUtil.getUUID());
|
sqlParameter.put("dsl_version_id", vesion.get("VER_ID"));
|
sqlParameter.put("ci_id", citype[0]);
|
sqlParameter.put("dsl_id", dslId);
|
sqlParameter.put("new_version_id", vesion.get("VER_ID"));
|
sqlParameter.put("flow_id", flowId);
|
sqlParameter.put("dealer_id", userId);
|
sqlParameter.put("dealer_name", userName);
|
sqlParameter.put("update_time", create_time);
|
if("1".equals(citype[1])){
|
sqlParameter.put("state", 1);
|
listParams.add(sqlParameter);
|
}else{
|
updParams.add(sqlParameter);
|
}
|
|
}
|
|
baseDao.executeBatch(insertSql,listParams);
|
baseDao.executeBatch(updSql,updParams);
|
|
return "1";
|
}
|
|
@Override
|
public List changeFileReport(HttpServletRequest request) {
|
String partnerId = "";
|
String flowId = request.getParameter("flowId");
|
Map paramMap = new HashMap();
|
paramMap.put("flowId", flowId);
|
|
String selectSql = "SELECT A.*,B.FILE_NAME,B.FILE_SIZE,B.USER_NAME AS UPLOAD_USER FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_CONFIG_FILE B WHERE A.FILE_ID = B.ID AND A.FLOW_ID = :flowId ";
|
List<Map> records = baseDao.queryForList(selectSql,paramMap);
|
|
Map cacheRecord = new HashMap();
|
if(null!=records && records.size()>0) {
|
|
for(Map record : records) {
|
String versionId = ConvertUtil.obj2StrBlank(record.get("DSL_VERSION_ID"));
|
String first_config_cate = ConvertUtil.obj2StrBlank(record.get("first_config_cate"));
|
String second_config_cate = ConvertUtil.obj2StrBlank(record.get("SECOND_CONFIG_CATE"));
|
String unitKey = versionId+"-"+first_config_cate+"-"+second_config_cate;
|
record.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(record.get("FILE_SIZE"))));
|
if(cacheRecord.containsKey(unitKey)) {
|
List list = (List)cacheRecord.get(unitKey);
|
list.add(record);
|
} else {
|
List list = new ArrayList();
|
list.add(record);
|
cacheRecord.put(unitKey, list);
|
}
|
}
|
}
|
|
|
|
|
|
StringBuilder selectCateSql = new StringBuilder("SELECT B.ID AS VERSION_ID,A.FIRST_CONFIG_CATE,(SELECT A1.NAME FROM DSL_CONFIG A1 WHERE A.FIRST_CONFIG_CATE = A1.ID) AS FIRST_NAME,A.SECOND_CONFIG_CATE,(SELECT A2.NAME FROM DSL_CONFIG A2 WHERE A.SECOND_CONFIG_CATE = A2.ID) AS SECOND_NAME FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId GROUP BY B.ID,A.FIRST_CONFIG_CATE,A.SECOND_CONFIG_CATE");
|
List<Map> cates = baseDao.queryForList(selectCateSql.toString(),paramMap);
|
if(cates.size()==0){
|
selectCateSql = new StringBuilder("SELECT B.ID AS VERSION_ID FROM DSL_VERSION B,PROJECT_DSL C WHERE B.DSL_ID = C.ID AND B.CREATE_FLOW_ID = :flowId GROUP BY B.ID");
|
cates = baseDao.queryForList(selectCateSql.toString(),paramMap);
|
}
|
if(cates.size()==0){
|
selectCateSql = new StringBuilder("SELECT C.* FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId ");
|
cates = baseDao.queryForList(selectCateSql.toString(),paramMap);
|
}
|
|
Map cacheFirst = new HashMap();
|
|
Map version = new HashMap();
|
|
|
if(null!=cates && cates.size()>0) {
|
for(Map cate : cates) {
|
String versionId = ConvertUtil.obj2StrBlank(cate.get("VERSION_ID"));
|
String first_config_cate = ConvertUtil.obj2StrBlank(cate.get("FIRST_CONFIG_CATE"));
|
|
String unitKey = versionId+"-"+first_config_cate;
|
|
String first_name = ConvertUtil.obj2StrBlank(cate.get("FIRST_NAME"));
|
String second_config_cate = ConvertUtil.obj2StrBlank(cate.get("SECOND_CONFIG_CATE"));
|
String second_name = ConvertUtil.obj2StrBlank(cate.get("SECOND_NAME"));
|
|
List result = new ArrayList();
|
if(version.containsKey(versionId)) {
|
result = (List)version.get(versionId);
|
} else {
|
version.put(versionId, result);
|
}
|
|
|
if(cacheFirst.containsKey(unitKey)) {
|
List secondCates = (List)cacheFirst.get(unitKey);
|
Map secondMap = new HashMap();
|
secondMap.put("second_config_cate", second_config_cate);
|
secondMap.put("second_name", second_name);
|
|
String key = unitKey+"-"+second_config_cate;
|
secondMap.put("files", cacheRecord.get(key));
|
|
|
secondCates.add(secondMap);
|
} else {
|
Map firstMap = new HashMap();
|
firstMap.put("key", unitKey);
|
firstMap.put("first_name", first_name);
|
|
List secondCates = new ArrayList();
|
Map secondMap = new HashMap();
|
secondMap.put("second_config_cate", second_config_cate);
|
secondMap.put("second_name", second_name);
|
|
String key = unitKey+"-"+second_config_cate;
|
secondMap.put("files", cacheRecord.get(key));
|
|
|
secondCates.add(secondMap);
|
|
firstMap.put("seconds", secondCates);
|
|
cacheFirst.put(unitKey,secondCates);
|
result.add(firstMap);
|
}
|
}
|
}
|
|
|
|
|
String selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_CONFIG_FILE_CHANGE_DETAIL A,DSL_VERSION B,PROJECT_DSL C WHERE A.DSL_VERSION_ID = B.ID AND B.DSL_ID = C.ID AND A.FLOW_ID = :flowId GROUP BY C.ID,B.ID");
|
List<Map> versions = baseDao.queryForList(selectVersionSql,paramMap);
|
|
if(versions.size()==0){
|
selectVersionSql = new String("SELECT C.DSL_SEARCHCODE,C.ID AS DSL_ID,C.DSL_NAME,B.ID AS VERSION_ID,B.EDITION,(SELECT B1.EDITION FROM DSL_VERSION B1 WHERE B.LAST_VERSION = B1.ID) AS LAST_VERSION FROM DSL_VERSION B,PROJECT_DSL C WHERE B.DSL_ID = C.ID AND B.CREATE_FLOW_ID = :flowId GROUP BY B.ID");
|
versions = baseDao.queryForList(selectVersionSql.toString(),paramMap);
|
}
|
if(versions.size()==0){
|
selectVersionSql = new String("SELECT C.*,C.ID AS DSL_ID FROM PROJECT_DSL C WHERE C.FLOW_ID = :flowId ");
|
versions = baseDao.queryForList(selectVersionSql.toString(),paramMap);
|
}
|
|
List<Map> resultList = new ArrayList<Map>();
|
|
Map cacheDsl = new HashMap();
|
|
if(null!=versions && versions.size()>0) {
|
for(Map ver : versions) {
|
String dsl_searchcode = ConvertUtil.obj2StrBlank(ver.get("DSL_SEARCHCODE"));
|
String dsl_id = ConvertUtil.obj2StrBlank(ver.get("DSL_ID"));
|
String dsl_name = ConvertUtil.obj2StrBlank(ver.get("DSL_NAME"));
|
String version_id = ConvertUtil.obj2StrBlank(ver.get("VERSION_ID"));
|
String edition = ConvertUtil.obj2StrBlank(ver.get("EDITION"));
|
String last_version = ConvertUtil.obj2StrBlank(ver.get("LAST_VERSION"));
|
String dslId = ConvertUtil.obj2StrBlank(ver.get("DSL_ID"));
|
Map v = new HashMap();
|
v.put("version_id", version_id);
|
v.put("edition", edition);
|
|
List<Map> cs = (List<Map>)version.get(version_id);
|
System.out.println("vs------->"+JsonUtil.list2Json(cs));
|
int totalNum = 0;
|
//查询三级分类展示成列表的需要占的表格数
|
for(Map yj : cs) {
|
int num = 0;
|
List<Map> ejList = (List<Map>)(yj.get("seconds"));
|
if(null!=ejList && ejList.size()>0) {
|
for(Map ej :ejList) {
|
List sjList = (List)ej.get("files");
|
if(sjList != null&&sjList.size() >0){
|
int sjNum = sjList.size();
|
if(sjNum>0) {
|
num = num+sjNum;
|
ej.put("sjNum", sjNum);
|
} else {
|
num = num+1;
|
ej.put("sjNum", 1);
|
}
|
}else{
|
num = num+1;
|
ej.put("sjNum", 1);
|
}
|
|
}
|
} else {
|
num = num+1;
|
}
|
totalNum += num;
|
yj.put("num", num);
|
}
|
|
v.put("cates", cs);
|
if(cacheDsl.containsKey(dslId)) {
|
List vs = (List)cacheDsl.get(dslId);
|
vs.add(v);
|
} else {
|
Map dsl = new HashMap();
|
dsl.put("dsl_id", dsl_id);
|
dsl.put("dsl_name", dsl_name);
|
dsl.put("dsl_searchcode", dsl_searchcode);
|
dsl.put("last_version", last_version);
|
resultList.add(dsl);
|
List vs = new ArrayList();
|
vs.add(v);
|
dsl.put("vs", vs);
|
cacheDsl.put(dslId, vs);
|
}
|
}
|
}
|
|
|
|
|
|
|
|
System.out.println(JsonUtil.list2Json(resultList));
|
return resultList;
|
}
|
|
@Override
|
public void updatefinishnode(HttpServletRequest request) {
|
String userId = WebUtil.getLoginedUserId(request);
|
String userName = ConvertUtil.obj2StrBlank(WebUtil.getLoginUser(request).getLoginUser().get("ZSXM"));
|
|
String flowId = request.getParameter("flowId");
|
String curnodeId = request.getParameter("curnodeId");
|
String nodeId = request.getParameter("nodeId");
|
String note = request.getParameter("note");
|
String hours = request.getParameter("hours");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
if(StringUtil.isNotBlank(hours)){
|
node.setWorking_hours(hours).update();
|
}
|
if(Constants.CCBSP.equals(curnodeId)){
|
String suggest = request.getParameter("suggest");
|
String resolve = request.getParameter("resolve");
|
note = suggest;
|
Map param = new HashMap();
|
param.put("flow_id", flowId);
|
param.put("create_id", userId);
|
// baseDao.execute("DELETE FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID = :flow_id AND CREATE_ID =:create_id ", param);
|
SC_WORKFLOW_CHANGE_CCBRESULT result = new SC_WORKFLOW_CHANGE_CCBRESULT();
|
// WORKFLOW_NODE node=new WORKFLOW_NODE(nodeId).getInstanceById();
|
String sameKey=node.getSame_node_key();
|
param.put("sameKey", sameKey);
|
String sqla="SELECT MAX(NUM) FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE FLOW_ID=:flow_id";
|
String number=baseDao.queryForString(sqla, param);
|
String sqlb="SELECT * FROM SC_WORKFLOW_CHANGE_CCBRESULT WHERE SAMEKEY=:sameKey";
|
Map mapr=baseDao.queryForMap(sqlb, param);
|
int num=0;
|
if(number==null){
|
num=1;
|
}else{
|
num=Integer.parseInt(number)+1;
|
}
|
param.put("num", num);
|
if(mapr.size()>0){
|
num=ConvertUtil.obj2Int(mapr.get("NUM"));
|
}
|
result.setFlow_id(flowId).setResult(ConvertUtil.obj2Integer(resolve)).setSuggest(suggest)
|
.setIs_end(2).setIs_main(2).setCreate_id(userId).setCreate_name(userName).
|
setSamekey(sameKey).setNum(num).insert();
|
}
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName+"完成了节点");
|
finishEntity.setDeal_note(note);
|
WORKFLOW_BASE base = new WORKFLOW_BASE(node.getFlowid()).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
|
}
|
@Override
|
public void updateResolveType(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
String solveWay = request.getParameter("solveWay");
|
String solveWayName = request.getParameter("solveWayName");
|
//修改变更信息的解决方式
|
SC_WORKFLOW_CHANGE question = new SC_WORKFLOW_CHANGE(orderId).getInstanceById();
|
question.setId(orderId).setResolve_type_id(solveWay).setResolve_type_name(solveWayName).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_CHANGE_STATE_YGB)).update();
|
|
//添加处理记录
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
//获取当前所处的节点
|
Map flowMsg = getFlowMsg(flowId,createUserId);
|
String curnodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//添加修改信息处理记录
|
String id = StringUtil.getUUID();
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("关闭变更:"+createUserName+"关闭了变更工单");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id(createUserId);
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(curnodeid).setNode_name(nodeName);
|
|
recordService.addRecord(record);
|
fileService.uploadFile(request, id, flowId, null, null);
|
//fileService.newuploadFileAll(request,id,flowId,Constants.GG_FOLDERS_BGFOLDERS,Constants.FILE_STATE_SHTG,"",question.getCustomer_id(),question.getProject_id(),question.getProject_name(),question.getCustomer_name());
|
|
//配置关系保存到记录表-关闭工单
|
saveRelationWhenClose(flowId);
|
//删除变更中的配置关系-关闭工单
|
delRelationWhenClose(flowId);
|
//保存关联DSL变更到记录表--关闭工单
|
dslFacade.saveConfigDslDealRecord(flowId);
|
//恢复关联DSL-关闭工单
|
dslFacade.updateConfigDslWhenClose(flowId);
|
|
//恢复DSL资料
|
delDslMsg(flowId);
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(createUserName+"结束节点");
|
finishEntity.setDeal_note(createUserName+"结束节点");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
List<Map> nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key()));
|
//关闭所有节点
|
for(Map nodes:nodesList){
|
WORKFLOW_NODE nodeid = new WORKFLOW_NODE(ConvertUtil.obj2StrBlank(nodes.get("ID")));
|
nodeid.setDealtime(ConvertUtil.obj2Long(nodes.get("DEALTIME"))).setAnswer_time(ConvertUtil.obj2Long(nodes.get("ANSWER_TIME")));
|
workflowCoreService.finishNode(base,nodeid , finishEntity);
|
}
|
//关闭工单
|
workflowCoreService.closeWorkFlow(base);
|
|
}
|
@Override
|
public void delDslMsg(String flowId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("flowId", flowId);
|
//删除新增DSL版本的配置文件记录
|
String sqlfilerecord = "DELETE FROM DSL_CONFIG_FILE_CHANGE_DETAIL WHERE FLOW_ID = :flowId ";
|
|
//删除新增DSL版本的配置文件
|
String sql = "DELETE FROM DSL_CONFIG_FILE WHERE VERSION_ID IN ( SELECT ID FROM DSL_VERSION WHERE CREATE_FLOW_ID = :flowId AND STATE = 3 ) ";
|
|
//删除新增版本
|
String sqlversion = "DELETE FROM DSL_VERSION WHERE CREATE_FLOW_ID = :flowId AND STATE = 3 ";
|
|
//删除新增DSL
|
String sqldsl = "DELETE FROM PROJECT_DSL WHERE FLOW_ID = :flowId AND STATE = 3 ";
|
|
baseDao.execute(sqlfilerecord, param);
|
baseDao.execute(sql, param);
|
baseDao.execute(sqlversion, param);
|
baseDao.execute(sqldsl, param);
|
}
|
}
|