管道基础大数据平台系统开发-【后端】-Server
13693261870
2024-03-25 b6b0cb226fcf184525ee7b36af3a09471e9c0057
src/main/java/com/lf/server/controller/show/InquiryController.java
@@ -2,21 +2,31 @@
import com.lf.server.annotation.SysLog;
import com.lf.server.controller.all.BaseQueryController;
import com.lf.server.entity.all.HttpStatus;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.DownloadTileEntity;
import com.lf.server.entity.ctrl.ShpRecordEntity;
import com.lf.server.entity.data.DownloadEntity;
import com.lf.server.entity.data.MetaFileEntity;
import com.lf.server.entity.data.PublishEntity;
import com.lf.server.entity.sys.UserEntity;
import com.lf.server.helper.AesHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.helper.WebHelper;
import com.lf.server.service.all.BaseUploadService;
import com.lf.server.service.data.DownloadService;
import com.lf.server.service.data.PublishService;
import com.lf.server.service.show.InquiryService;
import com.lf.server.service.sys.TokenService;
import io.swagger.annotations.Api;
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.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@@ -37,6 +47,9 @@
    @Autowired
    InquiryService inquiryService;
    @Resource
    PublishService publishService;
    @SysLog()
    @ApiOperation(value = "上传Shp文件读取第一条记录的WKT")
@@ -64,4 +77,66 @@
            return fail(ex, null);
        }
    }
    @SysLog()
    @ApiOperation(value = "下载瓦片")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "dt", value = "下载瓦片实体类", dataType = "DownloadTileEntity", paramType = "body")
    })
    @ResponseBody
    @PostMapping(value = "/downloadTiles")
    public ResponseMsg<Object> downloadTiles(@RequestBody DownloadTileEntity dt, HttpServletRequest req, HttpServletResponse res) {
        try {
            if (null == dt || null == dt.getPubid() || StringHelper.isEmpty(dt.getPwd())) {
                return fail("发布ID和密码不能为空");
            }
            String err = dt.verifyCoords();
            if (null != err) {
                return fail(err);
            }
            if (!DownloadService.decryptPwd(dt)) {
                return fail("密码解密失败", null);
            }
            PublishEntity pub = publishService.selectById(dt.getPubid());
            if (null == pub) {
                return fail("发布数据不存在");
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            String guid = inquiryService.zipTiles(dt, pub, ue);
            if (null == guid) {
                return fail("没有瓦片需要打包下载");
            }
            return success(guid);
        } catch (Exception ex) {
            return fail(ex, null);
        }
    }
    @SysLog()
    @ApiOperation(value = "下载文件")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "guid", value = "文件GUID", dataType = "String", paramType = "query")
    })
    @ResponseBody
    @GetMapping(value = "/downloadFile")
    public void downloadFile(String guid, HttpServletRequest req, HttpServletResponse res) {
        try {
            DownloadEntity de = downloadService.selectByGuid(guid);
            if (null == de) {
                WebHelper.writeInfo(HttpStatus.NOT_FOUND, "文件不存在", res);
                return;
            }
            UserEntity ue = tokenService.getCurrentUser(req);
            downlogService.updateInfos(ue, de, req);
            String filePath = downloadService.getDownloadFilePath(de);
            WebHelper.download(filePath, de.getName(), res);
        } catch (Exception ex) {
            WebHelper.writeInfo(HttpStatus.ERROR, ex.getMessage(), res);
        }
    }
}