liutao 3 days ago
parent
commit
7d09d27cd7

+ 10 - 0
YHYZT/client/src/views/DataManage/Nzy.vue

@@ -309,6 +309,16 @@ export default {
         loading.close();
         if (res.success) {
           this.$Message.success("导入成功!");
+          if (Array.isArray(res.data)) {
+            res.data.forEach(pcbh => {
+              this.$ajax.get('/api/pewg/importFromNzydk', { pcbh }, this).then((res) => {
+                // 可选:每个导入后提示
+                this.$Message.success(`pcbh: ${pcbh} 导入批而未供成功:${res.data}`);
+              }).catch(() => {
+                this.$Message.error(`pcbh: ${pcbh} 导入批而未供失败`);
+              });
+            });
+          }
           this.queryByPage && this.queryByPage(); // 成功后刷新数据
         } else {
           if (res.data && Array.isArray(res.data)) {

+ 1 - 3
YHYZT/server/src/main/java/com/zjugis/yzt/beans/entity/Pewg.java

@@ -106,6 +106,4 @@ public class Pewg {
      */
     private BigDecimal area;
 
-
-    private String shape;
-} 
+}

+ 1 - 2
YHYZT/server/src/main/java/com/zjugis/yzt/beans/vo/PewgVO.java

@@ -94,5 +94,4 @@ public class PewgVO {
      * 剩余面积
      */
     private BigDecimal area;
-    private String shape;
-} 
+}

+ 3 - 3
YHYZT/server/src/main/java/com/zjugis/yzt/controller/PewgController.java

@@ -126,10 +126,10 @@ public class PewgController extends BaseRestController {
     /**
      * 根据pcbh将st_nzydk中"是否农民建房"为"否"的数据批量插入pewg表,并更新shape
      */
-    @PostMapping("/importFromNzydk")
+    @GetMapping("/importFromNzydk")
     public Object importFromNzydkByPcbh(@RequestParam String pcbh) {
-        pewgService.importFromNzydkByPcbh(pcbh);
-        return result(true);
+        int count = pewgService.importFromNzydkByPcbh(pcbh);
+        return result(count);
     }
 
     /**

+ 5 - 2
YHYZT/server/src/main/java/com/zjugis/yzt/controller/StNzydkController.java

@@ -139,9 +139,12 @@ public class StNzydkController extends BaseRestController {
      */
     @PostMapping("/upload")
     public Map uploadStNzydkData(@RequestParam("file") MultipartFile file) {
-        List<String> errorList = stNzydkService.uploadNzydkData(file);
+        Map<String, Object> resultMap = stNzydkService.uploadNzydkData(file);
+        List<String> errorList = (List<String>) resultMap.get("errorList");
+        Set<String> pcbhList = (Set<String>) resultMap.get("pcbhList");
         if (errorList == null || errorList.isEmpty()) {
-            return result(true);
+            // 全部成功,返回pcbhList
+            return result(pcbhList);
         } else {
             return error("部分数据导入失败", ErrorCode.DEFAULT, errorList);
         }

+ 7 - 0
YHYZT/server/src/main/java/com/zjugis/yzt/dao/StNzydkMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zjugis.yzt.beans.entity.StNzydk;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Update;
+import org.apache.ibatis.annotations.Select;
 
 /**
  * @program: yh_yzt
@@ -21,4 +22,10 @@ public interface StNzydkMapper extends BaseMapper<StNzydk> {
      */
     @Update("UPDATE st_nzydk SET shape = st_geometry(#{shape}, #{wkid}) WHERE objectid = #{id}")
     int updateShapeById(Integer id, String shape, int wkid);
+
+    /**
+     * 通过objectid查询st_nzydk表的shape字段(wkt)
+     */
+    @Select("SELECT st_astext(shape) FROM st_nzydk WHERE objectid = #{objectid}")
+    String selectShapeWktByObjectId(Integer objectid);
 } 

+ 1 - 1
YHYZT/server/src/main/java/com/zjugis/yzt/service/PewgService.java

@@ -13,7 +13,7 @@ public interface PewgService extends IService<Pewg> {
     /**
      * 根据pcbh将st_nzydk中"是否农民建房"为"否"的数据批量插入pewg表,并更新shape
      */
-    void importFromNzydkByPcbh(String pcbh);
+    int importFromNzydkByPcbh(String pcbh);
 
     /**
      * 根据ID查询pewg详情(包含面积)

+ 2 - 1
YHYZT/server/src/main/java/com/zjugis/yzt/service/StNzydkService.java

@@ -5,6 +5,7 @@ import com.zjugis.yzt.beans.entity.StNzydk;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * @program: yh_yzt
@@ -13,5 +14,5 @@ import java.util.List;
  * @create: 2024-10-11 14:45
  **/
 public interface StNzydkService extends IService<StNzydk> {
-    List<String> uploadNzydkData(MultipartFile zipFile);
+    Map<String, Object> uploadNzydkData(MultipartFile zipFile);
 } 

+ 9 - 17
YHYZT/server/src/main/java/com/zjugis/yzt/service/impl/PewgServiceImpl.java

@@ -26,7 +26,7 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
 
     @Override
     @Transactional
-    public void importFromNzydkByPcbh(String pcbh) {
+    public int importFromNzydkByPcbh(String pcbh) {
         // 0. 先删除pewg相关记录
         pewgMapper.delete(new QueryWrapper<Pewg>().eq("pcbh", pcbh));
         // 1. 查询所有st_nzydk记录
@@ -35,19 +35,7 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
                         .eq("pcbh", pcbh)
                         .eq("nmjf", "否")
         );
-        // 查询pewg表中pcbh=参数的第一条记录,获取shape的wkt
-        String firstWkt = null;
-        Integer firstObjectId = null;
-
-        List<Map<String, Object>> pewgList = pewgMapper.selectMaps(new QueryWrapper<Pewg>()
-                .eq("pcbh", pcbh)
-                .last("limit 1")
-                .select("objectid", "st_astext(shape) as wkt"));
-        if (pewgList != null && !pewgList.isEmpty()) {
-            Map<String, Object> first = pewgList.get(0);
-            firstWkt = (String) first.get("wkt");
-            firstObjectId = (Integer) first.get("objectid");
-        }
+        int successCount = 0;
         for (StNzydk nzy : nzyList) {
             Pewg pewg = new Pewg();
             // 字段映射
@@ -66,12 +54,16 @@ public class PewgServiceImpl extends ServiceImpl<PewgMapper, Pewg> implements Pe
             pewg.setPzMj(nzy.getPzMj());
             pewg.setNmjf(nzy.getNmjf());
             pewg.setBz(nzy.getBz());
-            this.save(pewg);
-            // shape字段更新
-            if (firstWkt != null && firstObjectId != null) {
+            if (this.save(pewg)) {
+                successCount++;
+            }
+            // shape字段更新,先查st_nzydk表
+            String firstWkt = stNzydkMapper.selectShapeWktByObjectId(nzy.getObjectid());
+            if (firstWkt != null && !firstWkt.isEmpty()) {
                 pewgMapper.updateShapeById(pewg.getObjectid(), firstWkt, 4528);
             }
         }
+        return successCount;
     }
 
     @Override

+ 14 - 6
YHYZT/server/src/main/java/com/zjugis/yzt/service/impl/StNzydkServiceImpl.java

@@ -33,13 +33,17 @@ import java.util.*;
 public class StNzydkServiceImpl extends ServiceImpl<StNzydkMapper, StNzydk> implements StNzydkService {
 
     @Override
-    public List<String> uploadNzydkData(MultipartFile zipFile) {
+    public Map<String, Object> uploadNzydkData(MultipartFile zipFile) {
+        Map<String, Object> resultMap = new HashMap<>();
         List<String> errorList = new ArrayList<>();
+        Set<String> pcbhSet = new HashSet<>();
+        resultMap.put("errorList", errorList);
+        resultMap.put("pcbhList", pcbhSet);
         if (zipFile.isEmpty()) {
             String msg = "上传文件为空";
             log.error(msg);
             errorList.add(msg);
-            return errorList;
+            return resultMap;
         }
 
         File tempDir = null;
@@ -63,7 +67,7 @@ public class StNzydkServiceImpl extends ServiceImpl<StNzydkMapper, StNzydk> impl
                 String msg = "解析批次信息sheet失败: " + e.getMessage();
                 log.error(msg, e);
                 errorList.add(msg);
-                return errorList;
+                return resultMap;
             }
             if (!batchDataList.isEmpty()) {
                 Map<String, Object> batchData = batchDataList.get(0);
@@ -86,7 +90,7 @@ public class StNzydkServiceImpl extends ServiceImpl<StNzydkMapper, StNzydk> impl
                 String msg = "解析项目信息sheet失败: " + e.getMessage();
                 log.error(msg, e);
                 errorList.add(msg);
-                return errorList;
+                return resultMap;
             }
             if (projectInfoList.isEmpty()) {
                 String msg = "未能从 '农转用项目信息' sheet 读取到数据。";
@@ -144,15 +148,19 @@ public class StNzydkServiceImpl extends ServiceImpl<StNzydkMapper, StNzydk> impl
                     log.error(msg, e);
                     errorList.add(msg);
                 }
+                // 收集pcbh
+                if (stNzydk.getPcbh() != null && !stNzydk.getPcbh().isEmpty()) {
+                    pcbhSet.add(stNzydk.getPcbh());
+                }
             }
 
-            return errorList;
+            return resultMap;
 
         } catch (IOException e) {
             String msg = "文件上传或处理失败: " + e.getMessage();
             log.error(msg, e);
             errorList.add(msg);
-            return errorList;
+            return resultMap;
         } finally {
             // 清理临时文件
             if (tempDir != null && tempDir.exists()) {