package com.moon.server.controller.data.upload; import com.moon.server.annotation.SysLog; import com.moon.server.controller.all.BaseController; import com.moon.server.entity.all.ResponseMsg; import com.moon.server.entity.all.StaticData; import com.moon.server.entity.ctrl.FmeReqEntity; import com.moon.server.entity.ctrl.RegisterEntity; import com.moon.server.helper.HttpHelper; import com.moon.server.helper.PathHelper; import com.moon.server.helper.StringHelper; import com.moon.server.service.data.FmeService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; /** * 检查控制器 * @author WWW */ public class CheckController extends BaseController { @Autowired protected PathHelper pathHelper; @Autowired protected FmeService fmeService; @SysLog() @ApiOperation(value = "查询任务状态") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "任务ID", dataType = "String", paramType = "query", example = "29db09ee-2aae-4c62-bec0-0b5c5d8084e4") }) @GetMapping(value = "/selectTaskStatus") public Object selectTaskStatus(String id, HttpServletRequest req) { try { if (StringHelper.isEmpty(id)) { return fail("id不能为空"); } return fmeService.getTaskStatus(id, req); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "下载质检结果") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "任务ID", dataType = "String", paramType = "query", example = "29db09ee-2aae-4c62-bec0-0b5c5d8084e4") }) @GetMapping(value = "/downloadResult") public void downloadResult(String id, HttpServletRequest req, HttpServletResponse res) { try { if (!StringHelper.isEmpty(id)) { String url = fmeService.getDownloadUrl(id, req); HttpHelper httpHelper = new HttpHelper(); // res.sendRedirect(url) httpHelper.service(req, res, url, null); } } catch (Exception ex) { log.error(ex.getMessage(), ex); } } @SysLog() @ApiOperation(value = "提交数据质检") @ApiImplicitParams({ @ApiImplicitParam(name = "entity", value = "FME请求实体类", dataType = "FmeReqEntity", paramType = "body") }) @ResponseBody @PostMapping(value = "/uploadChecks") public ResponseMsg uploadChecks(@RequestBody FmeReqEntity entity, HttpServletRequest req) { try { if (StringHelper.isEmpty(entity.names)) { return fail("任务名称不能为空"); } if (StringHelper.isEmpty(entity.zipPath)) { return fail("请选择待质检的zip文件"); } entity.zipPath = getFullPath(entity.zipPath); if (!isZipFile(entity.zipPath)) { return fail("待质检的zip文件不存在"); } if (entity.names.contains(StaticData.CHECK_MAIN)) { entity.wbsPath = getFullPath(entity.wbsPath); if (!isXlsFile(entity.wbsPath)) { return fail("待质检的WBS文件不存在"); } } List list = new ArrayList<>(); for (String name : entity.names.split(StaticData.COMMA)) { String guid = invoke(name, entity, req); list.add(guid); } return success(list); } catch (Exception ex) { return fail(ex, null); } } /** * 获取文件路径 */ private String getFullPath(String filePath) { return null == filePath ? null : pathHelper.getConfig().getTempPath() + File.separator + filePath; } /** * 是/否为Zip文件 */ private boolean isZipFile(String filePath) { if (null == filePath || !filePath.toLowerCase().endsWith(StaticData.ZIP)) { return false; } File zipFile = new File(filePath); return zipFile.exists() && !zipFile.isDirectory(); } /** * 是/否为Excel文件 */ private boolean isXlsFile(String filePath) { if (null == filePath) { return false; } if (!(filePath.toLowerCase().endsWith(StaticData.XLS) || filePath.toLowerCase().endsWith(StaticData.XLSX))) { return false; } File zipFile = new File(filePath); return zipFile.exists() && !zipFile.isDirectory(); } /** * 方法调用 */ private String invoke(String name, FmeReqEntity entity, HttpServletRequest req) throws Exception { Method method; try { method = FmeService.class.getDeclaredMethod(name, FmeReqEntity.class, HttpServletRequest.class); } catch (Exception ex) { throw new Exception(name + ",该检查方法不存在"); } Object obj = method.invoke(fmeService, entity, req); return null == obj ? null : obj.toString(); } /*@SysLog() @ApiOperation(value = "查询OSGB检查") @GetMapping(value = "/selectCheckOsgb") public ResponseMsg selectCheckOsgb(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\OSGB检查.zip"; fme.imgResolution = 0.2; String rs = fmeService.checkOsgb(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询表格数据检查") @GetMapping(value = "/selectCheckXls") public ResponseMsg selectCheckXls(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\表格数据检查.zip"; String rs = fmeService.checkXls(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询点云检查") @GetMapping(value = "/selectCheckLaz") public ResponseMsg selectCheckLaz(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\点云检查.zip"; fme.lazDensity = 1; String rs = fmeService.checkLaz(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询高程检查") @GetMapping(value = "/selectCheckDem") public ResponseMsg selectCheckDem(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\高程检查.zip"; fme.demTolerance = 5; fme.demChangeRate = 200; String rs = fmeService.checkDem(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询属性检查") @GetMapping(value = "/selectCheckAttrs") public ResponseMsg selectCheckAttrs(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\属性检查.zip"; String rs = fmeService.checkAttrs(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询拓扑检查") @GetMapping(value = "/selectCheckTopology") public ResponseMsg selectCheckTopology(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\拓扑检查.zip"; fme.polyTolerance = 0.001; fme.lineTolerance = 0.001; fme.pointTolerance = 0.001; fme.gcdOffset = 20; fme.kzdOffset = 100; fme.rangeOffset = 200; fme.xgMax = 0.005; String rs = fmeService.checkTopology(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询图面整饰检查") @GetMapping(value = "/selectCheckDecorate") public ResponseMsg selectCheckDecorate(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\图面整饰检查.zip"; fme.xlsList = "D:\\Project\\Data\\LF\\temp\\20230107010101\\文件清单.xlsx"; String rs = fmeService.checkDecorate(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询原点检查") @GetMapping(value = "/selectCheckOrigin") public ResponseMsg selectCheckOrigin(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\原点检查.zip"; String rs = fmeService.checkOrigin(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询栅格检查") @GetMapping(value = "/selectCheckDom") public ResponseMsg selectCheckDom(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\栅格检查.zip"; fme.coordinateSystem = "CGCS2000/GK3d-93E_FME"; fme.imgResolution = 0.2; String rs = fmeService.checkDom(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询数学基础检查") @GetMapping(value = "/selectCheckMath") public ResponseMsg selectCheckMath(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\数学基础检查.zip"; String rs = fmeService.checkMath(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询元数据检查") @GetMapping(value = "/selectCheckMeta") public ResponseMsg selectCheckMeta(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\元数据检查.zip"; String rs = fmeService.checkMeta(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "查询总质检") @GetMapping(value = "/selectCheckMain") public ResponseMsg selectCheckMain(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02).7z"; fme.wbsPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\项目WBS导出.xlsx"; fme.isDiZai = "NO"; fme.diZaiType = "NO"; String rs = fmeService.checkMain(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "逻辑一致性检查") @GetMapping(value = "/checkLogical") public ResponseMsg checkLogical(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.zipPath = "D:\\LF\\temp\\20230411\\数字化成果.zip"; String rs = fmeService.checkLogical(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "单项成果完整性检查") @GetMapping(value = "/checkSingleIntegrity") public ResponseMsg checkSingleIntegrity(HttpServletRequest req) { try { FmeReqEntity fme = new FmeReqEntity(); fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)"; fme.sjzy = "测量专业"; fme.sjfl = "数字化成果"; fme.zipPath = "D:\\LF\\temp\\20230411\\数字化成果.zip"; String rs = fmeService.checkSingleIntegrity(fme, req); if (StringHelper.isEmpty(rs)) { return fail("检查失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } }*/ @SysLog() @ApiOperation(value = "服务注册") @GetMapping(value = "/selectServerRegister") public ResponseMsg selectServerRegister(HttpServletRequest req) { try { RegisterEntity rs = fmeService.serverRegister("西气东输四线天然气管道工程(吐鲁番-中卫)(00116DT02)", "http://127.0.0.1/LFData/2d/tiles/01/{z}/{x}/{y}.png", "DOM", req); if (null == rs || StringHelper.isEmpty(rs.getSerialnum())) { return fail("失败"); } return success(rs); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "服务申请") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "服务ID", dataType = "String", paramType = "query", example = "195f77eb-19dd-4e34-afc1-fcff8f758f7b"), @ApiImplicitParam(name = "pubid", value = "发布ID", dataType = "Integer", paramType = "query", example = "1"), }) @GetMapping(value = "/selectServerApply") public ResponseMsg selectServerApply(String id, Integer pubid, HttpServletRequest req) { try { fmeService.serverApply(id, pubid, req); return success("OK"); } catch (Exception ex) { return fail(ex, null); } } @SysLog() @ApiOperation(value = "删除资源") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "服务ID", dataType = "String", paramType = "query", example = "6f4b6783-4b98-4d46-a0d9-43cdb5f339dc") }) @GetMapping(value = "/selectDeleteRes") public ResponseMsg selectDeleteRes(String id, HttpServletRequest req) { try { fmeService.deleteRes(id, req); return success("OK"); } catch (Exception ex) { return fail(ex, null); } } }