|
@@ -1,24 +1,24 @@
|
|
|
package com.zjugis.yzt.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.zjugis.yzt.beans.entity.StNzydk;
|
|
|
import com.zjugis.yzt.dao.StGddkMapper;
|
|
|
import com.zjugis.yzt.beans.entity.StGddk;
|
|
|
import com.zjugis.yzt.service.StGddkService;
|
|
|
import com.zjugis.yzt.utils.ExcelUtils;
|
|
|
+import com.zjugis.yzt.utils.ZipFileProcessor;
|
|
|
import com.zjugis.yzt.utils.geocomm.ParseResult;
|
|
|
import com.zjugis.yzt.utils.geocomm.TxtReader;
|
|
|
+import com.zjugis.yzt.utils.FileUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
-import java.io.FileOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
-import java.util.zip.ZipEntry;
|
|
|
-import java.util.zip.ZipInputStream;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* @program: yh_yzt
|
|
@@ -30,208 +30,215 @@ import java.util.zip.ZipInputStream;
|
|
|
@Slf4j
|
|
|
public class StGddkServiceImpl extends ServiceImpl<StGddkMapper, StGddk> implements StGddkService {
|
|
|
@Override
|
|
|
- public boolean uploadGdData(MultipartFile zipFile) {
|
|
|
+ public List<String> uploadGdData(MultipartFile zipFile) {
|
|
|
+ List<String> errorList = new ArrayList<>();
|
|
|
if (zipFile.isEmpty()) {
|
|
|
- log.error("上传文件为空");
|
|
|
- return false;
|
|
|
+ String msg = "上传文件为空";
|
|
|
+ log.error(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ return errorList;
|
|
|
}
|
|
|
-
|
|
|
File tempDir = null;
|
|
|
try {
|
|
|
- // 创建临时目录
|
|
|
- tempDir = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString());
|
|
|
- if (!tempDir.exists()) {
|
|
|
- tempDir.mkdirs();
|
|
|
- }
|
|
|
-
|
|
|
- // 解压ZIP文件
|
|
|
- Map<String, File> txtFiles = new HashMap<>();
|
|
|
- File xlsxFile = null;
|
|
|
-
|
|
|
- try (ZipInputStream zis = new ZipInputStream(zipFile.getInputStream())) {
|
|
|
- ZipEntry entry;
|
|
|
- while ((entry = zis.getNextEntry()) != null) {
|
|
|
- File newFile = new File(tempDir, entry.getName());
|
|
|
- if (entry.isDirectory()) {
|
|
|
- newFile.mkdirs();
|
|
|
- } else {
|
|
|
- // 确保父目录存在
|
|
|
- new File(newFile.getParent()).mkdirs();
|
|
|
- try (FileOutputStream fos = new FileOutputStream(newFile)) {
|
|
|
- byte[] buffer = new byte[1024];
|
|
|
- int len;
|
|
|
- while ((len = zis.read(buffer)) > 0) {
|
|
|
- fos.write(buffer, 0, len);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (newFile.getName().toLowerCase().endsWith(".xlsx")) {
|
|
|
- xlsxFile = newFile;
|
|
|
- } else if (newFile.getName().toLowerCase().endsWith(".txt")) {
|
|
|
- String fileNameWithoutExt = newFile.getName().substring(0, newFile.getName().lastIndexOf('.'));
|
|
|
- txtFiles.put(fileNameWithoutExt, newFile);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ // 1. 使用ZipFileProcessor处理压缩包
|
|
|
+ ZipFileProcessor.ZipProcessResult zipProcessResult = ZipFileProcessor.processZipFile(zipFile);
|
|
|
+ Map<String, File> txtFiles = zipProcessResult.getTxtFiles();
|
|
|
+ File xlsxFile = zipProcessResult.getXlsxFile();
|
|
|
+ tempDir = zipProcessResult.getTempDir();
|
|
|
if (xlsxFile == null) {
|
|
|
- log.error("ZIP包中未找到XLSX文件");
|
|
|
- return false;
|
|
|
+ String msg = "ZIP包中未找到XLSX文件";
|
|
|
+ log.error(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ return errorList;
|
|
|
+ }
|
|
|
+ // 2. 解析Excel
|
|
|
+ List<Map<String, Object>> batchDataList;
|
|
|
+ try {
|
|
|
+ batchDataList = ExcelUtils.importExcel(
|
|
|
+ new FileInputStream(xlsxFile), xlsxFile.getName(), 0, 1, 0
|
|
|
+ );
|
|
|
+ } catch (Exception e) {
|
|
|
+ String msg = "解析供地信息sheet失败: " + e.getMessage();
|
|
|
+ log.error(msg, e);
|
|
|
+ errorList.add(msg);
|
|
|
+ return errorList;
|
|
|
}
|
|
|
-
|
|
|
- // --- Start: 使用 ExcelUtils.importExcel 解析 XLSX 文件 ---
|
|
|
- List<Map<String, Object>> batchDataList = ExcelUtils.importExcel(
|
|
|
- new FileInputStream(xlsxFile), xlsxFile.getName(), 0, 1, 0
|
|
|
- );
|
|
|
if (batchDataList.isEmpty()) {
|
|
|
- log.warn("未能从 '供地信息' sheet 读取到数据。");
|
|
|
- return false;
|
|
|
+ String msg = "未能从 '供地信息' sheet 读取到数据。";
|
|
|
+ log.warn(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ return errorList;
|
|
|
}
|
|
|
-
|
|
|
- List<StGddk> gddkList = new ArrayList<>();
|
|
|
for (Map<String, Object> row : batchDataList) {
|
|
|
- StGddk gddk = new StGddk();
|
|
|
- // 字段映射,参照StGddk.java
|
|
|
- gddk.setSdzj(getString(row, "属地镇街"));
|
|
|
- gddk.setDkBh(getString(row, "供地索引"));
|
|
|
- gddk.setDkMc(getString(row, "地块名称"));
|
|
|
- gddk.setDkYt(getString(row, "用地性质"));
|
|
|
- gddk.setDkMj(getDouble(row, "土地面积(亩)"));
|
|
|
- gddk.setBz(getString(row, "备注"));
|
|
|
- gddk.setTdZl(getString(row, "土地坐落"));
|
|
|
- gddk.setDwMc(getString(row, "竞得单位"));
|
|
|
- gddk.setGdsy(getString(row, "做地主体"));
|
|
|
- gddk.setZdzt(getString(row, "属地镇街"));
|
|
|
- gddk.setXxz(getString(row, "用地性质"));
|
|
|
- gddk.setJhqk(getString(row, "计划情况"));
|
|
|
- gddk.setXmgs(getString(row, "项目公司"));
|
|
|
- gddk.setTdmj(getString(row, "土地面积(平方米)"));
|
|
|
- gddk.setRjl(getString(row, "容积率"));
|
|
|
- gddk.setJztl(getString(row, "建筑体量"));
|
|
|
- gddk.setCrfs(getString(row, "出让方式"));
|
|
|
- gddk.setGgsj(getString(row, "公告时间"));
|
|
|
- gddk.setGpbjsj(getString(row, "挂牌报价时间"));
|
|
|
- gddk.setPgj(getString(row, "评估价(万元)"));
|
|
|
- gddk.setQgj(getString(row, "起挂价(万元)"));
|
|
|
- gddk.setQgmj(getString(row, "起挂亩价(万元/亩)"));
|
|
|
- gddk.setQglmj(getString(row, "起挂楼面价(元/平方米)"));
|
|
|
- gddk.setBzj(getString(row, "保证金(万元)"));
|
|
|
- gddk.setSjjndj(getString(row, "实际缴纳定金(万元)"));
|
|
|
- gddk.setJdj(getString(row, "竞得价(万元)"));
|
|
|
- gddk.setJdmj(getString(row, "竞得亩价(万元/亩)"));
|
|
|
- gddk.setJdlmj(getString(row, "竞得楼面价(元/平方米)"));
|
|
|
- gddk.setZcbl(getString(row, "自持比例"));
|
|
|
- gddk.setZcmj(getString(row, "自持面积"));
|
|
|
- gddk.setYlyf(getString(row, "养老用房(平方米)"));
|
|
|
- gddk.setWcfh(getString(row, "无偿返还村集体建筑面积(平方米)"));
|
|
|
- gddk.setYjl(getString(row, "溢价率"));
|
|
|
- gddk.setYjcrj(getString(row, "已交出让金(万元)"));
|
|
|
- gddk.setYjeqj(getString(row, "应交而欠交"));
|
|
|
- gddk.setDyqcrj(getString(row, "第一期出让金额(含保证金)"));
|
|
|
- gddk.setDyqydzfrq(getString(row, "第一期出让金约定支付日期"));
|
|
|
- gddk.setDyqsjzfrq(getString(row, "第一期出让金实际支付日期"));
|
|
|
- gddk.setDyqdqtx(getString(row, "第一期到期提醒"));
|
|
|
- gddk.setDeqcrj(getString(row, "第二期出让金额"));
|
|
|
- gddk.setDeqydzfrq(getString(row, "第二期出让金约定支付日期"));
|
|
|
- gddk.setDeqsjzfrq(getString(row, "第二期出让金实际支付日期"));
|
|
|
- gddk.setDeqdqtx(getString(row, "第二期到期提醒"));
|
|
|
- gddk.setYdjdsj(getString(row, "交地协议书约定交地时间"));
|
|
|
- gddk.setYddgsj(getString(row, "合同约定动工时间"));
|
|
|
- gddk.setYdjgsj(getString(row, "合同约定竣工时间"));
|
|
|
- gddk.setHth(getString(row, "合同号"));
|
|
|
- gddk.setHtqysj(getString(row, "合同签约时间"));
|
|
|
- gddk.setPch(getString(row, "批次号"));
|
|
|
- gddk.setGycl(getString(row, "国有存量用地面积(平方米)"));
|
|
|
- gddk.setStsjlr(getString(row, "省厅系统实际录入情况"));
|
|
|
- gddk.setXzxtjqk(getString(row, "限制性条件情况"));
|
|
|
- gddk.setGdpfh(getString(row, "供地批复号"));
|
|
|
- gddk.setGzglkh(getString(row, "跟踪管理卡号"));
|
|
|
- gddk.setGzfpj(getString(row, "公租房配建"));
|
|
|
- gddk.setZfzdmj(getString(row, "90平方米住房占地面积"));
|
|
|
- gddk.setZdjztl(getString(row, "最大建筑体量(平方米)"));
|
|
|
- gddk.setZzydmj(getString(row, "住宅用地面积(平方米)"));
|
|
|
- gddk.setZzjztl(getString(row, "住宅建筑体量(平方米)"));
|
|
|
- gddk.setSjyjznj(getString(row, "实际已缴滞纳金(万元)"));
|
|
|
- gddk.setZnjjnsj(getString(row, "滞纳金缴纳时间"));
|
|
|
- gddk.setYffs(getString(row, "印刷份数"));
|
|
|
- gddk.setLxr(getString(row, "联系人"));
|
|
|
- gddk.setGddwnd(getString(row, "是否勾地单位拿地"));
|
|
|
- gddk.setFwxsxj(getString(row, "房屋销售限价"));
|
|
|
- gddk.setZdcb(getString(row, "做地成本"));
|
|
|
- gddk.setCrjsfyjq(getString(row, "出让金是否已缴清"));
|
|
|
- gddk.setHtsfyba(getString(row, "合同是否已备案"));
|
|
|
- // 先保存StGddk
|
|
|
- if (!this.save(gddk)) {
|
|
|
- log.error("保存农转用数据失败:{}", gddk.getDkBh());
|
|
|
- return false;
|
|
|
+ StGddk gddk = getStGddk(row);
|
|
|
+ // 3. 保存前先删除已存在数据
|
|
|
+ if (gddk.getDkBh() != null) {
|
|
|
+ QueryWrapper<StGddk> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("dk_bh", gddk.getDkBh());
|
|
|
+ try {
|
|
|
+ this.remove(queryWrapper);
|
|
|
+ } catch (Exception e) {
|
|
|
+ String msg = String.format("删除地块编号为 %s 的旧数据失败: %s", gddk.getDkBh(), e.getMessage());
|
|
|
+ log.error(msg, e);
|
|
|
+ errorList.add(msg);
|
|
|
+ }
|
|
|
}
|
|
|
+ // 保存StGddk
|
|
|
+ try {
|
|
|
+ if (!this.save(gddk)) {
|
|
|
+ String msg = String.format("保存供地数据失败:%s", gddk.getDkBh());
|
|
|
+ log.error(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ String msg = String.format("保存供地数据异常:%s,错误:%s", gddk.getDkBh(), e.getMessage());
|
|
|
+ log.error(msg, e);
|
|
|
+ errorList.add(msg);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 获取保存后的objectid
|
|
|
Integer objectId = gddk.getObjectid();
|
|
|
if (objectId == null) {
|
|
|
- log.error("获取保存后的objectid失败:{}", gddk.getDkBh());
|
|
|
- return false;
|
|
|
+ String msg = String.format("获取保存后的objectid失败:%s", gddk.getDkBh());
|
|
|
+ log.error(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ continue;
|
|
|
}
|
|
|
// 解析txt为Geometry并持久化
|
|
|
String gdsx = gddk.getDkBh();
|
|
|
File txtFile = txtFiles.get(gdsx);
|
|
|
- if (txtFile != null) {
|
|
|
- try (FileInputStream txtInputStream = new FileInputStream(txtFile)) {
|
|
|
- TxtReader txtReader = new TxtReader(txtInputStream);
|
|
|
- ParseResult parseResult = txtReader.read();
|
|
|
- if (parseResult != null && parseResult.getGeometry() != null) {
|
|
|
- String wkt = parseResult.getGeometry().toText();
|
|
|
- // 这里假设updateShapeById参数为(id, wkt)
|
|
|
- int updateCount = ((StGddkMapper) this.baseMapper).updateShapeById(objectId, wkt, 4528);
|
|
|
- if (updateCount <= 0) {
|
|
|
- log.warn("供地索引 {} 的shape字段持久化失败。", gdsx);
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.warn("供地索引 {} 的TXT文件解析失败或未获取到Geometry数据。", gdsx);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("解析供地索引 {} 的TXT文件失败: {}", gdsx, e.getMessage());
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.warn("未找到供地索引 {} 对应的TXT界址点文件。", gdsx);
|
|
|
- }
|
|
|
+ updateShape(errorList, objectId, gdsx, txtFile);
|
|
|
}
|
|
|
- return true;
|
|
|
+ return errorList;
|
|
|
} catch (IOException e) {
|
|
|
- log.error("文件上传或处理失败", e);
|
|
|
- return false;
|
|
|
+ String msg = "文件上传或处理失败: " + e.getMessage();
|
|
|
+ log.error(msg, e);
|
|
|
+ errorList.add(msg);
|
|
|
+ return errorList;
|
|
|
} finally {
|
|
|
// 清理临时文件
|
|
|
if (tempDir != null && tempDir.exists()) {
|
|
|
- deleteDirectory(tempDir);
|
|
|
+ FileUtils.deleteDirectory(tempDir);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 工具方法
|
|
|
- private String getString(Map<String, Object> map, String key) {
|
|
|
- Object value = map.get(key);
|
|
|
- return value == null ? null : value.toString().trim();
|
|
|
+ /**
|
|
|
+ * 将row转换成StGddk
|
|
|
+ *
|
|
|
+ * @param row
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private StGddk getStGddk(Map<String, Object> row) {
|
|
|
+ StGddk gddk = new StGddk();
|
|
|
+ // 字段映射,参照StGddk.java
|
|
|
+ gddk.setSdzj(FileUtils.getString(row, "属地镇街"));
|
|
|
+ gddk.setDkBh(FileUtils.getString(row, "供地索引"));
|
|
|
+ gddk.setDkMc(FileUtils.getString(row, "地块名称"));
|
|
|
+ gddk.setDkYt(FileUtils.getString(row, "用地性质"));
|
|
|
+ gddk.setDkMj(FileUtils.getDouble(row, "土地面积(亩)"));
|
|
|
+ gddk.setBz(FileUtils.getString(row, "备注"));
|
|
|
+ gddk.setTdZl(FileUtils.getString(row, "土地坐落"));
|
|
|
+ gddk.setDwMc(FileUtils.getString(row, "竞得单位"));
|
|
|
+ gddk.setGdsy(FileUtils.getString(row, "做地主体"));
|
|
|
+ gddk.setZdzt(FileUtils.getString(row, "属地镇街"));
|
|
|
+ gddk.setXxz(FileUtils.getString(row, "用地性质"));
|
|
|
+ gddk.setJhqk(FileUtils.getString(row, "计划情况"));
|
|
|
+ gddk.setXmgs(FileUtils.getString(row, "项目公司"));
|
|
|
+ gddk.setTdmj(FileUtils.getString(row, "土地面积(平方米)"));
|
|
|
+ gddk.setRjl(FileUtils.getString(row, "容积率"));
|
|
|
+ gddk.setJztl(FileUtils.getString(row, "建筑体量"));
|
|
|
+ gddk.setCrfs(FileUtils.getString(row, "出让方式"));
|
|
|
+ gddk.setGgsj(FileUtils.getString(row, "公告时间"));
|
|
|
+ gddk.setGpbjsj(FileUtils.getString(row, "挂牌报价时间"));
|
|
|
+ gddk.setPgj(FileUtils.getString(row, "评估价(万元)"));
|
|
|
+ gddk.setQgj(FileUtils.getString(row, "起挂价(万元)"));
|
|
|
+ gddk.setQgmj(FileUtils.getString(row, "起挂亩价(万元/亩)"));
|
|
|
+ gddk.setQglmj(FileUtils.getString(row, "起挂楼面价(元/平方米)"));
|
|
|
+ gddk.setBzj(FileUtils.getString(row, "保证金(万元)"));
|
|
|
+ gddk.setSjjndj(FileUtils.getString(row, "实际缴纳定金(万元)"));
|
|
|
+ gddk.setJdj(FileUtils.getString(row, "竞得价(万元)"));
|
|
|
+ gddk.setJdmj(FileUtils.getString(row, "竞得亩价(万元/亩)"));
|
|
|
+ gddk.setJdlmj(FileUtils.getString(row, "竞得楼面价(元/平方米)"));
|
|
|
+ gddk.setZcbl(FileUtils.getString(row, "自持比例"));
|
|
|
+ gddk.setZcmj(FileUtils.getString(row, "自持面积"));
|
|
|
+ gddk.setYlyf(FileUtils.getString(row, "养老用房(平方米)"));
|
|
|
+ gddk.setWcfh(FileUtils.getString(row, "无偿返还村集体建筑面积(平方米)"));
|
|
|
+ gddk.setYjl(FileUtils.getString(row, "溢价率"));
|
|
|
+ gddk.setYjcrj(FileUtils.getString(row, "已交出让金(万元)"));
|
|
|
+ gddk.setYjeqj(FileUtils.getString(row, "应交而欠交"));
|
|
|
+ gddk.setDyqcrj(FileUtils.getString(row, "第一期出让金额(含保证金)"));
|
|
|
+ gddk.setDyqydzfrq(FileUtils.getString(row, "第一期出让金约定支付日期"));
|
|
|
+ gddk.setDyqsjzfrq(FileUtils.getString(row, "第一期出让金实际支付日期"));
|
|
|
+ gddk.setDyqdqtx(FileUtils.getString(row, "第一期到期提醒"));
|
|
|
+ gddk.setDeqcrj(FileUtils.getString(row, "第二期出让金额"));
|
|
|
+ gddk.setDeqydzfrq(FileUtils.getString(row, "第二期出让金约定支付日期"));
|
|
|
+ gddk.setDeqsjzfrq(FileUtils.getString(row, "第二期出让金实际支付日期"));
|
|
|
+ gddk.setDeqdqtx(FileUtils.getString(row, "第二期到期提醒"));
|
|
|
+ gddk.setYdjdsj(FileUtils.getString(row, "交地协议书约定交地时间"));
|
|
|
+ gddk.setYddgsj(FileUtils.getString(row, "合同约定动工时间"));
|
|
|
+ gddk.setYdjgsj(FileUtils.getString(row, "合同约定竣工时间"));
|
|
|
+ gddk.setHth(FileUtils.getString(row, "合同号"));
|
|
|
+ gddk.setHtqysj(FileUtils.getString(row, "合同签约时间"));
|
|
|
+ gddk.setPch(FileUtils.getString(row, "批次号"));
|
|
|
+ gddk.setGycl(FileUtils.getString(row, "国有存量用地面积(平方米)"));
|
|
|
+ gddk.setStsjlr(FileUtils.getString(row, "省厅系统实际录入情况"));
|
|
|
+ gddk.setXzxtjqk(FileUtils.getString(row, "限制性条件情况"));
|
|
|
+ gddk.setGdpfh(FileUtils.getString(row, "供地批复号"));
|
|
|
+ gddk.setGzglkh(FileUtils.getString(row, "跟踪管理卡号"));
|
|
|
+ gddk.setGzfpj(FileUtils.getString(row, "公租房配建"));
|
|
|
+ gddk.setZfzdmj(FileUtils.getString(row, "90平方米住房占地面积"));
|
|
|
+ gddk.setZdjztl(FileUtils.getString(row, "最大建筑体量(平方米)"));
|
|
|
+ gddk.setZzydmj(FileUtils.getString(row, "住宅用地面积(平方米)"));
|
|
|
+ gddk.setZzjztl(FileUtils.getString(row, "住宅建筑体量(平方米)"));
|
|
|
+ gddk.setSjyjznj(FileUtils.getString(row, "实际已缴滞纳金(万元)"));
|
|
|
+ gddk.setZnjjnsj(FileUtils.getString(row, "滞纳金缴纳时间"));
|
|
|
+ gddk.setYffs(FileUtils.getString(row, "印刷份数"));
|
|
|
+ gddk.setLxr(FileUtils.getString(row, "联系人"));
|
|
|
+ gddk.setGddwnd(FileUtils.getString(row, "是否勾地单位拿地"));
|
|
|
+ gddk.setFwxsxj(FileUtils.getString(row, "房屋销售限价"));
|
|
|
+ gddk.setZdcb(FileUtils.getString(row, "做地成本"));
|
|
|
+ gddk.setCrjsfyjq(FileUtils.getString(row, "出让金是否已缴清"));
|
|
|
+ gddk.setHtsfyba(FileUtils.getString(row, "合同是否已备案"));
|
|
|
+ return gddk;
|
|
|
}
|
|
|
|
|
|
- private Double getDouble(Map<String, Object> map, String key) {
|
|
|
- Object value = map.get(key);
|
|
|
- if (value == null || value.toString().trim().isEmpty()) return null;
|
|
|
- try {
|
|
|
- return Double.parseDouble(value.toString().trim());
|
|
|
- } catch (NumberFormatException e) {
|
|
|
- return null;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- private void deleteDirectory(File directory) {
|
|
|
- File[] allContents = directory.listFiles();
|
|
|
- if (allContents != null) {
|
|
|
- for (File file : allContents) {
|
|
|
- deleteDirectory(file);
|
|
|
+ /**
|
|
|
+ * 更新shape
|
|
|
+ *
|
|
|
+ * @param errorList
|
|
|
+ * @param objectId
|
|
|
+ * @param gdsx
|
|
|
+ * @param txtFile
|
|
|
+ */
|
|
|
+ private void updateShape(List<String> errorList, Integer objectId, String gdsx, File txtFile) {
|
|
|
+ if (txtFile != null) {
|
|
|
+ try (FileInputStream txtInputStream = new FileInputStream(txtFile)) {
|
|
|
+ TxtReader txtReader = new TxtReader(txtInputStream);
|
|
|
+ ParseResult parseResult = txtReader.read();
|
|
|
+ if (parseResult != null && parseResult.getGeometry() != null) {
|
|
|
+ String wkt = parseResult.getGeometry().toText();
|
|
|
+ int updateCount = ((StGddkMapper) this.baseMapper).updateShapeById(objectId, wkt, 4528);
|
|
|
+ if (updateCount <= 0) {
|
|
|
+ String msg = String.format("供地索引 %s 的shape字段持久化失败。", gdsx);
|
|
|
+ log.warn(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ String msg = String.format("供地索引 %s 的TXT文件解析失败或未获取到Geometry数据。", gdsx);
|
|
|
+ log.warn(msg);
|
|
|
+ errorList.add(msg);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ String msg = String.format("解析供地索引 %s 的TXT文件失败: %s", gdsx, e.getMessage());
|
|
|
+ log.error(msg);
|
|
|
+ errorList.add(msg);
|
|
|
}
|
|
|
+ } else {
|
|
|
+ String msg = String.format("未找到供地索引 %s 对应的TXT界址点文件。", gdsx);
|
|
|
+ log.warn(msg);
|
|
|
+ errorList.add(msg);
|
|
|
}
|
|
|
- directory.delete();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|