Jelajahi Sumber

新增 一张图数字农田 获取本年度种植数据接口

zhaiyifei 8 bulan lalu
induk
melakukan
16530156d7

+ 32 - 0
src/main/java/com/yunfeiyun/agmp/fms/controller/FmsScreenController.java

@@ -10,6 +10,7 @@ import com.yunfeiyun.agmp.common.utils.StringUtils;
 import com.yunfeiyun.agmp.fms.domain.FmsBlock;
 import com.yunfeiyun.agmp.fms.domain.FmsLand;
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenInvestStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenLandStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
@@ -123,4 +124,35 @@ public class FmsScreenController extends BaseController {
         List<FmsScreenPlanPickStatResVo> planPickStatList = fmsScreenService.planPickStat(reqVo);
         return success(planPickStatList);
     }
+
+
+    /**
+     * 本年度投入成本统计
+     */
+    @PreAuthorize("@ss.hasPermi('fms:screen:invest:stat')")
+    @GetMapping(value = "/invest/stat")
+    public AjaxResult investStat(FmsScreenStatReqVo reqVo){
+        String landId = reqVo.getLandId();
+        if(StringUtils.isEmpty(landId)){
+            throw new BizException(ErrorCode.INVALID_PARAMETER.getCode(), "参数异常");
+        }
+        List<FmsScreenInvestStatResVo> investStatResVoList = fmsScreenService.investStat(reqVo);
+        return success(investStatResVoList);
+    }
+
+    /**
+     * 农事统计
+     */
+    @PreAuthorize("@ss.hasPermi('fms:screen:farm:stat')")
+    @GetMapping(value = "/farm/stat")
+    public AjaxResult farmStat(FmsScreenStatReqVo reqVo){
+        String landId = reqVo.getLandId();
+        String startDate = reqVo.getStartDate();
+        String endDate = reqVo.getEndDate();
+        if(StringUtils.isEmpty(landId) || StringUtils.isEmpty(startDate) || StringUtils.isEmpty(endDate)){
+            throw new BizException(ErrorCode.INVALID_PARAMETER.getCode(), "参数异常");
+        }
+        List<FmsScreenPlanPickStatResVo> planPickStatList = fmsScreenService.planPickStat(reqVo);
+        return success(planPickStatList);
+    }
 }

+ 13 - 0
src/main/java/com/yunfeiyun/agmp/fms/domain/resvo/FmsScreenFarmStatResVo.java

@@ -0,0 +1,13 @@
+package com.yunfeiyun.agmp.fms.domain.resvo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class FmsScreenFarmStatResVo {
+    private String blockId;
+    private String blockName;
+    private BigDecimal pickWeight;
+    private BigDecimal planArea;
+}

+ 24 - 0
src/main/java/com/yunfeiyun/agmp/fms/domain/resvo/FmsScreenInvestStatResVo.java

@@ -0,0 +1,24 @@
+package com.yunfeiyun.agmp.fms.domain.resvo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class FmsScreenInvestStatResVo {
+    private String blockId;
+
+    private String blockName;
+    /**
+     * 人工成本
+     */
+    private BigDecimal laborCost;
+    /**
+     * 农具成本
+     */
+    private BigDecimal machineCost;
+    /**
+     * 农资成本
+     */
+    private BigDecimal assetCost;
+}

+ 3 - 0
src/main/java/com/yunfeiyun/agmp/fms/mapper/FmsScreenMapper.java

@@ -2,6 +2,7 @@ package com.yunfeiyun.agmp.fms.mapper;
 
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo;
 import com.yunfeiyun.agmp.fms.domain.dto.FmsScreenPlanStatDto;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenInvestStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenLandStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 
@@ -31,4 +32,6 @@ public interface FmsScreenMapper
 
 
     public List<FmsScreenPlanPickStatResVo> planPickStat(FmsScreenStatReqVo reqVo);
+
+    public List<FmsScreenInvestStatResVo> investStat(FmsScreenStatReqVo reqVo);
 }

+ 5 - 0
src/main/java/com/yunfeiyun/agmp/fms/service/IFmsScreenService.java

@@ -1,6 +1,7 @@
 package com.yunfeiyun.agmp.fms.service;
 
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenInvestStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenLandStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
@@ -23,4 +24,8 @@ public interface IFmsScreenService {
     public FmsScreenPlanStatResVo planStat(FmsScreenStatReqVo reqVo);
 
     public List<FmsScreenPlanPickStatResVo> planPickStat(FmsScreenStatReqVo reqVo);
+
+    public List<FmsScreenInvestStatResVo> investStat(FmsScreenStatReqVo reqVo);
+
+    public List<FmsScreenPlanPickStatResVo> farmStat(FmsScreenStatReqVo reqVo);
 }

+ 24 - 0
src/main/java/com/yunfeiyun/agmp/fms/service/impl/FmsScreenServiceImpl.java

@@ -2,6 +2,7 @@ package com.yunfeiyun.agmp.fms.service.impl;
 
 import com.yunfeiyun.agmp.fms.domain.dto.FmsScreenPlanStatDto;
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenInvestStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenLandStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
@@ -77,4 +78,27 @@ public class FmsScreenServiceImpl implements IFmsScreenService {
         reqVo.setEndDate(endDate);
         return fmsScreenMapper.planPickStat(reqVo);
     }
+
+    @Override
+    public List<FmsScreenInvestStatResVo> investStat(FmsScreenStatReqVo reqVo) {
+        int year = LocalDate.now().getYear();
+        // 计算当年第一天(格式化为yyyy-MM-dd 00:00:00)
+        String startDate = LocalDate.of(year, 1, 1)
+                .atStartOfDay(ZoneId.systemDefault())
+                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+
+        // 计算当年最后一天(格式化为yyyy-MM-dd 23:59:59)
+        String endDate = LocalDate.of(year, 12, 31)
+                .atTime(LocalTime.MAX)
+                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+
+        reqVo.setStartDate(startDate);
+        reqVo.setEndDate(endDate);
+        return fmsScreenMapper.investStat(reqVo);
+    }
+
+    @Override
+    public List<FmsScreenPlanPickStatResVo> farmStat(FmsScreenStatReqVo reqVo) {
+        return null;
+    }
 }

+ 15 - 0
src/main/resources/mapper/FmsScreenMapper.xml

@@ -38,4 +38,19 @@
         ORDER BY fb.blockSeq
     </select>
 
+    <select id="investStat" parameterType="com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo"
+            resultType="com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenInvestStatResVo">
+        SELECT f.*, fb.blockName
+        FROM (
+            SELECT ft.blockId, sum(tc.taskrcdCost) AS laborCost, sum(tc.taskrcdMachineInvestment) AS machineCost,
+                sum(tc.taskrcdAssetInvestment) AS assetCost
+            FROM FmsTaskrcd AS tc
+            LEFT JOIN FmsTask AS ft ON ft.taskId = tc.taskId
+            WHERE ft.landId = #{landId} AND ft.taskStatus = '3'
+                AND (tc.taskrcdSubmitdate >= #{startDate} AND tc.taskrcdSubmitdate <![CDATA[ <= ]]> #{endDate})
+            GROUP BY ft.blockId
+        ) AS f
+            LEFT JOIN FmsBlock AS fb ON fb.blockId = f.blockId
+    </select>
+
 </mapper>