package cn.ksource.web.facade.wechat.ewyw;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.CUSTOMER_CONTACTS;
|
import cn.ksource.beans.GG_MESSAGE;
|
import cn.ksource.beans.GG_RECORD;
|
import cn.ksource.beans.HANG_UP_INFO;
|
import cn.ksource.beans.ORDER_ASSIGN_TEMP;
|
import cn.ksource.beans.QUESTION_ZD_HISTORY;
|
import cn.ksource.beans.SC_WORKFLOW_INCIDENT;
|
import cn.ksource.beans.SC_WORKFLOW_INCIDENT_LOCAL;
|
import cn.ksource.beans.SC_WORKFLOW_QUESTION;
|
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.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.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.facade.question.QuestionFacade;
|
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("ewQuestionFacade")
|
public class EwQuestionFacadeImpl implements EwQuestionFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
|
@Autowired
|
private DataDictionaryService dataDictionaryService;
|
|
@Autowired
|
private IncidentFacade incidentFacade;
|
|
@Autowired
|
private FileService fileService;
|
|
@Autowired
|
private WorkOrderCodeService workOrderCodeService;
|
|
@Autowired
|
private WorkflowBusinessService workflowBusinessService;
|
|
@Autowired
|
private MessageFacade messageFacade;
|
|
@Autowired
|
private RecordService recordService;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private DeviceService deviceService;
|
|
@Autowired
|
private QuestionFacade questionFacade;
|
|
|
/**
|
* 执行问题工单响应
|
*/
|
@Override
|
public String doOrderConfirm(Map<String, String> params) {
|
WORKFLOW_BASE base = new WORKFLOW_BASE(params.get("flowId")).getInstanceById();
|
|
WORKFLOW_NODE node = new WORKFLOW_NODE(params.get("nodeId")).getInstanceById();
|
NodeAnswerEntity entity = new NodeAnswerEntity();
|
|
entity.setUser_id(params.get("ID"));
|
entity.setUser_name(params.get("ZSXM"));
|
|
boolean result = workflowCoreService.answerNode(base, node, entity);
|
if(!result) {
|
return "2";
|
}
|
|
//判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
|
String selectSql = "SELECT SHOULI_TIME,CREATE_TIME FROM SC_WORKFLOW_QUESTION WHERE ID = :questionid";
|
Map map = baseDao.queryForMap(selectSql,new SqlParameter("questionid",base.getBusiness_id()));
|
String shouli_time = ConvertUtil.obj2StrBlank(map.get("SHOULI_TIME"));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
|
Map paramMap = new HashMap();
|
|
|
if(!StringUtil.notEmpty(shouli_time)) {
|
StringBuilder builder = new StringBuilder("UPDATE SC_WORKFLOW_QUESTION SET ");
|
long answer_time = DateUtil.getCurrentDate14();
|
|
builder.append(" SHOULI_USERID = :shouli_userid,SHOULI_USERNAME = :shouli_username,SHOULI_TIME = :answerTime,SHOULI_USE_TIME = :answer_user_time ");
|
paramMap.put("answerTime",answer_time);
|
paramMap.put("shouli_userid",params.get("ID"));
|
paramMap.put("shouli_username",params.get("ZSXM"));
|
|
//计算第一次响应时间和创建问题的时间差 将时间差转化为分钟
|
long seconds = DateUtil.getSecondsFormDate2Date(create_time, answer_time);
|
//将秒转化为分钟
|
double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
|
|
paramMap.put("answer_user_time", sjxysj);
|
|
builder.append(" WHERE ID = :questionid");
|
paramMap.put("questionid", base.getBusiness_id());
|
baseDao.execute(builder.toString(), paramMap);
|
}
|
return "1";
|
}
|
|
@Override
|
public Map queryQuestionReport(String orderId) {
|
String flowId = new String();
|
if(StringUtil.notEmpty(orderId)) {
|
SC_WORKFLOW_QUESTION incident = new SC_WORKFLOW_QUESTION(orderId).getInstanceById();
|
flowId = incident.getFlow_id();
|
}
|
Map param =new HashMap();
|
param.put("questionId", orderId);
|
param.put("flowId", flowId);
|
StringBuilder sql=new StringBuilder();
|
sql.append("SELECT c.*,u.SJHM FROM SC_WORKFLOW_QUESTION c,gg_user u WHERE c.CREATE_USER_ID=u.id AND c.ID=:questionId ");
|
Map questionMap=baseDao.queryForMap(sql.toString(), param);
|
questionMap.put("STATE", Constants.getmapSC_WORKFLOW_QUESTION_STATE_Label(questionMap.get("STATE").toString()));
|
//关联工单
|
List<Map> orderList=orderService.queryLinkOrders(flowId);
|
questionMap.put("orderList", orderList);
|
//关联设备
|
sql.setLength(0);
|
List deviceList = incidentFacade.queryDevices(flowId);
|
questionMap.put("ciList", deviceList);
|
//关联文档
|
List<Map> fileList=fileService.getFileList(flowId);
|
questionMap.put("fileList", fileList);
|
return questionMap;
|
}
|
|
@Override
|
public Map gobackNodeSubmit(Map<String, String> params) {
|
String flowId = params.get("flowId");
|
String nodeId = params.get("nodeId");
|
String orderId = params.get("orderId");
|
String userId = params.get("userId");
|
String userName = params.get("userName");
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(3);
|
finishEntity.setDeal_note_title(params.get("userName")+"回退了节点");
|
finishEntity.setDeal_note(params.get("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();
|
|
Map nodeMap = questionFacade.getBeforeNodeMsg(nodeId);
|
List<Map> nodesList = baseDao.queryForList("SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND SAME_NODE_KEY = :same_node_key ",new SqlParameter("flowid",flowId).addValue("same_node_key", node.getSame_node_key()));
|
//回退时,关闭所有节点
|
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 = "";
|
if(node_template_id.equals(Constants.WTSL)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SL;
|
} else if(node_template_id.equals(Constants.WTSH)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SH;
|
} else if(node_template_id.equals(Constants.WTZD)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD;
|
} else if(node_template_id.equals(Constants.WTFASP)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP;
|
} else if(node_template_id.equals(Constants.WTFASS)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS;
|
} else if(node_template_id.equals(Constants.WTHG)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_HG;
|
}else{
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ;
|
}
|
|
//更新问题状态
|
String updateSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state WHERE ID = :questionId ";
|
baseDao.execute(updateSql, new SqlParameter("state",state).addValue("questionId", orderId));
|
|
List<Map> list = new ArrayList<Map>();
|
Map map = new HashMap();
|
map.put("USER_ID", nodeMap.get("CURRENT_DEALER_ID"));
|
map.put("USER_NAME", nodeMap.get("CURRENT_DEALER_NAME"));
|
map.put("IS_ADMIN", "1");
|
list.add(map);
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setBefore_Dealer_type(2);
|
entity.setDealer_type(2);
|
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);
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION;
|
//发送消息
|
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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(base.getOrder_code())
|
.setType(Constants.GG_MESSAGE_TYPE_WTGL);
|
messageFacade.doSendMessage(message, list);
|
Map resultMap = new HashMap();
|
SysInfoMsg msg = new SysInfoMsg("2",ConvertUtil.obj2Str(nodeMap.get("CURRENT_DEALER_NAME")),Constants.questionNode.get(ConvertUtil.obj2Str(nodeMap.get("NODE_TEMPLATE_ID"))));
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
@Override
|
public Map saveQuestion(HttpServletRequest request,
|
SC_WORKFLOW_QUESTION sc_workflow_question) {
|
String changeId = request.getParameter("changeId");
|
String bustype = request.getParameter("bustype");
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
String sh = request.getParameter("sh");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
String bz = request.getParameter("bz");
|
Map user = WebUtil.getEngineerMsg(request);
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
String customerId = sc_workflow_question.getCustomer_id();
|
String customerName = sc_workflow_question.getCustomer_name();
|
String subCustomerId = "";
|
String subCustomerName = "";
|
if(!StringUtil.isEmpty(customerId)){
|
String[] subs = customerId.split("--");
|
String[] subNames = customerName.split("--");
|
if(subs.length > 1){
|
customerId = subs[0];
|
subCustomerId = subs[1];
|
customerName = subNames[0];
|
subCustomerName = subNames[1];
|
}else{
|
subCustomerId = subs[0];
|
subCustomerName = subNames[0];
|
}
|
}
|
String want_deal_time = request.getParameter("want_deal_time");
|
want_deal_time = want_deal_time.replace("-", "").replace(" ", "").replace(":", "");
|
sc_workflow_question.setWant_deal_time(ConvertUtil.obj2Long(want_deal_time+"00"));
|
sc_workflow_question.setCustomer_id(customerId).setSub_customer_id(subCustomerId).setSub_customer_name(subCustomerName);
|
String source_name = ConvertUtil.obj2StrBlank(dataDictionaryService.getDataDictionaryByKey(sc_workflow_question.getSource_id()).get("DATAVALUE"));
|
sc_workflow_question.setSource_name(source_name);
|
String priority_name = ConvertUtil.obj2StrBlank(dataDictionaryService.getDataDictionaryByKey(sc_workflow_question.getPriority_id()).get("DATAVALUE"));
|
sc_workflow_question.setPriority_name(priority_name);
|
String influence_name = ConvertUtil.obj2StrBlank(dataDictionaryService.getDataDictionaryByKey(sc_workflow_question.getInfluence_id()).get("DATAVALUE"));
|
sc_workflow_question.setInfluence_name(influence_name);
|
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 selectUser = request.getParameter("selectUser");
|
if(StringUtil.notEmpty(selectUser)) {
|
String[] userMsg = selectUser.split("&");
|
String state = Constants.SC_WORKFLOW_QUESTION_STATE_SL;
|
String dealer_type = "1";
|
String dealUserId = userId;
|
String dealUserName = userName;
|
String nextnodeid = "";
|
if(userMsg.length==4) {
|
dealer_type = userMsg[0];
|
nextnodeid = userMsg[1];
|
dealUserId = userMsg[2];
|
dealUserName = userMsg[3];
|
|
if(nextnodeid.equals(Constants.WTSL)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SL;
|
} else if(nextnodeid.equals(Constants.WTSH)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SH;
|
} else if(nextnodeid.equals(Constants.WTZD)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD;
|
} else if(nextnodeid.equals(Constants.WTFASP)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP;
|
} else if(nextnodeid.equals(Constants.WTFASS)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS;
|
} else if(nextnodeid.equals(Constants.WTHG)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_HG;
|
}else{
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ;
|
}
|
|
String sla_id = request.getParameter("sla_id");
|
String sla_name = request.getParameter("sla_name");
|
String order_code = workOrderCodeService.getQuestionOrderCode();
|
long createTime = DateUtil.getCurrentDate14();
|
sc_workflow_question.setPri_level_id(sla_id).setPri_level(sla_name)
|
.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_question.getId())){
|
sc_workflow_question.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(createTime);
|
sc_workflow_question.setOrder_code(order_code);
|
}
|
|
sc_workflow_question.setState(ConvertUtil.obj2Integer(state)).setFlow_name(sc_workflow_question.getName()).insertOrUpdate();
|
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.getFlowMsg(flowId,userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
if("1".equals(sh)){
|
|
//增加问题处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("修改问题:"+userName+"修改了问题信息");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
recordService.addRecord(record);
|
}
|
|
|
|
if(!"1".equals(sh)){
|
WORKFLOW_BASE base = new WORKFLOW_BASE();
|
if(!"2".equals(sh)){
|
//发起流程
|
base = workflowBusinessService.startQuestionWorkflow(sc_workflow_question.getId(),bz);
|
//增加问题处理记录
|
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(base.getId());
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
recordService.addRecord(record);
|
flowId = base.getId();
|
}else{
|
|
base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName+"完成了节点");
|
finishEntity.setDeal_note(userName+"完成了节点");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
|
}
|
|
|
NodeDealEntity entity = new NodeDealEntity();
|
List<Map> userMap = new ArrayList();
|
if("2".equals(sh)){
|
dealer_type = "2";
|
entity.setBefore_Dealer_type(2);
|
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();
|
nextnodeid = node_template_id;
|
String sql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowid AND NODE_TEMPLATE_ID = :node_template_id AND IS_ADMIN = :is_admin ";
|
Map param = new HashMap();
|
param.put("flowid", beforenode.getFlowid());
|
param.put("node_template_id", node_template_id);
|
param.put("is_admin", "1");
|
Map nodeMap = baseDao.queryForMap(sql, param);
|
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");
|
userMap.add(map);
|
entity.setDealerList(userMap);
|
dealUserName = ConvertUtil.obj2StrBlank(nodeMap.get("CURRENT_DEALER_NAME"));
|
}else{
|
dealer_type = getDealUser(entity,flowId,dealer_type,userMap,dealUserId,dealUserName);
|
}
|
workflowCoreService.toNode(base,nextnodeid , entity);
|
|
String hasMsg = request.getParameter("hasMsg");
|
if(StringUtil.notEmptyNum(hasMsg) && hasMsg.equals("2")) {
|
//保存联系人的信息
|
CUSTOMER_CONTACTS project_contacts = new CUSTOMER_CONTACTS();
|
project_contacts.setId(StringUtil.getUUID()).setCustomer_id(sc_workflow_question.getCustomer_id())
|
.setContact_name(sc_workflow_question.getContact_name()).setContacts_type(sc_workflow_question.getContact_phone()).setYwks(sc_workflow_question.getKeshi())
|
.setIs_satis(0).setState(1).setIsemail(1).setIsphone(1).setAllow_login(2).setSub_customer_id(sc_workflow_question.getSub_customer_id()).setSub_customer_name(sc_workflow_question.getSub_customer_name());
|
project_contacts.insert();
|
}
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION;
|
//发送消息
|
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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(sc_workflow_question.getOrder_code())
|
.setType(Constants.GG_MESSAGE_TYPE_WTGL);
|
messageFacade.doSendMessage(message, userMap);
|
resultMap.put("result", 1);
|
|
|
}
|
String usertype = "1";
|
if("1".equals(dealer_type)){
|
usertype = "2";
|
}
|
Map paramuser = new HashMap();
|
paramuser.put("ID", StringUtil.getUUID());
|
paramuser.put("WORKFLOWID", sc_workflow_question.getFlow_id());
|
paramuser.put("PNAME", "处理人");
|
paramuser.put("PVALUE", usertype+"@"+selectUser);
|
if(nextnodeid.equals(Constants.WTSL)) {
|
baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", paramuser);
|
} else if(nextnodeid.equals(Constants.WTSH)) {
|
baseDao.execute("UPDATE WORKFLOW_PARAMETER SET PVALUE=:PVALUE WHERE WORKFLOWID = :WORKFLOWID AND PNAME = :PNAME ", paramuser);
|
}
|
|
Map paramrecord = new HashMap();
|
paramrecord.put("flowId", flowId);
|
//提交工单时添加关联工单
|
//先删除已存在的工单
|
baseDao.execute("DELETE FROM ORDER_REF_ORDER WHERE BUSINESS_ID = :flowId ", paramrecord);
|
String[] orderId = request.getParameterValues("orderId");
|
orderService.saveLinkOrders(flowId,orderId,request);
|
|
//提交工单时上传文档附件
|
//fileService.uploadFile(request,flowId,flowId,null,null,Constants.GG_FOLDERS_WTFOLDERS,Constants.FILE_STATE_SHTG,null);
|
|
|
//提交工单时添加关联设备
|
//先删除已存在的设备
|
baseDao.execute("DELETE FROM CMDB_CI_REF_ORDER WHERE FLOW_ID = :flowId ", paramrecord);
|
String[] deviceId = request.getParameterValues("deviceId");
|
deviceService.saveLinkDevices(flowId,deviceId);
|
SysInfoMsg msg = new SysInfoMsg(dealer_type,dealUserName,Constants.questionNode.get(nextnodeid));
|
resultMap.put("msg", msg);
|
}
|
//事件转问题
|
if(!StringUtil.isEmpty(changeId)){
|
if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT == ConvertUtil.obj2Int(bustype)){
|
SC_WORKFLOW_INCIDENT incident = new SC_WORKFLOW_INCIDENT(changeId);
|
incident.setQuestionid(sc_workflow_question.getId()).update();
|
}else if(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL == ConvertUtil.obj2Int(bustype)){
|
SC_WORKFLOW_INCIDENT_LOCAL zcyw = new SC_WORKFLOW_INCIDENT_LOCAL(changeId);
|
zcyw.setQuestionid(sc_workflow_question.getId()).update();
|
}
|
}
|
|
}else{
|
resultMap.put("nouser", 3);
|
}
|
return resultMap;
|
}
|
|
public String getDealUser(NodeDealEntity entity,String flowId,String dealer_type,List<Map> userMap,String dealUserId,String dealUserName) {
|
Map param = new HashMap();
|
param.put("ID", StringUtil.getUUID());
|
param.put("WORKFLOWID", flowId);
|
param.put("PNAME", "处理人");
|
|
entity.setDealer_type(3);
|
if(dealer_type.equals("1")||dealer_type.equals("3")) {
|
entity.setBefore_Dealer_type(2);
|
String sqluser = "select * from gg_user ";
|
List<Map> userList = baseDao.queryForList(sqluser);
|
Map cacheuser = new HashMap();
|
for(Map users:userList){
|
cacheuser.put(users.get("ID"), users.get("ZSXM"));
|
}
|
String[] userList2 = dealUserId.split(",");
|
String[] userNameList2 = dealUserName.split(",");
|
for(int i=0;i<userList2.length;i++){
|
Map map = new HashMap();
|
if(userList2[i].split("-").length == 2){
|
map.put("USER_ID", userList2[i].split("-")[0]);
|
map.put("IS_ADMIN", "1");
|
map.put("USER_NAME", cacheuser.get(userList2[i].split("-")[0]));
|
param.put("PVALUE", "1"+"&"+userList2[i].split("-")[0]+"-1");
|
}else{
|
map.put("USER_ID", userList2[i]);
|
map.put("USER_NAME", cacheuser.get(userList2[i]));
|
}
|
|
userMap.add(map);
|
}
|
dealer_type = "2";
|
} else {
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(dealUserId);
|
entity.setRoleName(dealUserName);
|
param.put("PVALUE", "2"+"&"+dealUserId);
|
//查询改角色下面的所有人员信息
|
String sqlUser = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
|
userMap = baseDao.queryForList(sqlUser,new SqlParameter("groupId",dealUserId));
|
dealer_type = "1";
|
}
|
entity.setDealerList(userMap);
|
|
baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", param);
|
return dealer_type;
|
}
|
|
@Override
|
public Map updateApplyEnd(HttpServletRequest request) {
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
|
String ssbz = request.getParameter("ssbz");
|
String ssjg = request.getParameter("ssjg");
|
String ssnote = request.getParameter("ssnote");
|
|
|
Map user = WebUtil.getEngineerMsg(request);
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
long resolveTime = DateUtil.getCurrentDate14();
|
|
String updateSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,FINISH_USE_TIME = :resolve_hs,SSBZ = :ssbz,SSJG = :ssjg,SSNOTE = :ssnote WHERE ID = :questionId ";
|
|
//判断是否是第一次响应,如果是第一次响应的话,则更新事件表中实际响应时间(第一次响应时间)
|
String selectSql = "SELECT SHOULI_TIME,CREATE_TIME FROM SC_WORKFLOW_QUESTION WHERE ID = :questionid";
|
Map map = baseDao.queryForMap(selectSql,new SqlParameter("questionid",orderId));
|
long create_time = ConvertUtil.obj2Long(map.get("CREATE_TIME"));
|
//计算第一次响应时间和创建问题的时间差 将时间差转化为分钟
|
long seconds = DateUtil.getSecondsFormDate2Date(create_time, resolveTime);
|
//将秒转化为分钟
|
double sjxysj = NumberUtil.div(ConvertUtil.obj2Double(seconds), ConvertUtil.obj2Double(60), 1);
|
Map paramMap = new HashMap();
|
paramMap.put("state", Constants.SC_WORKFLOW_QUESTION_STATE_HG);
|
paramMap.put("userId", userId);
|
paramMap.put("userName", userName);
|
paramMap.put("resolveTime", resolveTime);
|
paramMap.put("ssbz", ssbz);
|
paramMap.put("ssjg", ssjg);
|
paramMap.put("ssnote", ssnote);
|
paramMap.put("questionId", orderId);
|
paramMap.put("resolve_hs", sjxysj);
|
|
baseDao.execute(updateSql, paramMap);
|
String dealUserName ="";
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(2);
|
List<Map> dealerList = new ArrayList<Map>();
|
//问题回顾处理人
|
/*Map value = baseDao.queryForMap("SELECT * FROM WORKFLOW_PARAMETER WHERE WORKFLOWID = :ID ", new SqlParameter("ID",flowId));
|
String[] uservalues = ConvertUtil.obj2StrBlank(value.get("PVALUE")).split("@");
|
if(uservalues[0].equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
String sqluser = "select * from gg_user ";
|
List<Map> userList = baseDao.queryForList(sqluser);
|
Map cacheuser = new HashMap();
|
for(Map users:userList){
|
cacheuser.put(users.get("ID"), users.get("ZSXM"));
|
}
|
String[] userIdList2 = uservalues[1].split("&");
|
String[] userList2 = userIdList2[0].split(",");
|
for(int i=0;i<userList2.length;i++){
|
Map map1 = new HashMap();
|
if(userList2[i].split("-").length == 2){
|
map1.put("USER_ID", userList2[i].split("-")[0]);
|
map1.put("IS_ADMIN", "1");
|
map1.put("USER_NAME", cacheuser.get(userList2[i].split("-")[0]));
|
dealUserName += cacheuser.get(userList2[i].split("-")[0])+",";
|
}else{
|
map1.put("USER_ID", userList2[i]);
|
map1.put("USER_NAME", cacheuser.get(userList2[i]));
|
dealUserName += cacheuser.get(userList2[i])+",";
|
}
|
|
dealerList.add(map1);
|
}
|
dealUserName = dealUserName.substring(0, dealUserName.length()-1);
|
|
} else {
|
if(uservalues[0].startsWith("1")){
|
entity.setBefore_Dealer_type(2);
|
Map dealer = new HashMap();
|
String dealerId = uservalues[0].split("&")[1].split("-")[0];
|
dealer.put("USER_ID", dealerId);
|
String dealerName = baseDao.queryForString("select zsxm from gg_user where id = :userId",new SqlParameter("userId",dealerId));
|
dealer.put("USER_NAME", dealerName);
|
dealer.put("IS_ADMIN", "1");
|
dealerList.add(dealer);
|
dealUserName = dealerName;
|
}else{
|
entity.setBefore_Dealer_type(1);
|
if(uservalues.length <= 1){
|
entity.setRoleID(uservalues[0].split("&")[1]);
|
entity.setRoleName("");
|
}else {
|
entity.setRoleID(uservalues[1].split("&")[0]);
|
entity.setRoleName(uservalues[1].split("&")[1]);
|
dealUserName=uservalues[1].split("&")[1];
|
}
|
|
//查询改组下面的所有人员信息
|
String sqlUser = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
|
dealerList = baseDao.queryForList(sqlUser,new SqlParameter("groupId",uservalues[0].split("&")[0]));
|
}
|
}*/
|
//问题回顾处理人发给问题受理阶段
|
entity.setBefore_Dealer_type(2);
|
String sql="select * from WORKFLOW_node where FLOWID=:flowid and NODE_TEMPLATE_ID=:node_template_id order by CREATETIME desc limit 0,1";
|
List<Map> xxList = baseDao.queryForList(sql,new SqlParameter("flowid",flowId).addValue("node_template_id",Constants.WTSL));
|
if(xxList!=null && xxList.size()>0){
|
entity.setRoleID(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID")));
|
entity.setRoleName(ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME")));
|
Map dealer = new HashMap();
|
dealer.put("USER_ID", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_ID")));
|
dealer.put("USER_NAME", ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME")));
|
dealer.put("IS_ADMIN", "1");
|
dealerList.add(dealer);
|
dealUserName= ConvertUtil.obj2StrBlank(xxList.get(0).get("CURRENT_DEALER_NAME"));
|
}else{
|
//如果问题受理阶段为空就发给创建人
|
String sql_cj="select * from WORKFLOW_node where FLOWID=:flowid and NODE_TEMPLATE_ID=:node_template_id order by CREATETIME desc limit 0,1";
|
List<Map> cjList = baseDao.queryForList(sql_cj,new SqlParameter("flowid",flowId).addValue("node_template_id",Constants.WTFQ));
|
entity.setRoleID(ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_ID")));
|
entity.setRoleName(ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME")));
|
Map dealer = new HashMap();
|
dealer.put("USER_ID", ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_ID")));
|
dealer.put("USER_NAME", ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME")));
|
dealer.put("IS_ADMIN", "1");
|
dealerList.add(dealer);
|
dealUserName= ConvertUtil.obj2StrBlank(cjList.get(0).get("CURRENT_DEALER_NAME"));
|
}
|
entity.setDealerList(dealerList);
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
|
finishEntity.setDeal_note("实施结束");
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
|
boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
|
if (canFinish) {
|
workflowBusinessService.toNode(base, Constants.WTHG, entity);
|
}
|
//添加处理记录
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.getFlowMsg(flowId,userId);
|
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(userName+"完善处理步骤和结果");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(curnodeid).setNode_name(nodeName);
|
|
recordService.addRecord(record);
|
//fileService.uploadFile(request, id, flowId, null, null);
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION;
|
//发送消息
|
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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(base.getOrder_code())
|
.setType(Constants.GG_MESSAGE_TYPE_WTGL);
|
messageFacade.doSendMessage(message, dealerList);
|
String type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
resultMap.put("result", 1);
|
SysInfoMsg msg = new SysInfoMsg(type,dealUserName,Constants.questionNode.get(Constants.WTHG));
|
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
@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");
|
String repeat_order = request.getParameter("repeat_order");
|
//String content = request.getParameter("content");
|
String bz = request.getParameter("bz");
|
//修改问题信息的解决方式
|
SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION();
|
question.setResolve_type_id(solveWay).setResolve_type_name(solveWayName);
|
if("WTCF".equals(solveWay)){
|
question.setRepeat_order(repeat_order).setRepeat_mark("1");
|
}
|
question.setId(orderId).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_QUESTION_STATE_YGB)).update();
|
//添加处理记录
|
Map user = WebUtil.getEngineerMsg(request);
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.getFlowMsg(flowId,createUserId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//增加问题处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("关闭问题:"+createUserName+"关闭了问题");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
record = recordService.addRecord(record);
|
//fileService.uploadFile(request, record.getId(), flowId, null, null);
|
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(createUserName+"结束节点");
|
finishEntity.setDeal_note(bz);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
//关闭工单
|
workflowCoreService.closeWorkFlow(base);
|
|
}
|
|
@Override
|
public void updateQuestiongq(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");
|
String content = request.getParameter("content");
|
//添加处理记录
|
Map user = WebUtil.getEngineerMsg(request);
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
String sql = "INSERT INTO HANG_UP_INFO(ID,BUS_ID,BUS_STATE,STATE,HANG_UP_USERID,HANG_UP_USERNAME,HANG_UP_TIME,HANG_UP_REASONID,HANG_UP_REASON,HANG_UP_NOTE) VALUES(:id,:bus_id,:bus_state,:state,:hang_up_userid,:hang_up_username,:hang_up_time,:hang_up_reasonid,:hang_up_reason,:hang_up_note)";
|
Map param = new HashMap();
|
param.put("id", StringUtil.getUUID());
|
param.put("bus_id", orderId);
|
String bus_state = baseDao.queryForString("SELECT STATE FROM SC_WORKFLOW_QUESTION WHERE ID = :id ", new SqlParameter("id",orderId));
|
param.put("bus_state", bus_state);
|
param.put("state", "1");
|
param.put("hang_up_userid", createUserId);
|
param.put("hang_up_username", createUserName);
|
param.put("hang_up_time", DateUtil.getCurrentDate14());
|
param.put("hang_up_reasonid", solveWay);
|
param.put("hang_up_reason", solveWayName);
|
param.put("hang_up_note", content);
|
baseDao.execute(sql, param);
|
//修改问题信息的状态
|
SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION();
|
question.setId(orderId).setState(ConvertUtil.obj2Integer(Constants.SC_WORKFLOW_QUESTION_STATE_GQ)).update();
|
//修改问题流程信息的状态
|
WORKFLOW_BASE base = new WORKFLOW_BASE();
|
base.setId(flowId).setWfstate(ConvertUtil.obj2Integer(Constants.WORKFLOW_BASE_WFSTATE_UP)).update();
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.getFlowMsg(flowId,createUserId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
//增加问题处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("挂起问题:"+createUserName+"挂起了问题");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(createUserName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
record = recordService.addRecord(record);
|
//fileService.uploadFile(request, record.getId(), flowId, null, null);
|
|
}
|
|
@Override
|
public void updateZdMsg(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String id = request.getParameter("id");
|
String type = request.getParameter("type");
|
|
|
String resolve = request.getParameter("resolve");
|
String suggest = request.getParameter("suggest");
|
String reason = request.getParameter("reason");
|
|
|
//判断请求是否来自微信(/ewyw/ewQuestion/ewQuestionZdReport微信)
|
String url = request.getServletPath();
|
Map user = new HashMap();
|
if(url.substring(1, 5).equals("ewyw")){
|
user = WebUtil.getWywEngineerLoginUser(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();
|
QUESTION_ZD_HISTORY zd = new QUESTION_ZD_HISTORY();
|
if("1".equals(type)){
|
Map param = new HashMap();
|
param.put("reason", reason);
|
param.put("resolve", resolve);
|
param.put("suggest", suggest);
|
param.put("flowid", flowId);
|
param.put("istheend", 1);
|
SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(id);
|
question.setTrue_reason(reason).setResolve(resolve).setSuggest(suggest).update();
|
String selsql = "SELECT ID FROM QUESTION_ZD_HISTORY WHERE FLOWID = :flowid AND ISTHEEND = :istheend ";
|
String zdid = baseDao.queryForString(selsql, param);
|
zd.setId(zdid);
|
String sql = "UPDATE QUESTION_ZD_HISTORY SET REASON = :reason ,RESOLVE = :resolve,SUGGEST = :suggest WHERE FLOWID = :flowid AND ISTHEEND = :istheend ";
|
|
baseDao.execute(sql, param);
|
|
}else{
|
|
if(!StringUtil.isEmpty(id)){
|
zd.setId(id);
|
}else{
|
zd.setFlowid(flowId).setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(DateUtil.getCurrentDate14());
|
}
|
zd.setReason(reason).setResolve(resolve).setSuggest(suggest).insertOrUpdate();
|
}
|
//fileService.uploadFile(request, zd.getId(), flowId, null, null);
|
|
}
|
|
@Override
|
public Map updateAssign(HttpServletRequest request) {
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", 2);
|
String savetype = request.getParameter("savetype");
|
String id = request.getParameter("flowId");
|
String selectUser = request.getParameter("alluserid");
|
String saveusername = request.getParameter("saveusername");
|
String usertype = request.getParameter("type");
|
String nextnodeid = request.getParameter("node");
|
String curnodeId = request.getParameter("curnodeId");
|
String true_reason = request.getParameter("reason");
|
String resolve = request.getParameter("resolve");
|
String suggest = request.getParameter("suggest");
|
String bz = request.getParameter("bz");
|
|
Map user = WebUtil.getEngineerMsg(request);
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
WORKFLOW_BASE base = new WORKFLOW_BASE(id).getInstanceById();
|
SC_WORKFLOW_QUESTION myQuestion = new SC_WORKFLOW_QUESTION(base.getBusiness_id()).getInstanceById();
|
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.getFlowMsg(id,userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
if("1".equals(savetype)){
|
Map dealuser = new HashMap();
|
dealuser.put("userid", selectUser);
|
dealuser.put("username", saveusername);
|
baseDao.execute("DELETE FROM ORDER_ASSIGN_TEMP WHERE NODE_ID = :node_id ", new SqlParameter("node_id",nodeid));
|
ORDER_ASSIGN_TEMP temp = new ORDER_ASSIGN_TEMP();
|
temp.setDealer(JsonUtil.map2Json(dealuser)).setNode_id(nodeid)
|
.setExtend1(usertype).setExtend2(true_reason).setExtend3(resolve).setExtend4(suggest).setExtend5(bz).insert();
|
resultMap.put("result", 1);
|
}else{
|
|
String dealUserId = new String();
|
String dealUserName = new String();
|
String state = new String();
|
String type = new String();
|
|
String node_template_id = Constants.WTFQ;
|
if(StringUtil.notEmpty(selectUser)) {
|
if(usertype.equals("3")){
|
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);
|
if(nextnodeid.equals(Constants.WTSL)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SL;
|
baseDao.execute("INSERT INTO WORKFLOW_PARAMETER(ID,WORKFLOWID,PNAME,PVALUE) VALUES(:ID,:WORKFLOWID,:PNAME,:PVALUE)", param);
|
} else if(nextnodeid.equals(Constants.WTSH)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_SH;
|
baseDao.execute("UPDATE WORKFLOW_PARAMETER SET PVALUE=:PVALUE WHERE WORKFLOWID = :WORKFLOWID AND PNAME = :PNAME ", param);
|
} else if(nextnodeid.equals(Constants.WTZD)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_WTZD;
|
} else if(nextnodeid.equals(Constants.WTFASP)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASP;
|
} else if(nextnodeid.equals(Constants.WTFASS)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_FASS;
|
} else if(nextnodeid.equals(Constants.WTHG)) {
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_HG;
|
}else{
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_YDJ;
|
}
|
}
|
if(StringUtil.notEmpty(selectUser)) {
|
//执行分派任务
|
|
|
NodeDealEntity entity = new NodeDealEntity();
|
entity.setDealer_type(3);
|
List<Map> dealerList = new ArrayList<Map>();
|
if(usertype.equals("1")) {
|
entity.setBefore_Dealer_type(2);
|
String sqluser = "select * from gg_user ";
|
List<Map> userList = baseDao.queryForList(sqluser);
|
Map cacheuser = new HashMap();
|
for(Map users:userList){
|
cacheuser.put(users.get("ID"), users.get("ZSXM"));
|
}
|
String[] userIdList2 = selectUser.split("&");
|
String[] userList2 = userIdList2[0].split(",");
|
for(int i=0;i<userList2.length;i++){
|
Map map = new HashMap();
|
if(userList2[i].split("-").length == 2){
|
map.put("USER_ID", userList2[i].split("-")[0]);
|
map.put("IS_ADMIN", "1");
|
map.put("USER_NAME", cacheuser.get(userList2[i].split("-")[0]));
|
dealUserName += cacheuser.get(userList2[i].split("-")[0])+",";
|
}else{
|
map.put("USER_ID", userList2[i]);
|
map.put("USER_NAME", cacheuser.get(userList2[i]));
|
dealUserName += cacheuser.get(userList2[i])+",";
|
}
|
|
dealerList.add(map);
|
}
|
dealUserName = dealUserName.substring(0, dealUserName.length()-1);
|
|
} else {
|
entity.setBefore_Dealer_type(1);
|
entity.setRoleID(selectUser.split("&")[0]);
|
entity.setRoleName(selectUser.split("&")[1]);
|
|
//查询改组下面的所有人员信息
|
String sqlUser = "SELECT B.ID AS USER_ID ,B.ZSXM AS USER_NAME FROM AC_USER_REF_ROLE A,GG_USER B WHERE A.YHBH = B.ID AND A.JSBH = :groupId ";
|
dealerList = baseDao.queryForList(sqlUser,new SqlParameter("groupId",selectUser.split("&")[0]));
|
dealUserName = entity.getRoleName();
|
}
|
entity.setDealerList(dealerList);
|
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title("节点转至 :" + dealUserName);
|
finishEntity.setDeal_note(bz);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById();
|
|
|
|
boolean canFinish = workflowCoreService.finishNode(base, node, finishEntity);
|
if (canFinish) {
|
workflowBusinessService.toNode(base, node_template_id, entity);
|
}
|
|
|
//更新问题状态
|
Map param = new HashMap();
|
param.put("state", state);
|
param.put("questionId", base.getBusiness_id());
|
String updateIncidentSql = "UPDATE SC_WORKFLOW_QUESTION SET STATE = :state ";
|
if(curnodeId.equals(Constants.WTZD)){
|
|
updateIncidentSql += " ,RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,TRUE_REASON = :true_reason ,RESOLVE = :resolve ,SUGGEST = :suggest ";
|
param.put("true_reason",true_reason );
|
param.put("resolve", resolve);
|
param.put("suggest", suggest);
|
param.put("userId", userId);
|
param.put("userName", userName);
|
QUESTION_ZD_HISTORY zd = new QUESTION_ZD_HISTORY();
|
zd.setFlowid(id).setIstheend(1).setReason(true_reason).setResolve(resolve).setSuggest(suggest)
|
.setCreate_user_id(userId).setCreate_user_name(userName).setCreate_time(DateUtil.getCurrentDate14()).insert();
|
//fileService.uploadFile(request, zd.getId(), id, null, null);
|
|
}
|
updateIncidentSql += " WHERE ID = :questionId ";
|
baseDao.execute(updateIncidentSql, param);
|
|
baseDao.execute("DELETE FROM ORDER_ASSIGN_TEMP WHERE NODE_ID = :node_id ", new SqlParameter("node_id",nodeid));
|
|
//增加问题处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("指派任务:"+userName+"将问题指派给了"+dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id("1");
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(id);
|
record.setNode_id(nodeid).setNode_name(nodeName);
|
recordService.addRecord(record);
|
String wxUrl = WechatConstants.ORDER_INCIDENT_DETAIL_ADDRESS+"?nodeId="+base.getCurrent_node_id()+"&orderId="+base.getBusiness_id()+"&orderType="+Constants.WORKFLOW_BASE_BUSINESS_TYPE_QUESTION;
|
//发送消息
|
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.QUESTION_WEB_MSG_URL+"?flowId="+base.getId()+"&orderId="+base.getBusiness_id())
|
.setWx_url(wxUrl)
|
.setOrder_code(base.getOrder_code())
|
.setType(Constants.GG_MESSAGE_TYPE_WTGL);
|
messageFacade.doSendMessage(message, dealerList);
|
resultMap.put("result", 1);
|
type = ConvertUtil.obj2StrBlank(entity.getBefore_Dealer_type());
|
|
}
|
SysInfoMsg msg = new SysInfoMsg(type,dealUserName,Constants.questionNode.get(node_template_id));
|
|
resultMap.put("msg", msg);
|
}
|
return resultMap;
|
}
|
|
@Override
|
public void updatefinishnode(HttpServletRequest request) {
|
String nodeId = request.getParameter("nodeId");
|
String note = request.getParameter("note");
|
String userName = ConvertUtil.obj2StrBlank(WebUtil.getEngineerMsg(request).get("ZSXM"));
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName+"完成了节点");
|
finishEntity.setDeal_note(note);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
WORKFLOW_BASE base = new WORKFLOW_BASE(node.getFlowid()).getInstanceById();
|
//关闭当前节点
|
workflowCoreService.finishNode(base, node, finishEntity);
|
|
}
|
|
@Override
|
public void updateEndQuestion(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");
|
String solve = request.getParameter("solve");
|
|
String reason = request.getParameter("reason");
|
|
Map user = WebUtil.getEngineerMsg(request);
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
long resolveTime = DateUtil.getCurrentDate14();
|
|
String state = "";
|
if("1".equals(solve)){
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_YWC;
|
}else{
|
state = Constants.SC_WORKFLOW_QUESTION_STATE_YGB;
|
}
|
SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION(orderId).getInstanceById();
|
|
|
StringBuffer updateSql = new StringBuffer("UPDATE SC_WORKFLOW_QUESTION SET STATE = :state , RESOLVE_USER_ID = :userId,RESOLVE_USER_NAME = :userName,RESOLVE_TIME = :resolveTime,RESOLVE_TYPE_ID = :solveWay,RESOLVE_TYPE_NAME = :solveWayName ");
|
Map paramMap = new HashMap();
|
if(StringUtil.isEmpty(question.getResolve_user_id())){
|
paramMap.put("userId", userId);
|
paramMap.put("userName", userName);
|
}else{
|
paramMap.put("userId", question.getResolve_user_id());
|
paramMap.put("userName", question.getResolve_user_name());
|
}
|
if(StringUtil.isEmpty(question.getResolve())){
|
List<Map> zdList = questionFacade.getZdMsgList(flowId);
|
if(zdList.size() > 0){
|
Map map = zdList.get(0);
|
updateSql.append(" ,TRUE_REASON = :true_reason ,RESOLVE = :resolve ,SUGGEST = :suggest ");
|
paramMap.put("true_reason", map.get("REASON"));
|
paramMap.put("resolve", map.get("RESOLVE"));
|
paramMap.put("suggest", map.get("SUGGEST"));
|
}
|
|
}
|
paramMap.put("state", state);
|
|
paramMap.put("resolveTime", resolveTime);
|
paramMap.put("solveWay", solveWay);
|
paramMap.put("solveWayName", solveWayName);
|
paramMap.put("questionId", orderId);
|
updateSql.append(" WHERE ID = :questionId");
|
baseDao.execute(updateSql.toString(), paramMap);
|
//添加处理记录
|
//获取当前所处的节点
|
Map flowMsg = questionFacade.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("1");
|
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(flowId).getInstanceById();
|
|
List<Map> list = new ArrayList<Map>();
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName+"处理完成");
|
finishEntity.setDeal_note(reason);
|
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
|
workflowCoreService.finishNode(base, node, finishEntity);
|
if("1".equals(solve)){
|
workflowCoreService.finishWorkFlow(base);
|
}else{
|
workflowCoreService.closeWorkFlow(base);
|
}
|
|
}
|
|
@Override
|
public Map getZdMsgById(String id) {
|
String sql = "SELECT * FROM QUESTION_ZD_HISTORY WHERE ID = :id ORDER BY CREATE_TIME DESC";
|
return baseDao.queryForMap(sql, new SqlParameter("id",id));
|
}
|
|
@Override
|
public void updateQuestionOpen(HttpServletRequest request) {
|
Map user = WebUtil.getWywEngineerLoginUser(request);
|
String createUserId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String createUserName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
String orderId = request.getParameter("orderId");
|
String note = request.getParameter("note");
|
Map param = new HashMap();
|
param.put("bus_id", orderId);
|
String sql = "SELECT * FROM HANG_UP_INFO WHERE STATE = 1 AND BUS_ID = :bus_id ";
|
Map qgMap = baseDao.queryForMap(sql, param);
|
SC_WORKFLOW_QUESTION question = new SC_WORKFLOW_QUESTION();
|
question.setId(orderId).setState(ConvertUtil.obj2Integer(qgMap.get("BUS_STATE"))).update();
|
String basesql = "UPDATE WORKFLOW_BASE SET WFSTATE = 1 WHERE BUSINESS_ID = :bus_id ";
|
baseDao.execute(basesql, param);
|
HANG_UP_INFO qg = new HANG_UP_INFO(ConvertUtil.obj2StrBlank(qgMap.get("ID")));
|
qg.setState(2).setHang_down_reason(note).update();
|
}
|
|
@Override
|
public String getIsOpenQuestion(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String userId = WebUtil.getWywEngineerLoginUser(request).get("ID").toString();
|
String sql = "SELECT COUNT(ID) FROM HANG_UP_INFO WHERE BUS_ID = :bus_id AND STATE = 1 AND HANG_UP_USERID = :userId ";
|
Map param = new HashMap();
|
param.put("bus_id", orderId);
|
param.put("userId", userId);
|
|
int count = baseDao.queryForInteger(sql, param);
|
if(count > 0){
|
return "1";
|
}else{
|
return "0";
|
}
|
}
|
}
|