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 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 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 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; } }