管道基础大数据平台系统开发-【后端】-Server
13693261870
2024-03-21 e55b5aaddc111abc8ae61260eb20fddf6b089c07
src/main/java/com/lf/server/controller/data/upload/CheckController.java
@@ -3,14 +3,28 @@
import com.lf.server.annotation.SysLog;
import com.lf.server.controller.all.BaseController;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.FmeReqEntity;
import com.lf.server.entity.ctrl.RegisterEntity;
import com.lf.server.helper.HttpHelper;
import com.lf.server.helper.PathHelper;
import com.lf.server.helper.StringHelper;
import com.lf.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;
/**
 * 检查控制器
@@ -18,7 +32,202 @@
 */
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<Object> 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<String> 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<Object> 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<Object> 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<Object> 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 = "查询高程检查")
@@ -26,7 +235,6 @@
    public ResponseMsg<Object> selectCheckDem(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\高程检查.zip";
            fme.demTolerance = 5;
@@ -39,7 +247,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -49,7 +257,6 @@
    public ResponseMsg<Object> selectCheckAttrs(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.sjzy = "测量专业";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\属性检查.zip";
@@ -61,7 +268,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -71,7 +278,6 @@
    public ResponseMsg<Object> selectCheckTopology(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\拓扑检查.zip";
            fme.polyTolerance = 0.001;
@@ -89,7 +295,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -99,7 +305,6 @@
    public ResponseMsg<Object> selectCheckDecorate(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\图面整饰检查.zip";
            fme.xlsList = "D:\\Project\\Data\\LF\\temp\\20230107010101\\文件清单.xlsx";
@@ -111,7 +316,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -121,7 +326,6 @@
    public ResponseMsg<Object> selectCheckOrigin(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\原点检查.zip";
@@ -132,7 +336,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -142,7 +346,6 @@
    public ResponseMsg<Object> selectCheckDom(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.sjzy = "测量专业";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\栅格检查.zip";
@@ -156,7 +359,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -166,7 +369,6 @@
    public ResponseMsg<Object> selectCheckMath(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.sjzy = "测量专业";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\数学基础检查.zip";
@@ -178,7 +380,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -188,7 +390,6 @@
    public ResponseMsg<Object> selectCheckMeta(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.sjzy = "测量专业";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\元数据检查.zip";
@@ -200,7 +401,7 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
@@ -210,7 +411,6 @@
    public ResponseMsg<Object> selectCheckMain(HttpServletRequest req) {
        try {
            FmeReqEntity fme = new FmeReqEntity();
            fme.name = StringHelper.getGuid();
            fme.xmmc = "西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02)";
            fme.sjzy = "测量专业";
            fme.zipPath = "D:\\Project\\Data\\LF\\temp\\20230107010101\\西气东输四线天然气管道工程(吐鲁番-中卫)(00116BT02).7z";
@@ -225,7 +425,99 @@
            return success(rs);
        } catch (Exception ex) {
            return fail(ex.getMessage(), null);
            return fail(ex, null);
        }
    }
    @SysLog()
    @ApiOperation(value = "逻辑一致性检查")
    @GetMapping(value = "/checkLogical")
    public ResponseMsg<Object> 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<Object> 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<Object> 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<Object> 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<Object> selectDeleteRes(String id, HttpServletRequest req) {
        try {
            fmeService.deleteRes(id, req);
            return success("OK");
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
}