cy
2022-06-22 6e06bba1c89f8077e29d0fbf0ce12f89f027d8d2
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
package cn.ksource.web.facade.uc.order;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import cn.ksource.beans.SC_WORKFLOW_CI_REMIND;
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.StringUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.service.order.OrderService;
 
@Service("ucCiRemindFacade")
public class UcCiRemindFacadeImpl implements UcCiRemindFacade {
    
    @Autowired
    private BaseDao baseDao;
    
    @Autowired
    private OrderService orderService;
    
    @Override
    public int queryRemindOrderCount(Map<String,String> params) {
        StringBuilder builder = new StringBuilder();
        
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
        
        builder = getAllRemindSql(builder,params);
        String sql = "select count(*) from ( " + builder.toString() + " ) t" ;
        return baseDao.queryForInteger(sql.toString(),params);
    }
 
    @Override
    public PageInfo queryRemindOrderList(PageInfo pageInfo,Map<String,String> params) {
        
        StringBuilder builder = new StringBuilder();
        
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
        
        builder = getAllRemindSql(builder,params);
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
    }
 
    /**
     * 服务台工单列表
     * @param request
     * @return
     */
    private StringBuilder getAllRemindSql(StringBuilder builder,Map<String,String> params){
        String flowState = params.get("flowState");
        String subCustomerId = params.get("subCustomerId");
        
        
        builder.append(" SELECT b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, t.PLAN_EXECUTION_DATE, ");
        builder.append(" r.ORDER_CODE,r.ID ORDERID,r.SERVICE_CONTENT,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE  ");
        builder.append(" FROM SC_WORKFLOW_CI_REMIND r  ");
        builder.append(" INNER JOIN WORKFLOW_BASE B on r.FLOW_ID = b.ID INNER JOIN CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID");
        builder.append(" WHERE  b.BUSINESSTYPE = :businessType ");
        //工单状态
        if(StringUtil.notEmpty(flowState)) {
            builder.append(" AND B.WFSTATE =:flowState ");
        }
        
        builder.append(" AND  B.CUSTOMER_ID = :cusId ");
        
        
        //下属单位
        if(StringUtil.isNotBlank(subCustomerId)) {
            builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
            
        }
        //工单编号
        String orderCode = params.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND r.ORDER_CODE LIKE :orderCode");
            params.put("orderCode", "%"+orderCode+"%");
        }
        builder.append(" ORDER BY b.CREATETIME DESC,t.PLAN_EXECUTION_DATE DESC");
        
        return builder;
    }
    
    @Override
    public List<Map> getRemindCiList(String orderId) {
        StringBuilder sql = new StringBuilder();
        sql.append(" select b.ID CIID,r.USER_NAME,r.DEAL_STATE,r.ID,c.NAME CATENAME,c.ID CATEID,b.CINAME,b.SEARCHCODE,b.POSITION from SC_WORKFLOW_CI_REMIND_DETAIL r  ");
        sql.append(" inner join cmdb_ci_base b   ");
        sql.append(" on r.CI_ID = b.ID   ");
        sql.append(" inner join cmdb_ci_category c   ");
        sql.append(" on b.LV3_ID  = c.ID   ");
        sql.append(" where r.ORDER_ID = :orderId  ");
        return baseDao.queryForList(sql.toString(),new SqlParameter("orderId",orderId));
    }
    
    @Override
    public Map getRemindeItem(String flowId) {
        Map param = new HashMap();
        param.put("flowId",flowId);
        StringBuilder sql = new StringBuilder();
        sql.append("SELECT * FROM SC_WORKFLOW_CI_REMIND c ");
        sql.append(" WHERE  c.FLOW_ID=:flowId");
        Map remindMap=baseDao.queryForMap(sql.toString(), param);
        Map map =new HashMap();
        if(remindMap!=null && remindMap.size()>0){
            //服务工程师
            StringBuilder selSql=new StringBuilder();
            selSql.append("SELECT A.CURRENT_DEALER_NAME,B.SJHM FROM workflow_node A,GG_USER B WHERE A.CURRENT_DEALER_ID=B.ID AND A.FLOWID=:flowId AND A.IS_ADMIN=1 AND A.NODE_TEMPLATE_ID=:nodeId");
            Map dealerMap=baseDao.queryForMap(selSql.toString(),new SqlParameter().addValue("flowId", flowId).addValue("nodeId", Constants.REMIND_DEAL));
            System.out.println(dealerMap);
            map.put("dealerMap", dealerMap);
            //应维护配置数量
            sql.setLength(0);
            param.put("orderId",remindMap.get("ID"));
            sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId");
            List detailCountList=baseDao.queryForList(sql.toString(),param);
            map.put("detailCount", detailCountList.size());
            if(detailCountList==null || detailCountList.size()==0)map.put("detailCount", 0);
            //实际维护配置数量
            sql.setLength(0);
            param.put("state",Constants.CI_REMIND_DETAIL_STATE_ONE);
            sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId AND DEAL_STATE=:state");
            List detailStateCountList=baseDao.queryForList(sql.toString(),param);
            map.put("detailStateCount", detailStateCountList.size());
            if(detailStateCountList==null || detailStateCountList.size()==0)map.put("detailStateCount", 0);
            //审核人
            sql.setLength(0);
            sql.append("SELECT * FROM WORKFLOW_NODE WHERE NODE_TEMPLATE_ID=:templateId AND FLOWID=:flowId ORDER BY CREATETIME DESC");
            param.put("templateId", "04e5ae6861fd4ef6bbc521e30b4d11bc");
            param.put("flowId", flowId);
            List<Map> nodeList=baseDao.queryForList(sql.toString(), param);
            if(nodeList!=null && nodeList.size()>0){
                map.put("node", nodeList.get(0));
            }
            //文档列表
            String fileSql = "select * from GG_FILES where EXTEND1=:BUSINESS_ID AND DEL_FLAG = 1 order by  ORDERNUM";
            List<Map> fileList = baseDao.queryForList(fileSql,new SqlParameter("BUSINESS_ID",flowId));
            map.put("fileList", fileList);
            //涉及工单列表
            List<Map> orderList=orderService.queryLinkOrders(flowId);
            if(orderList!=null && orderList.size()>0){
                for(Map orderMap:orderList){
                    orderMap.put("WFSTATE", Constants.getWORKFLOW_BASE_WFSTATE_Label(orderMap.get("WFSTATE").toString()));
                }
            }
            map.put("orderList", orderList);
        }
        map.put("remindMap", remindMap);
        return map;
    }
    
    @Override
    public Map getPatrolInfo(String patrolId) {
        String sql = " select * from SC_WORKFLOW_CI_REMIND_DETAIL where id = :patrolId";
        SqlParameter param = new SqlParameter();
        param.addValue("patrolId", patrolId);
        return baseDao.queryForMap(sql, param);
    }
    
    @Override
    public Map getRemindDetail(String orderId) {
        Map param=new HashMap();
        param.put("orderId", orderId);
        StringBuilder sql=new StringBuilder();
        sql.append("SELECT c.USER_NAME,c.ORDER_NOTE,b.CINAME,b.POSITION,c.FINISH_TIME,c.DEAL_STATE FROM SC_WORKFLOW_CI_REMIND_DETAIL c,CMDB_CI_BASE b ");
        sql.append(" WHERE c.CI_ID=b.ID AND c.ORDER_ID=:orderId");
        List<Map> detailList=baseDao.queryForList(sql.toString(),param);
        if(detailList!=null && detailList.size()>0){
            for(Map map :detailList){
                map.put("DEAL_STATE", Constants.getmapCI_REMIND_DETAIL_STATE(Integer.parseInt(map.get("DEAL_STATE").toString())));
            }
        }
        SC_WORKFLOW_CI_REMIND remind = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById();
        Map map = new HashMap();
        map.put("remind", remind);
        map.put("detailList", detailList);
        return map;
    }
 
}