cy
2022-06-22 425675051e544cf29b2132615cfbf7a93dc5e51f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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;
    }
 
}