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
package cn.ksource.web.facade.uc.order;
 
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.SC_WORKFLOW_INCIDENT_LOCAL;
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.core.web.WebUtil;
import cn.ksource.web.Constants;
import cn.ksource.web.facade.incident.IncidentFacade;
import cn.ksource.web.service.file.FileService;
 
@Service("ucZcywFacade")
public class UcZcywFacadeImpl implements UcZcywFacade {
    
    @Autowired
    private BaseDao baseDao;
    
    @Autowired
    private IncidentFacade incidentFacade;
    
    @Autowired
    private FileService fileService;
    
    @Override
    public int zcywCountForFwt(Map<String,String> params) {
        
        StringBuilder builder = new StringBuilder();
        builder.append("SELECT COUNT(WB.ID) ");
        builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B WHERE WB.BUSINESS_ID = B.ID ");
        builder.append("AND  WB.BUSINESSTYPE = :businessType ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        
        builder.append(" AND B.CUSTOMER_ID = :cusId ");
        
        String orderName = params.get("orderName");
        if(StringUtil.notEmpty(orderName)) {
            builder.append(" AND WB.WFNAME LIKE :orderName ");
            params.put("orderName", "%"+orderName+"%");
        }
        
        
        String orderStatus = params.get("orderStatus");
        if(StringUtil.notEmpty(orderStatus)) {
            builder.append(" AND WB.WFSTATE = :orderStatus ");
            params.put("orderStatus", orderStatus);
        }
        
        String orderCode = params.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND WB.ORDER_CODE LIKE :orderCode ");
            params.put("orderCode", "%"+orderCode+"%");
        }
        return baseDao.queryForInteger(builder.toString(), params);
    }
 
    @Override
    public PageInfo zcywDataForFwt(PageInfo pageInfo,Map<String,String> params) {
        
        StringBuilder builder = new StringBuilder();
        builder.append("SELECT WB.ID,WB.ORDER_CODE,WB.WFNAME,WB.BUSINESSTYPE,WB.CREATERNAME,WB.CREATETIME,WB.WFNOTE, ");
        builder.append("WB.CURRENT_NODE_ID,WB.CURRENT_NODE_NAME,WB.CUSTOMER_NAME,WB.CURRENT_DEALER_NAME,WB.BUSINESS_ID,WB.WFSTATE,B.ANSWER_TIMEOUT,B.DEAL_TIMEOUT ");
        builder.append("FROM WORKFLOW_BASE WB,SC_WORKFLOW_INCIDENT_LOCAL B WHERE WB.BUSINESS_ID = B.ID ");
        builder.append("AND  WB.BUSINESSTYPE = :businessType ");
        params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_INCIDENT_LOCAL));
        
        builder.append(" AND B.CUSTOMER_ID = :cusId ");
        
        
        String orderName = params.get("orderName");
        if(StringUtil.notEmpty(orderName)) {
            builder.append(" AND WB.WFNAME LIKE :orderName ");
            params.put("orderName", "%"+orderName+"%");
        }
        
        
        String orderStatus = params.get("orderStatus");
        if(StringUtil.notEmpty(orderStatus)) {
            builder.append(" AND WB.WFSTATE = :orderStatus ");
            params.put("orderStatus", orderStatus);
        }
        
        String orderCode = params.get("orderCode");
        if(StringUtil.notEmpty(orderCode)) {
            builder.append(" AND WB.ORDER_CODE LIKE :orderCode ");
            params.put("orderCode", "%"+orderCode+"%");
        }
        
        
        builder.append( " ORDER BY WB.CREATETIME DESC ");
        
        
        return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
    }
    
    /**
     * 查询驻场运维记录基本信息
     */
    @Override
    public Map queryIncidentLocalBaseMsg(String orderId) {
        String selectSql = "SELECT A.*,N.ANSWER_TIME AS XY_TIME,B.WFSTATE FROM SC_WORKFLOW_INCIDENT_LOCAL A LEFT JOIN  WORKFLOW_BASE B ON A.ID = B.BUSINESS_ID LEFT JOIN WORKFLOW_NODE N ON B.CURRENT_NODE_ID = N.ID  WHERE A.ID = :orderId ";
        Map baseMap =  baseDao.queryForMap(selectSql,new SqlParameter("orderId",orderId));
        if(null!=baseMap && baseMap.size()>0) {
            //查询附件
            List<Map> files = fileService.getFileList(orderId);
            baseMap.put("files", files);
        }
        return baseMap;
    }
    
    @Override
    public Map queryWcReport(String orderId) {
        Map incident = new SC_WORKFLOW_INCIDENT_LOCAL(orderId).getBeanMapById();
        String flowId = ConvertUtil.obj2StrBlank(incident.get("FLOW_ID"));
        
        //查询关联工单
        if(null!=incident && incident.size()>0) {
            List<Map> orders = queryOrders(orderId);
            List<Map> devices = incidentFacade.queryDevices(flowId);
            List<Map> files = queryFiles(orderId);
            
            incident.put("orders", orders);
            incident.put("devices", devices);
            incident.put("files", files);
        }
        return incident;
    }
    
    @Override
    public List queryOrders(String orderId) {
        String selectSql = "SELECT A.*,B.ID AS LINK_ID FROM SC_WORKFLOW_INCIDENT_LOCAL_ORDER B,WORKFLOW_BASE A WHERE A.ID = B.RELATE_FLOW_ID AND  A.WFSTATE != :wfstate AND  B.BUSINESS_ID = :businessId ";
        List<Map> orders = baseDao.queryForList(selectSql,new SqlParameter("businessId",orderId).addValue("wfstate", Constants.WORKFLOW_BASE_WFSTATE_DELETE));
        return orders;
    }
    
    @Override
    public List queryFiles(String orderId) {
        List<Map> files = fileService.getFileList(orderId,1);
        if(null!=files && files.size()>0) {
            for(Map file : files) {
                file.put("FILE_SIZE", StringUtil.getFileSize(ConvertUtil.obj2Double(file.get("FILE_SIZE"))));
            }
        }
        return files;
    }
    
    @Override
    public Map queryCloseReport(String orderId) {
        Map incident = new SC_WORKFLOW_INCIDENT_LOCAL(orderId).getBeanMapById();
        if(null!=incident && incident.size()>0) {
            String merged_business_id = ConvertUtil.obj2StrBlank(incident.get("MERGED_BUSINESS_ID"));
            if(StringUtil.notEmpty(merged_business_id)) {
                Map linkIncident = new SC_WORKFLOW_INCIDENT_LOCAL(merged_business_id).getBeanMapById();
                incident.put("linkIncident", linkIncident);
            }
        }
        return incident;
    }
 
}