管道基础大数据平台系统开发-【后端】-Server
13693261870
2024-03-13 966b8ec80833c3281a41370a29960156a73360c7
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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
package com.lf.server.service.data;
 
import com.lf.server.entity.ctrl.FmeReqEntity;
import com.lf.server.entity.ctrl.NameValueEntity;
import com.lf.server.entity.ctrl.RegisterEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.helper.RestHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
 
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
 * FME服务类
 * @author WWW
 */
@Service
public class FmeService {
    @Value("${sys.fmeUrl}")
    private String fmeUrl;
 
    @Value("${sys.fmeToken}")
    private String fmeToken;
 
    /**
     * 获取任务状态
     */
    public Object getTaskStatus(String id, HttpServletRequest req) {
        String url = getUrl("datax/task/get", req) + "&id=" + id;
 
        return RestHelper.getForRest(url, Object.class);
    }
 
    /**
     * 下载质检错误结果
     */
    public String getDownloadUrl(String id, HttpServletRequest req) {
        return getUrl("datax/task/downloadResult", req) + "&id=" + id;
    }
 
    /**
     * 1.OSGB检查:.osgb + *倾斜摄影*.xls/.xlsx
     */
    public String checkOsgb(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A8成果质检_OSGB检查", req);
 
        List<NameValueEntity> list = getKeyValues("OSGB检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("DMYX_FBL", fme.imgResolution));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 2.表格数据检查:.xls/.xlsx(排除元数据)
     */
    public String checkXls(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A3成果质检_表格数据检查", req);
 
        List<NameValueEntity> list = getKeyValues("表格数据检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 3.点云检查:.laz + *激光点云*.xls/.xlsx
     */
    public String checkLaz(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A9成果质检_点云检查", req);
 
        List<NameValueEntity> list = getKeyValues("点云检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("LAZ_MD", fme.lazDensity));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 4.高程检查:.tif/.prj/.tfw/.tif.ovr + *地形图*.dwg
     */
    public String checkDem(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A6成果质检_高程检查", req);
 
        List<NameValueEntity> list = getKeyValues("高程检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("GCZWC", fme.demTolerance));
        list.add(new NameValueEntity("ChangeRate", fme.demChangeRate));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 5.属性检查:*dlg*.gdb + *地形图*.dwg
     */
    public String checkAttrs(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A5成果质检_属性检查", req);
 
        List<NameValueEntity> list = getKeyValues("属性检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 6.拓扑检查:*地形图*.dwg
     */
    public String checkTopology(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A4成果质检_拓扑检查", req);
 
        List<NameValueEntity> list = getKeyValues("拓扑检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("S_MCDRC", fme.tolerance));
        list.add(new NameValueEntity("S_XCDRC", fme.tolerance));
        list.add(new NameValueEntity("S_DCDRC", fme.tolerance));
        list.add(new NameValueEntity("OFFSET_GCD", fme.gcdOffset));
        list.add(new NameValueEntity("OFFSET_KZD", fme.kzdOffset));
        list.add(new NameValueEntity("Range_OFFSET", fme.rangeOffset));
        list.add(new NameValueEntity("XG_MAX", fme.xgMax));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 7.图面整饰检查:.dwg
     */
    public String checkDecorate(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A10成果质检_图面整饰检查", req);
 
        List<NameValueEntity> list = getKeyValues("图面整饰检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("S_XLS", "$(ZJPZWJ)\\质检配置表总.xlsx"));
        list.add(new NameValueEntity("S_XLS2", "D:\\Project\\Data\\LF\\temp\\20230107010101\\文件清单.xlsx"));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 8.原点检查:*剖面图*.dwg
     */
    public String checkOrigin(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A11成果质检_原点检查", req);
 
        List<NameValueEntity> list = getKeyValues("原点检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 9.栅格检查:.tif/.prj/.tfw/.tif.ovr + .xls/.xlsx
     */
    public String checkDom(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/A7成果质检_栅格检查", req);
 
        List<NameValueEntity> list = getKeyValues("栅格检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("S_CoordinateSystem", fme.coordinateSystem));
        list.add(new NameValueEntity("DMYX_FBL", fme.imgResolution));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 10.数学基础检查:.shp, .gdb, *元数据*.xls/.xlsx
     */
    public String checkMath(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/B1入库质检_数学基础检查", req);
 
        List<NameValueEntity> list = getKeyValues("数学基础检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 11.元数据检查:*元数据*.xls/.xlsx
     */
    public String checkMeta(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/B5入库质检_元数据检查", req);
 
        List<NameValueEntity> list = getKeyValues("元数据检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 12.总质检:.zip/.7z + .xls/.xlsx
     */
    public String checkMain(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/B0入库质检__总", req);
 
        List<NameValueEntity> list = getKeyValues("总质检");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("S_WBSBG", fme.wbsPath));
        list.add(new NameValueEntity("S_DZDK", fme.isDiZai));
        list.add(new NameValueEntity("DZ_ZLLX", fme.diZaiType));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 13.逻辑一致性检查:.dwg/.xls/.xlsx
     */
    public String checkLogical(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/B3入库质检_逻辑一致性检查", req);
 
        List<NameValueEntity> list = getKeyValues("逻辑一致性检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 14.单项成果完整性检查:.*
     */
    public String checkSingleIntegrity(FmeReqEntity fme, HttpServletRequest req) {
        String url = getUrl("datax/task/run/B6入库质检_单项成果完整性检查", req);
 
        List<NameValueEntity> list = getKeyValues("单项成果完整性检查");
        list.add(new NameValueEntity("XMMC", fme.xmmc));
        list.add(new NameValueEntity("SJZY", fme.sjzy));
        list.add(new NameValueEntity("GCXMYSB", fme.zipPath));
        list.add(new NameValueEntity("SJFL", fme.sjfl));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * a.表格入库:S_RKBG、dirid、parentid,多个以英文逗号隔开
     */
    public String excelLoader(MetaFileEntity meta, HttpServletRequest req) {
        String url = getUrl("datax/task/run/表格入库", req);
 
        List<NameValueEntity> list = getKeyValues("表格入库");
        list.add(new NameValueEntity("S_RKBG", meta.getPath()));
        list.add(new NameValueEntity("COORDSYS", meta.getEpsgCode()));
        list.add(new NameValueEntity("dirid", meta.getName()));
        list.add(new NameValueEntity("depid", meta.getDepcode()));
        list.add(new NameValueEntity("verid", meta.getVerid()));
        list.add(new NameValueEntity("createuser", meta.getCreateUser()));
        list.add(new NameValueEntity("parentid", meta.getEventid()));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * b.CRDS平台交付
     */
    public String crdsPackaging(String dirCode, String major, String isCut, HttpServletRequest req) {
        // datax/task/run/CRDS平台交付_测试
        String url = getUrl("datax/task/run/CRDS平台交付_code测试", req);
 
        List<NameValueEntity> list = getKeyValues("CRDS平台交付");
        list.add(new NameValueEntity("S_FFXMMC", dirCode));
        list.add(new NameValueEntity("MBZY", major));
        list.add(new NameValueEntity("P_WBFW", isCut));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * c.服务注册
     */
    public RegisterEntity serverRegister(String name, String serverUri, String type, HttpServletRequest req) {
        String url = getUrl("resource/res/item", req);
 
        RegisterEntity entity = new RegisterEntity(name, serverUri, type);
 
        String resid = RestHelper.postForRest(url, entity);
        entity.setSerialnum(resid);
 
        return entity;
    }
 
    /**
     * d.服务申请
     */
    public void serverApply(String id, Integer pubid, HttpServletRequest req) {
        String url = getUrl("resource/res/request", req) + "&resourceid=" + id;
 
        RegisterEntity entity = new RegisterEntity(pubid);
 
        RestHelper.postForRest(url, entity);
    }
 
    /**
     * e.删除资源
     */
    public void deleteRes(String id, HttpServletRequest req) {
        String url = getUrl("resource/res/hashid", req) + "&hashid=" + id;
 
        RestHelper.deleteForRest(url);
    }
 
    /**
     * f.计算面积
     */
    public String calcArea(String sjfl, String id, String wjlj, HttpServletRequest req) {
        String url = getUrl("datax/task/run/数据占地面积计算", req);
 
        List<NameValueEntity> list = new ArrayList<>();
        list.add(new NameValueEntity("_name", String.format("%s_%s", "数据占地面积计算", StringHelper.YMDHMS2_FORMAT.format(new Date()))));
        list.add(new NameValueEntity("_terminate_on_error", false));
        list.add(new NameValueEntity("_priority", 100));
        list.add(new NameValueEntity("SJFL", sjfl));
        list.add(new NameValueEntity("ID", id));
        list.add(new NameValueEntity("WJLJ", wjlj));
 
        return RestHelper.postForRest(url, list);
    }
 
    /**
     * 获取Url
     */
    public String getUrl(String subUrl, HttpServletRequest req) {
        String token = WebHelper.getToken(req);
 
        return fmeUrl + subUrl + "?token=" + token;
    }
 
    /**
     * 获取Url
     */
    public String getUrl(String subUrl) {
        return fmeUrl + subUrl + "?token=" + fmeToken;
    }
 
    /**
     * 获取名称值对集合
     */
    public List<NameValueEntity> getKeyValues(String name) {
        List<NameValueEntity> list = new ArrayList<>();
        list.add(new NameValueEntity("_name", String.format("%s_%s", name, StringHelper.YMDHMS2_FORMAT.format(new Date()))));
        list.add(new NameValueEntity("_priority", 100));
        list.add(new NameValueEntity("_terminate_on_error", false));
        list.add(new NameValueEntity("IID", ""));
        list.add(new NameValueEntity("FANOUT_DIR", "$(OrgResultStorage)"));
        list.add(new NameValueEntity("IID_JL", "$(ZJPZWJ)\\IID记录表.xlsx"));
        list.add(new NameValueEntity("S_ZJXZ", "$(ZJPZWJ)\\质检细则总.xlsx"));
        list.add(new NameValueEntity("S_BZPZB", "$(ZJPZWJ)\\质检配置表总.xlsx"));
 
        return list;
    }
}