Przeglądaj źródła

权属审核任务表相关方法

chenendian 1 miesiąc temu
rodzic
commit
62c468b52e

+ 73 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/controller/DecisionTaskController.java

@@ -0,0 +1,73 @@
+package com.siwei.apply.controller;
+
+import com.siwei.apply.domain.DecisionTask;
+import com.siwei.apply.domain.vo.DecisionTaskFilterVo;
+import com.siwei.apply.domain.vo.DecisionTaskVo;
+import com.siwei.apply.service.DecisionTaskService;
+import com.siwei.common.core.domain.R;
+import com.siwei.common.core.web.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/decisionTask")
+public class DecisionTaskController extends BaseController {
+    @Autowired
+    private DecisionTaskService decisionTaskService;
+
+    @PostMapping("")
+    public R<Map<String, String>> add(@RequestBody DecisionTaskVo decisionTaskVo) {
+        try {
+            String id = decisionTaskService.add(decisionTaskVo);
+            Map<String, String> map = new HashMap<>();
+            map.put("id", id);
+            return R.ok(map);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @GetMapping("/{id}")
+    public R<DecisionTask> get(@PathVariable String id) {
+        try {
+            DecisionTask decisionTask = decisionTaskService.get(id);
+            return R.ok(decisionTask);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @PostMapping("/list")
+    public R<Map<String, Object>> getList(@RequestBody DecisionTaskFilterVo filterVo) {
+        try {
+            Map<String, Object> result = decisionTaskService.getList(filterVo);
+            return R.ok(result);
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @PutMapping("")
+    public R<Void> update(@RequestBody DecisionTaskVo decisionTaskVo) {
+        try {
+            decisionTaskService.update(decisionTaskVo);
+            return R.ok();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+    @DeleteMapping("/batch")
+    public R<Void> batchDelete(@RequestBody List<String> ids) {
+        try {
+            decisionTaskService.batchDelete(ids);
+            return R.ok();
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+}

+ 31 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/DecisionTask.java

@@ -0,0 +1,31 @@
+package com.siwei.apply.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class DecisionTask extends BaseId {
+    private String name;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    private String status;
+
+    private BigDecimal shapeArea;
+
+    private byte[] geom;
+
+    private String reportPath;
+
+    private String filePath;
+}

+ 27 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/DecisionTaskFilterVo.java

@@ -0,0 +1,27 @@
+package com.siwei.apply.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class DecisionTaskFilterVo {
+    private String name;
+    private String startTime;
+    private String endTime;
+    private String status;
+
+    private Integer pageNum = 1;
+    private Integer pageSize = 10;
+
+    public Integer getOffset() {
+        return (pageNum - 1) * pageSize;
+    }
+
+    public void validatePageParams() {
+        if (pageNum == null || pageNum < 1) {
+            pageNum = 1;
+        }
+        if (pageSize == null || pageSize < 1 || pageSize > 100) {
+            pageSize = 10;
+        }
+    }
+}

+ 17 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/domain/vo/DecisionTaskVo.java

@@ -0,0 +1,17 @@
+package com.siwei.apply.domain.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class DecisionTaskVo {
+    private String name;
+    private String startTime;
+    private String endTime;
+    private String status;
+    private BigDecimal shapeArea;
+    private byte[] geom;
+    private String reportPath;
+    private String filePath;
+}

+ 23 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/mapper/DecisionTaskMapper.java

@@ -0,0 +1,23 @@
+package com.siwei.apply.mapper;
+
+import com.siwei.apply.domain.DecisionTask;
+import com.siwei.apply.domain.vo.DecisionTaskFilterVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface DecisionTaskMapper {
+    void add(DecisionTask decisionTask);
+
+    DecisionTask get(String id);
+
+    List<DecisionTask> getList(DecisionTaskFilterVo filterVo);
+
+    Integer getCount(DecisionTaskFilterVo filterVo);
+
+    void update(DecisionTask decisionTask);
+
+    void batchDelete(@Param("ids") List<String> ids);
+}

+ 20 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/DecisionTaskService.java

@@ -0,0 +1,20 @@
+package com.siwei.apply.service;
+
+import com.siwei.apply.domain.DecisionTask;
+import com.siwei.apply.domain.vo.DecisionTaskFilterVo;
+import com.siwei.apply.domain.vo.DecisionTaskVo;
+
+import java.util.List;
+import java.util.Map;
+
+public interface DecisionTaskService {
+    String add(DecisionTaskVo decisionTaskVo);
+
+    DecisionTask get(String id);
+
+    Map<String, Object> getList(DecisionTaskFilterVo filterVo);
+
+    void update(DecisionTaskVo decisionTaskVo);
+
+    void batchDelete(List<String> ids);
+}

+ 8 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/ConvergeServiceImpl.java

@@ -923,6 +923,14 @@ public class ConvergeServiceImpl implements ConvergeService {
         return String.class;
     }
 
+    /**
+     * 根据传入的表名称和参数,生成 MDB 文件
+     * @param tableName 表名
+     * @param filePath  文件路径
+     * @param fileName  文件名称
+     * @param columns  数据表字段列表(包含字段名称和类型)
+     * @param dataList 数据列表(每条数据为一个 Map,key 为字段名称,value 为字段值)
+     */
     public void buildMdbFile(String tableName, String filePath, String fileName,List<Map<String, String>> columns,List<Map<String, Object>> dataList)  {
         try {
             // 1. 构造完整的文件路径

+ 61 - 0
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/service/impl/DecisionTaskServiceImpl.java

@@ -0,0 +1,61 @@
+package com.siwei.apply.service.impl;
+
+import com.siwei.apply.domain.DecisionTask;
+import com.siwei.apply.domain.vo.DecisionTaskFilterVo;
+import com.siwei.apply.domain.vo.DecisionTaskVo;
+import com.siwei.apply.mapper.DecisionTaskMapper;
+import com.siwei.apply.service.DecisionTaskService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class DecisionTaskServiceImpl implements DecisionTaskService {
+    @Autowired
+    private DecisionTaskMapper decisionTaskMapper;
+
+    @Override
+    public String add(DecisionTaskVo decisionTaskVo) {
+        DecisionTask decisionTask = new DecisionTask();
+        decisionTask.generateId();
+        BeanUtils.copyProperties(decisionTaskVo, decisionTask);
+        decisionTask.setCreateTime(new Date());
+        decisionTaskMapper.add(decisionTask);
+        return decisionTask.getId();
+    }
+
+    @Override
+    public DecisionTask get(String id) {
+        return decisionTaskMapper.get(id);
+    }
+
+    @Override
+    public Map<String, Object> getList(DecisionTaskFilterVo filterVo) {
+        filterVo.validatePageParams();
+        List<DecisionTask> list = decisionTaskMapper.getList(filterVo);
+        Integer count = decisionTaskMapper.getCount(filterVo);
+        Map<String, Object> map = new HashMap<>();
+        map.put("list", list);
+        map.put("count", count);
+        return map;
+    }
+
+    @Override
+    public void update(DecisionTaskVo decisionTaskVo) {
+        DecisionTask decisionTask = new DecisionTask();
+        BeanUtils.copyProperties(decisionTaskVo, decisionTask);
+        decisionTaskMapper.update(decisionTask);
+    }
+
+    @Override
+    public void batchDelete(List<String> ids) {
+        decisionTaskMapper.batchDelete(ids);
+    }
+}

+ 51 - 1
siwei-modules/siwei-apply/src/main/java/com/siwei/apply/utils/MdbUtil.java

@@ -9,7 +9,6 @@ import org.slf4j.LoggerFactory;
 import java.io.File;
 import java.sql.*;
 import java.util.*;
-import java.util.Base64;
 
 /**
  * 资源码工具
@@ -354,6 +353,57 @@ public class MdbUtil {
         }
     }
 
+    
+
+
+
+
+    /**
+     * 判断两个List<Map<String, Object>>中的数据是否完全一致
+     * (排除map中的geom字段和valid_flag字段的比较,针对其他字段做比较)
+     */
+    private boolean validMapSameData(List<Map<String, Object>> dataList1, List<Map<String, Object>> dataList2) {
+        if (dataList1 == null && dataList2 == null) {
+            return true;
+        }
+        if (dataList1 == null || dataList2 == null) {
+            return false;
+        }
+        if (dataList1.size() != dataList2.size()) {
+            return false;
+        }
+
+        for (int i = 0; i < dataList1.size(); i++) {
+            Map<String, Object> map1 = dataList1.get(i);
+            Map<String, Object> map2 = dataList2.get(i);
+
+            if (map1 == null && map2 == null) continue;
+            if (map1 == null || map2 == null) return false;
+
+            // 获取所有唯一的键
+            Set<String> keys = new HashSet<>(map1.keySet());
+            keys.addAll(map2.keySet());
+
+            for (String key : keys) {
+                // 排除 geom 相关字段和 valid_flag 字段
+                if ("geom".equalsIgnoreCase(key) || "wkt_geom".equalsIgnoreCase(key) || "valid_flag".equalsIgnoreCase(key)) {
+                    continue;
+                }
+
+                Object v1 = map1.get(key);
+                Object v2 = map2.get(key);
+
+                // 使用 Objects.deepEquals 处理 null 和数组 (如 byte[])
+                if (!Objects.deepEquals(v1, v2)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+
+
 
 
 }

+ 92 - 0
siwei-modules/siwei-apply/src/main/resources/mapper/DecisionTaskMapper.xml

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.siwei.apply.mapper.DecisionTaskMapper">
+    <resultMap id="decisionTaskMap" type="com.siwei.apply.domain.DecisionTask">
+        <id column="task_id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="start_time" property="startTime"/>
+        <result column="end_time" property="endTime"/>
+        <result column="create_time" property="createTime"/>
+        <result column="status" property="status"/>
+        <result column="shape_area" property="shapeArea"/>
+        <result column="geom" property="geom"/>
+        <result column="report_path" property="reportPath"/>
+        <result column="file_path" property="filePath"/>
+    </resultMap>
+
+    <insert id="add" parameterType="com.siwei.apply.domain.DecisionTask">
+        INSERT INTO t_decision_task (task_id, name, start_time, end_time, create_time, status, shape_area, geom, report_path, file_path)
+        VALUES (#{id}, #{name}, #{startTime}, #{endTime}, #{createTime}, #{status}, #{shapeArea}, #{geom}, #{reportPath}, #{filePath})
+    </insert>
+
+    <select id="get" resultMap="decisionTaskMap">
+        SELECT *
+        FROM t_decision_task
+        WHERE task_id = #{id}
+    </select>
+
+    <select id="getList" parameterType="com.siwei.apply.domain.vo.DecisionTaskFilterVo" resultMap="decisionTaskMap">
+        SELECT *
+        FROM t_decision_task
+        <where>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND start_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND end_time &lt;= #{endTime}
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+        </where>
+        ORDER BY create_time DESC
+        LIMIT #{pageSize} OFFSET #{offset}
+    </select>
+
+    <select id="getCount" parameterType="com.siwei.apply.domain.vo.DecisionTaskFilterVo" resultType="int">
+        SELECT COUNT(*)
+        FROM t_decision_task
+        <where>
+            <if test="name != null and name != ''">
+                AND name LIKE CONCAT('%', #{name}, '%')
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND start_time &gt;= #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND end_time &lt;= #{endTime}
+            </if>
+            <if test="status != null and status != ''">
+                AND status = #{status}
+            </if>
+        </where>
+    </select>
+
+    <update id="update" parameterType="com.siwei.apply.domain.DecisionTask">
+        UPDATE t_decision_task
+        <set>
+            <if test="name != null">name = #{name},</if>
+            <if test="startTime != null">start_time = #{startTime},</if>
+            <if test="endTime != null">end_time = #{endTime},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="shapeArea != null">shape_area = #{shapeArea},</if>
+            <if test="geom != null">geom = #{geom},</if>
+            <if test="reportPath != null">report_path = #{reportPath},</if>
+            <if test="filePath != null">file_path = #{filePath},</if>
+        </set>
+        WHERE task_id = #{id}
+    </update>
+
+    <delete id="batchDelete">
+        DELETE FROM t_decision_task
+        WHERE task_id IN
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>