package cn.ksource.web.facade.wechat.ewyw;
|
|
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.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.JsonUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.web.Constants;
|
|
@Service("ewOrderFacade")
|
public class EwOrderFacadeImpl implements EwOrderFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Override
|
public String queryCurrentNodeId(String orderId, String userId) {
|
String nodeId = new String();
|
String selectSql = "SELECT ID,CURRENT_NODE_ID,CURRENT_DEALER_ID,DEAL_TYPE FROM WORKFLOW_BASE WHERE BUSINESS_ID = :orderId ";
|
Map baseMsg = baseDao.queryForMap(selectSql,new SqlParameter("orderId",orderId));
|
if(null!=baseMsg && baseMsg.size()>0) {
|
String flowId = ConvertUtil.obj2StrBlank(baseMsg.get("ID"));
|
String dealType = ConvertUtil.obj2StrBlank(baseMsg.get("DEAL_TYPE"));
|
String currentNodeId = ConvertUtil.obj2StrBlank(baseMsg.get("CURRENT_NODE_ID"));
|
if(dealType.equals("1")) {
|
String current_dealer_id = ConvertUtil.obj2StrBlank(baseMsg.get("CURRENT_DEALER_ID"));
|
if(!StringUtil.notEmpty(current_dealer_id)) {
|
nodeId = currentNodeId;
|
}
|
} else if (dealType.equals("2")) {
|
//通过当前节点编号查询节点信息
|
String sql = "SELECT ID,FLOWSTATE,SAME_NODE_KEY FROM WORKFLOW_NODE WHERE ID = :currentNodeId ";
|
Map node = baseDao.queryForMap(sql,new SqlParameter("currentNodeId",currentNodeId));
|
String sameNodeKey = ConvertUtil.obj2StrBlank(node.get("SAME_NODE_KEY"));
|
if(StringUtil.notEmpty(sameNodeKey)) {
|
String nodeSql = "SELECT ID,FLOWSTATE,CURRENT_DEALER_ID FROM WORKFLOW_NODE WHERE FLOWID = :flowId AND SAME_NODE_KEY = :sameNodeKey";
|
List<Map> nodes = baseDao.queryForList(nodeSql,new SqlParameter("flowId",flowId).addValue("sameNodeKey", sameNodeKey));
|
for(Map nd : nodes) {
|
String clr = ConvertUtil.obj2StrBlank(nd.get("CURRENT_DEALER_ID"));
|
if(clr.equals(userId)) {
|
String flowState = ConvertUtil.obj2StrBlank(nd.get("FLOWSTATE"));
|
if(flowState.equals("1")) {
|
nodeId = ConvertUtil.obj2StrBlank(nd.get("ID"));
|
}
|
}
|
}
|
} else {
|
//判断flowState是否为1
|
String flowState = ConvertUtil.obj2StrBlank(node.get("FLOWSTATE"));
|
if(flowState.equals("1")) {
|
nodeId = currentNodeId;
|
}
|
}
|
}
|
|
}
|
return nodeId;
|
}
|
|
/**
|
* 查询我的待响应和进行中的工单数据
|
*/
|
@Override
|
public PageInfo queryMyJxlAndDxyOrders(PageInfo pageInfo,Map<String, String> params) {
|
StringBuilder builder = new StringBuilder();
|
builder.append(" SELECT D.* FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE,A.ID AS NODE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND (A.FLOWSTATE = :jddcl OR A.FLOWSTATE = :jdjxz) ");
|
builder.append(")D");
|
params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
|
params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
|
|
builder.append( " ORDER BY D.CREATETIME DESC ");
|
|
PageInfo result = baseDao.queryforSplitPageInfo(pageInfo,builder.toString(),params);
|
return result;
|
}
|
|
|
/**
|
* 查询我的待响应和进行中的工单数量
|
*/
|
@Override
|
public int queryMyJxlAndDxyOrdersCount(Map<String, String> params) {
|
StringBuilder builder = new StringBuilder();
|
builder.append(" SELECT COUNT(D.ID) FROM ( ");
|
//查询处理人是我的
|
builder.append(" SELECT B.*,A.FLOWSTATE,A.ID AS NODE_ID FROM WORKFLOW_NODE A,WORKFLOW_BASE B WHERE A.FLOWID = B.ID AND A.CURRENT_DEALER_ID = :userId AND (A.FLOWSTATE = :jddcl OR A.FLOWSTATE = :jdjxz) ");
|
builder.append(")D");
|
params.put("jddcl", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_UNDISPOSE));
|
params.put("jdjxz", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_NODE_FLOWSTATE_DOING));
|
|
int count = baseDao.queryForInteger(builder.toString(),params);
|
return count;
|
}
|
|
}
|