Преглед изворни кода

数字中台-数字农业接口(补贴及以下未完成)

吕宣芝 пре 1 година
родитељ
комит
202674f4d0

+ 16 - 2
src/main/java/com/sooka/sponest/data/digitalagriculture/controller/AgricultureBigDataController.java

@@ -270,6 +270,7 @@ public class AgricultureBigDataController {
 
     /**
      * 分类种子库存
+     * dictValue 传递 分类种子的value
      *
      * @author lvxuanzhi
      * @date 2023-10-26 09:53:19
@@ -293,7 +294,7 @@ public class AgricultureBigDataController {
     }
 
     /**
-     * 农业补贴
+     * 农业补贴(之下未完成)
      *
      * @author lvxuanzhi
      * @date 2023-10-26 09:53:19
@@ -332,7 +333,20 @@ public class AgricultureBigDataController {
 
 
     /**
-     * 农民合作社统计(等dev合并)
+     * 耕地资源
+     *
+     * @author lvxuanzhi
+     * @date 2023-10-31 09:50:35
+     */
+    @ApiOperation(value = "耕地资源", notes = "耕地资源")
+    @PostMapping("/getFarmlandStatistics")
+    public AjaxResult getFarmlandStatistics(@RequestBody AgricultureBigDataBO agricultureBigDataBO) {
+        return AjaxResult.success(agricultureBigDataService.getFarmlandStatistics(agricultureBigDataBO));
+    }
+
+
+    /**
+     * 农民合作社统计
      *
      * @author lvxuanzhi
      * @date 2023-10-27 10:07:00

+ 10 - 1
src/main/java/com/sooka/sponest/data/digitalagriculture/mapper/AgricultureBigDataMapper.java

@@ -3,6 +3,7 @@ package com.sooka.sponest.data.digitalagriculture.mapper;
 import com.ruoyi.system.api.domain.SysDept;
 import com.sooka.sponest.data.digitalagriculture.domain.CenterdataTFarmAgriculturalCooperatives;
 import com.sooka.sponest.data.digitalagriculture.domain.bo.AgricultureBigDataBO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -54,13 +55,21 @@ public interface AgricultureBigDataMapper {
 
     List<Map<String,Object>> getCultivationStatistics(AgricultureBigDataBO agricultureBigDataBO);
 
+    List<Map<String,Object>> getCultivationStatisticsByYear(@Param("agricultureBigDataBO") AgricultureBigDataBO agricultureBigDataBO,@Param("year") String year);
+
     List<Map<String,Object>> getAgriculturalSubsidy(AgricultureBigDataBO agricultureBigDataBO);
 
     List<Map<String,Object>> getAgriculturalSubsidyBySubclass(AgricultureBigDataBO agricultureBigDataBO);
 
     List<Map<String,Object>> getFertilizerStatistics(AgricultureBigDataBO agricultureBigDataBO);
 
-    List<Map<String,Object>> getCooperativesStatistics(AgricultureBigDataBO agricultureBigDataBO);
+    List<Map<String,Object>> getFarmlandStatistics(AgricultureBigDataBO agricultureBigDataBO);
+
+    List<Map<String,Object>> getCooperativesStatistics1(AgricultureBigDataBO agricultureBigDataBO);
+
+    List<Map<String,Object>> getCooperativesStatistics2(AgricultureBigDataBO agricultureBigDataBO);
+
+    List<Map<String,Object>> getCooperativesStatistics3(AgricultureBigDataBO agricultureBigDataBO);
 
     SysDept selectDetermineDeptLevel(Long deptId);
 

+ 3 - 1
src/main/java/com/sooka/sponest/data/digitalagriculture/service/IAgricultureBigDataService.java

@@ -52,7 +52,7 @@ public interface IAgricultureBigDataService {
 
     List<Map<String,Object>> getResourceStatistics(AgricultureBigDataBO agricultureBigDataBO);
 
-    List<Map<String,Object>> getSeedStock(AgricultureBigDataBO agricultureBigDataBO);
+    List<Map<String, Object>> getSeedStock(AgricultureBigDataBO agricultureBigDataBO);
 
     List<Map<String,Object>> getSeedStockByType(AgricultureBigDataBO agricultureBigDataBO);
 
@@ -64,6 +64,8 @@ public interface IAgricultureBigDataService {
 
     List<Map<String,Object>> getFertilizerStatistics(AgricultureBigDataBO agricultureBigDataBO);
 
+    List<Map<String,Object>> getFarmlandStatistics(AgricultureBigDataBO agricultureBigDataBO);
+
     List<Map<String,Object>> getCooperativesStatistics(AgricultureBigDataBO agricultureBigDataBO);
 
 }

+ 88 - 19
src/main/java/com/sooka/sponest/data/digitalagriculture/service/impl/AgricultureBigDataServiceImpl.java

@@ -7,13 +7,12 @@ import com.sooka.sponest.data.digitalagriculture.domain.CenterdataTFarmAgricultu
 import com.sooka.sponest.data.digitalagriculture.domain.bo.AgricultureBigDataBO;
 import com.sooka.sponest.data.digitalagriculture.mapper.AgricultureBigDataMapper;
 import com.sooka.sponest.data.digitalagriculture.service.IAgricultureBigDataService;
+import com.sooka.sponest.data.utils.DeptLevelUtil;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class AgricultureBigDataServiceImpl extends BaseServiceImpl implements IAgricultureBigDataService {
@@ -21,6 +20,9 @@ public class AgricultureBigDataServiceImpl extends BaseServiceImpl implements IA
     @Autowired
     private AgricultureBigDataMapper agricultureBigDataMapper;
 
+    @Autowired
+    private DeptLevelUtil deptLevelUtil;
+
     @Override
     @DataScopeMutiDept(deptAlias = "d")
     public List<Map<String, Object>> getSixNum(AgricultureBigDataBO agricultureBigDataBO) {
@@ -65,10 +67,10 @@ public class AgricultureBigDataServiceImpl extends BaseServiceImpl implements IA
         for (int a = 1; a <= 12; a++) {
             for (Map<String, Object> map : list) {
                 if (String.valueOf(a).equals(MapUtils.getString(map, "mon"))) {
-                    result.put("mon"+a, map.get("num"));
+                    result.put("mon" + a, map.get("num"));
                 }
             }
-            result.putIfAbsent("mon"+a, 0);
+            result.putIfAbsent("mon" + a, 0);
         }
         return result;
     }
@@ -159,43 +161,95 @@ public class AgricultureBigDataServiceImpl extends BaseServiceImpl implements IA
 
     @Override
     @DataScopeMutiDept(deptAlias = "d")
-    public List<Map<String,Object>> getResourceStatistics(AgricultureBigDataBO agricultureBigDataBO) {
+    public List<Map<String, Object>> getResourceStatistics(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
         return agricultureBigDataMapper.getResourceStatistics(agricultureBigDataBO);
     }
 
     @Override
-    public List<Map<String,Object>> getSeedStock(AgricultureBigDataBO agricultureBigDataBO) {
+    @DataScopeMutiDept(deptAlias = "d")
+    public List<Map<String, Object>> getSeedStock(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        // 查询部门所属层级
-//        determineDeptLevel(deptId);
-        return agricultureBigDataMapper.getSeedStock(agricultureBigDataBO);
+        List<Map<String, Object>> list = agricultureBigDataMapper.getSeedStock(agricultureBigDataBO);
+        if (list == null || list.isEmpty()) {
+            HashMap<String, Object> objectObjectHashMap = new HashMap<>();
+            objectObjectHashMap.put("ancestors", 0);
+            objectObjectHashMap.put("deptId", 0);
+            objectObjectHashMap.put("salesVolumeNum", 0);
+            objectObjectHashMap.put("stockNum", 0);
+            list.add(objectObjectHashMap);
+        }
+        return deptLevelUtil.getDeptLevel(list);
+
     }
 
     @Override
-    public List<Map<String,Object>> getSeedStockByType(AgricultureBigDataBO agricultureBigDataBO) {
+    @DataScopeMutiDept(deptAlias = "d")
+    public List<Map<String, Object>> getSeedStockByType(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        // 查询部门所属层级
-//        determineDeptLevel(deptId);
-        return agricultureBigDataMapper.getSeedStockByType(agricultureBigDataBO);
+        List<Map<String, Object>> seedStockByType = agricultureBigDataMapper.getSeedStockByType(agricultureBigDataBO);
+        if (seedStockByType == null || seedStockByType.isEmpty()) {
+            HashMap<String, Object> objectObjectHashMap = new HashMap<>();
+            objectObjectHashMap.put("ancestors", 0);
+            objectObjectHashMap.put("deptId", 0);
+            objectObjectHashMap.put("salesVolumeNum", 0);
+            objectObjectHashMap.put("stockNum", 0);
+            seedStockByType.add(objectObjectHashMap);
+        }
+        return deptLevelUtil.getDeptLevel(seedStockByType);
     }
 
     @Override
+    @DataScopeMutiDept(deptAlias = "d")
     public List<Map<String, Object>> getCultivationStatistics(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        return agricultureBigDataMapper.getCultivationStatistics(agricultureBigDataBO);
+        // 获取当前时间
+        Date currentTime = new Date();
+        // 创建Calendar对象,并设置当前时间
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(currentTime);
+        // 获取当前年份
+        int currentYear = calendar.get(Calendar.YEAR);
+        List<Map<String, Object>> deptLevel;
+        // 获取当前年份的数据
+        List<Map<String, Object>> currentYearStatistics = getStatisticsByYear(agricultureBigDataBO, String.valueOf(currentYear));
+        deptLevel = deptLevelUtil.getDeptLevel(currentYearStatistics);
+        // 获取过去五年的数据
+        for (int i = currentYear - 1; i >= currentYear - 4; i--) {
+            List<Map<String, Object>> statisticsByYear = getStatisticsByYear(agricultureBigDataBO, String.valueOf(i));
+            deptLevel.addAll(deptLevelUtil.getDeptLevel(statisticsByYear));
+        }
+        return deptLevel;
+    }
+
+    /**
+     * getCultivationStatistics的附加判断方法
+     */
+    List<Map<String, Object>> getStatisticsByYear(AgricultureBigDataBO agricultureBigDataBO, String year) {
+        List<Map<String, Object>> statisticsByYear = agricultureBigDataMapper.getCultivationStatisticsByYear(agricultureBigDataBO, year);
+        if (statisticsByYear == null || statisticsByYear.isEmpty()) {
+            Map<String, Object> objectObjectHashMap = new HashMap<>();
+            objectObjectHashMap.put("ancestors", 0);
+            objectObjectHashMap.put("deptId", 0);
+            objectObjectHashMap.put("name", year);
+            objectObjectHashMap.put("landAreaNum", 0);
+            objectObjectHashMap.put("estimatedProductionNum", 0);
+            objectObjectHashMap.put("actualOutputNum", 0);
+            statisticsByYear.add(objectObjectHashMap);
+        }
+        return statisticsByYear;
     }
 
     @Override
     public List<Map<String, Object>> getAgriculturalSubsidy(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        return agricultureBigDataMapper.getAgriculturalSubsidy(agricultureBigDataBO);
+        return deptLevelUtil.getDeptLevel(agricultureBigDataMapper.getAgriculturalSubsidy(agricultureBigDataBO));
     }
 
     @Override
     public List<Map<String, Object>> getAgriculturalSubsidyBySubclass(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        return agricultureBigDataMapper.getAgriculturalSubsidyBySubclass(agricultureBigDataBO);
+        return deptLevelUtil.getDeptLevel(agricultureBigDataMapper.getAgriculturalSubsidyBySubclass(agricultureBigDataBO));
     }
 
     @Override
@@ -205,17 +259,32 @@ public class AgricultureBigDataServiceImpl extends BaseServiceImpl implements IA
     }
 
     @Override
+    public List<Map<String, Object>> getFarmlandStatistics(AgricultureBigDataBO agricultureBigDataBO) {
+        setSookaDataBase(agricultureBigDataBO);
+        List<Map<String, Object>> farmlandStatistics = null;
+        for (int i = 1 ; i <= 5 ; i++){
+            agricultureBigDataBO.setDictValue(String.valueOf(i));
+             farmlandStatistics = agricultureBigDataMapper.getFarmlandStatistics(agricultureBigDataBO);
+        }
+        return deptLevelUtil.getDeptLevel(farmlandStatistics);
+    }
+
+    @Override
     public List<Map<String, Object>> getCooperativesStatistics(AgricultureBigDataBO agricultureBigDataBO) {
         setSookaDataBase(agricultureBigDataBO);
-        return agricultureBigDataMapper.getCooperativesStatistics(agricultureBigDataBO);
+        List<Map<String, Object>> cooperativesStatistics = agricultureBigDataMapper.getCooperativesStatistics1(agricultureBigDataBO);
+        cooperativesStatistics.addAll(agricultureBigDataMapper.getCooperativesStatistics2(agricultureBigDataBO));
+        cooperativesStatistics.addAll(agricultureBigDataMapper.getCooperativesStatistics3(agricultureBigDataBO));
+        return cooperativesStatistics;
     }
 
 
     /**
      * 查询部门所属层级
+     *
      * @param deptId
      */
     private void determineDeptLevel(Long deptId) {
-        SysDept deptInfo =  agricultureBigDataMapper.selectDetermineDeptLevel(deptId);
+        SysDept deptInfo = agricultureBigDataMapper.selectDetermineDeptLevel(deptId);
     }
 }

+ 155 - 19
src/main/resources/mapper/digitalagriculture/AgricultureBigDataMapper.xml

@@ -273,6 +273,22 @@
 
     <select id="getResourceStatistics" parameterType="AgricultureBigDataBO" resultType="map">
         SELECT
+            '耕地面积' AS category, IFNULL(SUM(area), 0) AS num
+        FROM
+            centerdata_t_farm_land_info a
+        left join
+            ${database_system}.sys_dept d on d.dept_id = a.dept_id
+        <where>${params.dataScope}</where>
+        UNION ALL
+        SELECT
+            '畜保站' AS category, COUNT(*) AS num
+        FROM
+            centerdata_t_farm_livestock_protect_info a
+        left join
+            ${database_system}.sys_dept d on d.dept_id = a.dept_id
+        <where>${params.dataScope}</where>
+        UNION ALL
+        SELECT
             '农民合作社' AS category, COUNT(*) AS num
         FROM
             centerdata_t_farm_agricultural_cooperatives a
@@ -375,7 +391,7 @@
         <where>${params.dataScope}</where>
         UNION ALL
         SELECT
-            '种子库存' AS category, SUM(stock) AS num
+            '种子库存' AS category, ifnull(SUM(stock),0) AS num
         FROM
             centerdata_t_farm_seed_info a
         left join
@@ -383,7 +399,7 @@
         <where>${params.dataScope}</where>
         UNION ALL
         SELECT
-            '化肥库存' AS category, SUM(stock) AS num
+            '化肥库存' AS category, ifnull(SUM(stock),0) AS num
         FROM
             centerdata_t_farm_chemical_fertilizer_info a
         left join
@@ -391,7 +407,7 @@
         <where>${params.dataScope}</where>
         UNION ALL
         SELECT
-            '预估产量' AS category, SUM(estimated_production) AS num
+            '预估产量' AS category, ifnull(SUM(estimated_production),0) AS num
         FROM
             centerdata_t_farm_plant_info a
         left join
@@ -417,36 +433,41 @@
 
     <select id="getSeedStock" resultType="map" parameterType="AgricultureBigDataBO">
         SELECT
-            SUM(stock) AS stockNum ,
-            SUM( sales_volume ) AS salesVolumeNum
+            d.ancestors ancestors,
+            a.dept_id deptId,
+            IFNULL(SUM(stock),0) AS stockNum ,
+            IFNULL(SUM( sales_volume ),0) AS salesVolumeNum
         FROM
             centerdata_t_farm_seed_info a
         left join
             ${database_system}.sys_dept d on d.dept_id = a.dept_id
         <where>${params.dataScope}</where>
+        group by
+            a.dept_id
     </select>
 
     <select id="getSeedStockByType" resultType="map" parameterType="AgricultureBigDataBO">
         SELECT
-            a.dict_label AS category,
-            COALESCE ( SUM( sales_volume ), 0 ) AS salesVolumeNum ,
-            COALESCE ( SUM( stock ), 0 ) AS stockNum
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( b.dept_id ), 0 ) deptId,
+            ifnull ( SUM( b.sales_volume ), 0 ) AS salesVolumeNum,
+            ifnull ( SUM( b.stock ), 0 ) AS stockNum
         FROM
-            ${database_system}.sys_dict_data a
-        LEFT JOIN centerdata_t_farm_seed_info b ON b.seed_type = a.dict_value
-        left join
-            ${database_system}.sys_dept d on d.dept_id = b.dept_id
+            centerdata_t_farm_seed_info b
+                LEFT JOIN onest_system.sys_dept d ON d.dept_id = b.dept_id
         <where>
-            a.dict_type = "farm_seed_type"
+            AND b.seed_type = #{dictValue}
             ${params.dataScope}
         </where>
-        GROUP BY
-            a.dict_value
+        group by
+            b.dept_id
     </select>
 
     <select id="getCultivationStatistics" resultType="map" parameterType="AgricultureBigDataBO">
         SELECT
-            year ,
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( a.dept_id ), 0 ) deptId,
+            year as name ,
             SUM( estimated_production ) AS estimatedProductionNum,
             SUM( actual_output ) AS actualOutputNum
         FROM
@@ -457,24 +478,51 @@
         GROUP BY
             year
         ORDER BY
+            a.dept_id,
             year desc
     </select>
 
+    <select id="getCultivationStatisticsByYear" resultType="map">
+        SELECT
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( a.dept_id ), 0 ) deptId,
+            ifnull( MAX( #{year} ), #{year} )  AS name,
+            ifnull( SUM( land_area ), 0 ) AS landAreaNum,
+            ifnull( SUM( estimated_production ), 0 ) AS estimatedProductionNum,
+            ifnull( SUM( actual_output ), 0 ) AS actualOutputNum
+        FROM
+            centerdata_t_farm_plant_info a
+        LEFT JOIN onest_system.sys_dept d ON d.dept_id = a.dept_id
+        <where>
+            and YEAR = #{year}
+            ${agricultureBigDataBO.params.dataScope}
+        </where>
+        GROUP BY
+            a.dept_id
+    </select>
+
+
     <select id="getAgriculturalSubsidy" resultType="map" parameterType="AgricultureBigDataBO">
         SELECT
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( a.dept_id ), 0 ) deptId,
             COALESCE ( SUM( subsidy_money ), 0 ) AS subsidyMoneyNum,
             COALESCE ( SUM( farm_mac_money ), 0 ) AS farmMacMoneyNum,
             COALESCE ( SUM( breed_money ), 0 ) AS breedMoneyNum
         FROM
-            centerdata_t_farm_subsidy_info
+            centerdata_t_farm_subsidy_info a
         left join
             ${database_system}.sys_dept d on d.dept_id = a.dept_id
         <where>${params.dataScope}</where>
+        GROUP BY
+            a.dept_id
     </select>
 
     <select id="getAgriculturalSubsidyBySubclass" resultType="map" parameterType="AgricultureBigDataBO">
         SELECT
-            a.dict_label AS category,
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( b.dept_id ), 0 ) deptId,
+            a.dict_label AS name,
             <if test="name == 'farm_subsidy_type'">
                 COALESCE ( SUM( subsidy_money ), 0 ) AS MoneyNum
             </if>
@@ -535,8 +583,96 @@
         </where>
     </select>
 
-    <select id="getCooperativesStatistics" resultType="map">
+    <select id="getFarmlandStatistics" resultType="map">
+        SELECT
+            ifnull( MAX( d.ancestors ), 0 ) ancestors,
+            ifnull( MAX( b.dept_id ), 0 ) deptId,
+            a.dict_label AS name,
+            COALESCE ( SUM( area ), 0 ) AS areaNum
+        FROM
+            ${database_system}.sys_dict_data a
+        LEFT JOIN centerdata_t_farm_land_info b ON b.attribute = a.dict_value
+        left join
+            ${database_system}.sys_dept d on d.dept_id = b.dept_id
+        <where>
+            a.dict_type = "farm_field_attribute"
+            and b.attribute = #{dictValue}
+            ${params.dataScope}
+        </where>
+        GROUP BY
+            b.dept_id,
+            a.dict_value
+    </select>
 
+    <select id="getCooperativesStatistics1" resultType="map">
+        SELECT
+            modes.land_use_mode,
+            COUNT(cooperatives.land_use_mode) AS count
+        FROM
+            (SELECT '全程托管' AS land_use_mode
+            UNION ALL
+            SELECT '流转+机械'
+            UNION ALL
+            SELECT '流转'
+            UNION ALL
+            SELECT '流转+托管') AS modes
+            LEFT JOIN
+            centerdata_t_farm_agricultural_cooperatives AS cooperatives
+        ON
+            modes.land_use_mode = cooperatives.land_use_mode
+        GROUP BY
+            modes.land_use_mode
+    </select>
+
+    <select id="getCooperativesStatistics2" resultType="map">
+        SELECT
+            modes.business_type,
+            COUNT(cooperatives.land_use_mode) AS count
+        FROM
+            (SELECT '股份制' AS business_type
+            UNION ALL
+            SELECT '土地托管型'
+            UNION ALL
+            SELECT '提供服务'
+            UNION ALL
+            SELECT '农民专业合作经济组织') AS modes
+            LEFT JOIN
+            centerdata_t_farm_agricultural_cooperatives AS cooperatives
+        ON
+            modes.business_type = cooperatives.business_type
+        GROUP BY
+            modes.business_type
+    </select>
+
+    <select id="getCooperativesStatistics3" resultType="map">
+        SELECT
+            CASE
+                WHEN modes.Lease_term IN ('区', '县') THEN '区县'
+                WHEN modes.Lease_term IN ('乡', '镇', '村') THEN '乡镇村'
+                ELSE modes.Lease_term
+                END AS Lease_term,
+            COUNT(cooperatives.Lease_term) AS count
+        FROM
+            (SELECT '省' AS Lease_term
+            UNION ALL
+            SELECT '市'
+            UNION ALL
+            SELECT '区'
+            UNION ALL
+            SELECT '县'
+            UNION ALL
+            SELECT '乡'
+            UNION ALL
+            SELECT '镇'
+            UNION ALL
+            SELECT '街'
+            UNION ALL
+            SELECT '村') AS modes
+            LEFT JOIN
+            centerdata_t_farm_agricultural_cooperatives AS cooperatives
+        ON cooperatives.Lease_term LIKE CONCAT('%', modes.Lease_term, '%')
+        GROUP BY
+            Lease_term
     </select>
 
 </mapper>