Explorar el Código

耕地保护永久基本农田接口

DESKTOP-2K9OVK9\siwei hace 7 meses
padre
commit
6ef945f41c

+ 14 - 9
onemap-modules/onemap-apply/pom.xml

@@ -129,11 +129,11 @@
         </dependency>
 
         <!--主要用于在不同类型的对象之间进行属性的自动拷贝-->
-<!--        <dependency>-->
-<!--            <groupId>net.sf.dozer</groupId>-->
-<!--            <artifactId>dozer</artifactId>-->
-<!--            <version>5.5.1</version>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>net.sf.dozer</groupId>-->
+        <!--            <artifactId>dozer</artifactId>-->
+        <!--            <version>5.5.1</version>-->
+        <!--        </dependency>-->
 
         <!--        <dependency>-->
         <!--            <groupId>com.supermap</groupId>-->
@@ -163,10 +163,15 @@
             <version>1.6.1</version>
         </dependency>
         <!-- JSON 解析器和生成器 -->
-<!--        <dependency>-->
-<!--            <groupId>com.alibaba.fastjson2</groupId>-->
-<!--            <artifactId>fastjson2</artifactId>-->
-<!--        </dependency>-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.alibaba.fastjson2</groupId>-->
+        <!--            <artifactId>fastjson2</artifactId>-->
+        <!--        </dependency>-->
+        <dependency>
+            <groupId>com.drewnoakes</groupId>
+            <artifactId>metadata-extractor</artifactId>
+            <version>2.18.0</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 165 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/controller/gdbh/TGdbhYjjbntController.java

@@ -0,0 +1,165 @@
+package com.onemap.apply.controller.gdbh;
+
+import com.onemap.apply.domain.gdbh.TGdbhJctb;
+import com.onemap.apply.domain.gdbh.TGdbhYjjbntServerDTO;
+import com.onemap.apply.service.gdbh.ITGdbhJctbService;
+import com.onemap.apply.service.gdbh.ITGdbhYjjbntService;
+import com.onemap.common.core.utils.StringUtils;
+import com.onemap.common.core.utils.poi.ExcelUtil;
+import com.onemap.common.core.web.controller.BaseController;
+import com.onemap.common.core.web.domain.AjaxResult;
+import com.onemap.common.core.web.page.TableDataInfo;
+import com.onemap.common.log.annotation.Log;
+import com.onemap.common.log.enums.BusinessType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 耕地保护-永久基本农田Controller
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+@RestController
+@RequestMapping("/gdbh/yjjbnt")
+public class TGdbhYjjbntController extends BaseController {
+
+    @Autowired
+    private ITGdbhYjjbntService itGdbhYjjbntService;
+
+    /**
+     * 查询耕地保护-检测图标数据详情表列表
+     */
+    @GetMapping("/server/list")
+    public AjaxResult list(TGdbhYjjbntServerDTO tGdbhJctb) {
+        return success(itGdbhYjjbntService.selectTGdbhYjjbntServerList(tGdbhJctb));
+    }
+
+    @GetMapping("/ntzl")
+    public AjaxResult ntzllist(String yaer, String xzqhdm, String dlbm) {
+        if (StringUtils.isEmpty(yaer)) {
+            return error("参数缺失");
+        }
+        if (StringUtils.isEmpty(xzqhdm)) {
+            return error("参数缺失");
+        }
+        return success(itGdbhYjjbntService.ntzllist(yaer, xzqhdm, dlbm));
+    }
+
+    @GetMapping("/ntzlfl")
+    public AjaxResult ntzlfl(String yaer, String xzqhdm, String dlbm) {
+        if (StringUtils.isEmpty(yaer)) {
+            return error("参数缺失");
+        }
+        if (StringUtils.isEmpty(xzqhdm)) {
+            return error("参数缺失");
+        }
+        return success(itGdbhYjjbntService.ntzlfl(yaer, xzqhdm, dlbm));
+    }
+
+    /**
+     * 变化规律
+     * @param sourceyaer
+     * @param targeyaer
+     * @param xzqhdm
+     * @param dlbm
+     * @return
+     */
+    @GetMapping("/ntzlbhqk")
+    public AjaxResult ntzlbhqk(String sourceyaer, String targeyaer, String xzqhdm, String dlbm) {
+        if (StringUtils.isEmpty(sourceyaer)) {
+            return error("参数缺失");
+        }
+        if (StringUtils.isEmpty(targeyaer)) {
+            return error("参数缺失");
+        }
+        if (StringUtils.isEmpty(xzqhdm)) {
+            return error("参数缺失");
+        }
+        return success(itGdbhYjjbntService.ntzlbhqk(sourceyaer, targeyaer, xzqhdm, dlbm));
+    }
+
+
+    /**
+     * 变化规律
+     * @param sourceyaer
+     * @param targeyaer
+     * @param xzqhdm
+     * @param dlbm
+     * @return
+     */
+    @GetMapping("/ntzllnbhqk")
+    public AjaxResult ntzllnbhqk(String xzqhdm, String dlbm) {
+        if (StringUtils.isEmpty(xzqhdm)) {
+            return error("参数缺失");
+        }
+        return success(itGdbhYjjbntService.ntzllnbhqk( xzqhdm, dlbm));
+    }
+
+//    /**
+//     * 导出耕地保护-检测图标数据详情表列表
+//     */
+//    @Log(title = "耕地保护-检测图标数据详情表", businessType = BusinessType.EXPORT)
+//    @PostMapping("/export")
+//    public void export(HttpServletResponse response, TGdbhJctb tGdbhJctb) {
+//        List<TGdbhJctb> list = tGdbhJctbService.selectTGdbhJctbList(tGdbhJctb);
+//        ExcelUtil<TGdbhJctb> util = new ExcelUtil<TGdbhJctb>(TGdbhJctb.class);
+//        util.exportExcel(response, list, "耕地保护-检测图标数据详情表数据");
+//    }
+//
+//    /**
+//     * 获取耕地保护-检测图标数据详情表详细信息
+//     */
+//    @GetMapping(value = "/{id}")
+//    public AjaxResult getInfo(@PathVariable("id") String id) {
+//        return success(tGdbhJctbService.selectTGdbhJctbById(id));
+//    }
+//
+//    /**
+//     * 新增耕地保护-检测图标数据详情表
+//     */
+//    @Log(title = "耕地保护-检测图标数据详情表", businessType = BusinessType.INSERT)
+//    @PostMapping
+//    public AjaxResult add(@RequestBody TGdbhJctb tGdbhJctb) {
+//        return toAjax(tGdbhJctbService.insertTGdbhJctb(tGdbhJctb));
+//    }
+//
+//    /**
+//     * 修改耕地保护-检测图标数据详情表
+//     */
+//    @Log(title = "耕地保护-检测图标数据详情表", businessType = BusinessType.UPDATE)
+//    @PutMapping
+//    public AjaxResult edit(@RequestBody TGdbhJctb tGdbhJctb) {
+//        return toAjax(tGdbhJctbService.updateTGdbhJctb(tGdbhJctb));
+//    }
+//
+//    /**
+//     * 删除耕地保护-检测图标数据详情表
+//     */
+//    @Log(title = "耕地保护-检测图标数据详情表", businessType = BusinessType.DELETE)
+//    @DeleteMapping("/{ids}")
+//    public AjaxResult remove(@PathVariable String[] ids) {
+//        return toAjax(tGdbhJctbService.deleteTGdbhJctbByIds(ids));
+//    }
+//
+//
+//    /**
+//     * 新增耕地保护-检测图标数据入库
+//     */
+//    @Log(title = "耕地保护-检测图标数据入库", businessType = BusinessType.INSERT)
+//    @PostMapping("/store")
+//    public AjaxResult addStore(String uploadShpId) {
+//        tGdbhJctbService.handleUploadShpGdbhJctb(uploadShpId);
+//        return toAjax(1);
+//    }
+//
+//
+//    @GetMapping("/date/list")
+//    public AjaxResult QueryDateList(Integer yearNumber) {
+//        return success(tGdbhJctbService.QueryDateList(yearNumber));
+//    }
+
+}

+ 90 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/domain/gdbh/TGdbhYjjbntServerDTO.java

@@ -0,0 +1,90 @@
+package com.onemap.apply.domain.gdbh;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.onemap.common.core.annotation.Excel;
+import com.onemap.common.core.web.domain.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * 耕地保护-检测图标数据详情表对象 t_gdbh_jctb
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+public class TGdbhYjjbntServerDTO extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+    private String id;
+    private String year;
+    private String serverid;
+    private String serverurl;
+    private String serverfwmc;
+    private String serverfwgzkj;
+    private String sjy;
+    private String areaColumn;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getServerid() {
+        return serverid;
+    }
+
+    public void setServerid(String serverid) {
+        this.serverid = serverid;
+    }
+
+    public String getSjy() {
+        return sjy;
+    }
+
+    public void setSjy(String sjy) {
+        this.sjy = sjy;
+    }
+
+    public String getAreaColumn() {
+        return areaColumn;
+    }
+
+    public void setAreaColumn(String areaColumn) {
+        this.areaColumn = areaColumn;
+    }
+
+    public String getServerurl() {
+        return serverurl;
+    }
+
+    public void setServerurl(String serverurl) {
+        this.serverurl = serverurl;
+    }
+
+    public String getServerfwmc() {
+        return serverfwmc;
+    }
+
+    public void setServerfwmc(String serverfwmc) {
+        this.serverfwmc = serverfwmc;
+    }
+
+    public String getServerfwgzkj() {
+        return serverfwgzkj;
+    }
+
+    public void setServerfwgzkj(String serverfwgzkj) {
+        this.serverfwgzkj = serverfwgzkj;
+    }
+}

+ 26 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/gdbh/TGdbhYjjbntMapper.java

@@ -0,0 +1,26 @@
+package com.onemap.apply.mapper.gdbh;
+
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 耕地保护-检测图标数据详情表Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+public interface TGdbhYjjbntMapper {
+
+    public Map<String, Object> ntzl(@Param("sjy") String sjy, @Param("areacolumn") String areacolumn, @Param("yaer") String yaer, @Param("xzqhdm") String xzqhdm, @Param("dlbm") String dlbm);
+
+    public List<Map<String, Object>> ntzlfl(@Param("sjy") String sjy, @Param("areacolumn") String areacolumn, @Param("yaer") String yaer, @Param("xzqhdm") String xzqhdm, @Param("dlbm") String dlbm);
+
+    public Map<String, Object> ntzlbhyear(@Param("sjy") String sjy, @Param("areacolumn") String areacolumn, @Param("yaer") String yaer, @Param("xzqhdm") String xzqhdm, @Param("dlbm") String dlbm);
+
+    public Map<String, Object> ntzllnbh(@Param("sjy") String sjy, @Param("areacolumn") String areacolumn, @Param("yaer") String yaer, @Param("xzqhdm") String xzqhdm, @Param("dlbm") String dlbm);
+
+    public Map<String, Object> qxfl(@Param("sjy") String sjy, @Param("areacolumn") String areacolumn, @Param("yaer") String yaer, @Param("xzqhdm") String xzqhdm, @Param("dlbm") String dlbm);
+
+}

+ 17 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/mapper/gdbh/TGdbhYjjbntServerMapper.java

@@ -0,0 +1,17 @@
+package com.onemap.apply.mapper.gdbh;
+
+import com.onemap.apply.domain.gdbh.TGdbhYjjbntServerDTO;
+
+import java.util.List;
+
+/**
+ * 耕地保护-检测图标数据详情表Mapper接口
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+public interface TGdbhYjjbntServerMapper {
+
+    public List<TGdbhYjjbntServerDTO> selectTGdbhYjjbntServerList(TGdbhYjjbntServerDTO tGdbhYjjbntServerDTO);
+
+}

+ 27 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/ITGdbhYjjbntService.java

@@ -0,0 +1,27 @@
+package com.onemap.apply.service.gdbh;
+
+import com.onemap.apply.domain.gdbh.TGdbhJctb;
+import com.onemap.apply.domain.gdbh.TGdbhYjjbntServerDTO;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 耕地保护-检测图标数据详情表Service接口
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+public interface ITGdbhYjjbntService {
+
+    public List<TGdbhYjjbntServerDTO> selectTGdbhYjjbntServerList(TGdbhYjjbntServerDTO tGdbhJctb);
+
+    Map<String, Object> ntzllist(String yaer, String xzqhdm, String dlbm);
+
+    public List<Map<String, Object>> ntzlfl(String yaer, String xzqhdm, String dlbm);
+
+    Map<String, Object> ntzlbhqk(String sourceyaer, String targetyaer, String xzqhdm, String dlbm);
+
+    List<Map<String, Object>> ntzllnbhqk(String xzqhdm, String dlbm);
+
+}

+ 126 - 0
onemap-modules/onemap-apply/src/main/java/com/onemap/apply/service/gdbh/impl/TGdbhYjjbntServiceImpl.java

@@ -0,0 +1,126 @@
+package com.onemap.apply.service.gdbh.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.onemap.apply.domain.gdbh.*;
+import com.onemap.apply.mapper.gdbh.TGdbhJctbFileMapper;
+import com.onemap.apply.mapper.gdbh.TGdbhJctbMapper;
+import com.onemap.apply.mapper.gdbh.TGdbhYjjbntMapper;
+import com.onemap.apply.mapper.gdbh.TGdbhYjjbntServerMapper;
+import com.onemap.apply.service.gdbh.ITGdbhJctbService;
+import com.onemap.apply.service.gdbh.ITGdbhYjjbntService;
+import com.onemap.common.core.utils.DateUtils;
+import com.onemap.common.core.web.domain.RequestResult;
+import com.onemap.system.api.RemoteFileService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 耕地保护-永久基本农田Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2024-11-26
+ */
+@Service
+public class TGdbhYjjbntServiceImpl implements ITGdbhYjjbntService {
+    @Resource
+    private TGdbhYjjbntServerMapper tGdbhYjjbntServerMapper;
+    @Resource
+    private TGdbhYjjbntMapper tGdbhYjjbntMapper;
+
+    @Override
+    public List<TGdbhYjjbntServerDTO> selectTGdbhYjjbntServerList(TGdbhYjjbntServerDTO tGdbhYjjbntServer) {
+        return tGdbhYjjbntServerMapper.selectTGdbhYjjbntServerList(tGdbhYjjbntServer);
+    }
+
+    @Override
+    public Map<String, Object> ntzllist(String yaer, String xzqhdm, String dlbm) {
+        TGdbhYjjbntServerDTO d0_tGdbhYjjbntServer = new TGdbhYjjbntServerDTO();
+        d0_tGdbhYjjbntServer.setYear(yaer);
+        List<TGdbhYjjbntServerDTO> d1 = selectTGdbhYjjbntServerList(d0_tGdbhYjjbntServer);
+        if (d1 == null || d1.size() == 0) {
+            return null;
+        }
+        TGdbhYjjbntServerDTO d2 = d1.get(0);
+        String areacolumn = d2.getAreaColumn();
+        String sjy = d2.getSjy();
+        Map<String, Object> retMap = tGdbhYjjbntMapper.ntzl(sjy, areacolumn, yaer, xzqhdm, dlbm);
+        return retMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> ntzlfl(String yaer, String xzqhdm, String dlbm) {
+        TGdbhYjjbntServerDTO d0_tGdbhYjjbntServer = new TGdbhYjjbntServerDTO();
+        d0_tGdbhYjjbntServer.setYear(yaer);
+        List<TGdbhYjjbntServerDTO> d1 = selectTGdbhYjjbntServerList(d0_tGdbhYjjbntServer);
+        if (d1 == null || d1.size() == 0) {
+            return null;
+        }
+        TGdbhYjjbntServerDTO d2 = d1.get(0);
+        String areacolumn = d2.getAreaColumn();
+        String sjy = d2.getSjy();
+        List<Map<String, Object>> retMap = tGdbhYjjbntMapper.ntzlfl(sjy, areacolumn, yaer, xzqhdm, dlbm);
+        return retMap;
+    }
+
+
+    @Override
+    public Map<String, Object> ntzlbhqk(String sourceyaer, String targetyaer, String xzqhdm, String dlbm) {
+        Map<String, Object> d0old = ntzllist(sourceyaer, xzqhdm, dlbm);
+        Map<String, Object> d1new = ntzllist(targetyaer, xzqhdm, dlbm);
+        BigDecimal d0_mj_m = (BigDecimal) d0old.get("mj_m");
+        Long d0_gs = (Long) d0old.get("gs");
+        BigDecimal d0_mj = (BigDecimal) d0old.get("mj");
+        BigDecimal d0_mj_gq = (BigDecimal) d0old.get("mj_gq");
+        BigDecimal d0_mj_qm = (BigDecimal) d0old.get("mj_qm");
+        BigDecimal d1_mj_m = (BigDecimal) d1new.get("mj_m");
+        Long d1_gs = (Long) d1new.get("gs");
+        BigDecimal d1_mj = (BigDecimal) d1new.get("mj");
+        BigDecimal d1_mj_gq = (BigDecimal) d1new.get("mj_gq");
+        BigDecimal d1_mj_qm = (BigDecimal) d1new.get("mj_qm");
+        Map<String, Object> retMap = new HashMap<>();
+        retMap.put("mj_m", d0_mj_m.subtract(d1_mj_m));
+        retMap.put("d1_gs", d0_gs - d1_gs);
+        retMap.put("d1_mj", d0_mj.subtract(d1_mj));
+        retMap.put("d1_mj_gq", d0_mj_gq.subtract(d1_mj_gq));
+        retMap.put("d1_mj_qm", d0_mj_qm.subtract(d1_mj_qm));
+        retMap.put("mjbh", d0_mj_m.subtract(d1_mj_m).divide(d0_mj_m, 2, BigDecimal.ROUND_HALF_UP));
+        return retMap;
+    }
+
+    @Override
+    public List<Map<String, Object>> ntzllnbhqk(String xzqhdm, String dlbm) {
+        TGdbhYjjbntServerDTO d0_tGdbhYjjbntServer = new TGdbhYjjbntServerDTO();
+        List<TGdbhYjjbntServerDTO> d1 = selectTGdbhYjjbntServerList(d0_tGdbhYjjbntServer);
+        if (d1 == null || d1.size() == 0) {
+            return null;
+        }
+        List<Map<String, Object>> retList = new ArrayList<>();
+
+        for (int i = 0; i < d1.size(); i++) {
+            if (i > 0) {
+                Map<String, Object> d3map = ntzlbhqk(d1.get(i).getYear(), d1.get(i - 1).getYear(), xzqhdm, dlbm);
+                d3map.put("year", d1.get(i - 1).getYear());
+                retList.add(d3map);
+            }
+        }
+
+        Map<String, Object> d4map = new HashMap<>();
+        d4map.put("mj_m", 0);
+        d4map.put("d1_gs", 0);
+        d4map.put("d1_mj", 0);
+        d4map.put("d1_mj_gq", 0);
+        d4map.put("d1_mj_qm", 0);
+        d4map.put("mjbh", 0);
+        d4map.put("year", d1.get(d1.size() - 1).getYear());
+        retList.add(d4map);
+        return retList;
+    }
+
+}

+ 27 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/gdbh/TGdbhYjjbntMapper.xml

@@ -0,0 +1,27 @@
+<?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.onemap.apply.mapper.gdbh.TGdbhYjjbntMapper">
+
+    <select id="ntzl" parameterType="String"  resultType="map">
+        select t2.*, round(mj*0.0015,2) mj_m, round(mj*0.0001,2) mj_gq, round(mj*0.000001,2) mj_qm from (
+        select round((coalesce(sum(mj::numeric), 0)),2)  mj ,count(*) gs from (
+        select "${areacolumn}" as mj from vector."${sjy}"
+        <if test="dlbm!=null and dlbm!='' ">
+            where dlbm = #{dlbm}
+        </if>
+        )t1)t2
+    </select>
+
+    <select id="ntzlfl" parameterType="String"  resultType="map">
+        select t2.*, round(t2.mj*0.0015,2) mj_m, round(t2.mj*0.0001,2) mj_gq, round(t2.mj*0.000001,2) mj_qm,t2.dlmc from (
+         select round((coalesce(sum(mj::numeric), 0)),2)  mj ,count(*) gs ,dlmc from (
+         select "${areacolumn}" as mj ,dlmc from vector."${sjy}"
+        <if test="dlbm!=null and dlbm!='' ">
+            where dlbm = #{dlbm}
+        </if>
+        )t1 group by dlmc)t2
+    </select>
+
+</mapper>

+ 29 - 0
onemap-modules/onemap-apply/src/main/resources/mapper/postgresql/gdbh/TGdbhYjjbntServerMapper.xml

@@ -0,0 +1,29 @@
+<?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.onemap.apply.mapper.gdbh.TGdbhYjjbntServerMapper">
+
+    <resultMap type="TGdbhYjjbntServerDTO" id="TGdbhYjjbntServerDTOResult">
+        <result property="id" column="id"/>
+        <result property="year" column="year"/>
+        <result property="serverid" column="serverid"/>
+        <result property="serverurl" column="serverurl"/>
+        <result property="serverfwmc" column="serverfwmc"/>
+        <result property="serverfwgzkj" column="serverfwgzkj"/>
+        <result property="sjy" column="sjy"/>
+        <result property="areaColumn" column="area_column"/>
+    </resultMap>
+
+    <sql id="selectTGdbhYjjbntServerVo">
+        select id,year,serverid,sjy,area_column from t_gdbh_yjjbnt_server
+    </sql>
+
+    <select id="selectTGdbhYjjbntServerList" parameterType="TGdbhYjjbntServerDTO" resultMap="TGdbhYjjbntServerDTOResult">
+        select t1.*,t2.url serverurl,t2.fwmc serverfwmc,t2.fwgzkj serverfwgzkj  from (
+        <include refid="selectTGdbhYjjbntServerVo"/>
+        order by year desc)t1
+        left join t_yzt_zyml t2 on t2.bsm = t1.serverid
+    </select>
+
+</mapper>

+ 5 - 1
pom.xml

@@ -234,7 +234,11 @@
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-logging</artifactId>
             </dependency>
-
+            <dependency>
+                <groupId>com.drewnoakes</groupId>
+                <artifactId>metadata-extractor</artifactId>
+                <version>2.19.0</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>