Просмотр исходного кода

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

zhaiyifei 8 месяцев назад
Родитель
Сommit
e4125c1e3d

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

@@ -11,6 +11,7 @@ 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.FmsScreenLandStatResVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
 import com.yunfeiyun.agmp.fms.service.IFmsBlockService;
 import com.yunfeiyun.agmp.fms.service.IFmsLandService;
@@ -108,4 +109,18 @@ public class FmsScreenController extends BaseController {
         FmsScreenPlanStatResVo planStatResVo = fmsScreenService.planStat(reqVo);
         return success(planStatResVo);
     }
+
+    /**
+     * 本年度种植数据统计
+     */
+    @PreAuthorize("@ss.hasPermi('fms:screen:plan:pick:stat')")
+    @GetMapping(value = "/plan/pick/stat")
+    public AjaxResult planPickStat(FmsScreenStatReqVo reqVo){
+        String landId = reqVo.getLandId();
+        if(StringUtils.isEmpty(landId)){
+            throw new BizException(ErrorCode.INVALID_PARAMETER.getCode(), "参数异常");
+        }
+        List<FmsScreenPlanPickStatResVo> planPickStatList = fmsScreenService.planPickStat(reqVo);
+        return success(planPickStatList);
+    }
 }

+ 2 - 0
src/main/java/com/yunfeiyun/agmp/fms/domain/reqvo/FmsScreenStatReqVo.java

@@ -5,4 +5,6 @@ import lombok.Data;
 @Data
 public class FmsScreenStatReqVo {
     private String landId;
+    private String startDate;
+    private String endDate;
 }

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

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

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

@@ -3,6 +3,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.FmsScreenLandStatResVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 
 import java.util.List;
 
@@ -27,4 +28,7 @@ public interface FmsScreenMapper
      * @return
      */
     public List<FmsScreenPlanStatDto> planStat(FmsScreenStatReqVo reqVo);
+
+
+    public List<FmsScreenPlanPickStatResVo> planPickStat(FmsScreenStatReqVo reqVo);
 }

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

@@ -2,8 +2,11 @@ package com.yunfeiyun.agmp.fms.service;
 
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenLandStatResVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
 
+import java.util.List;
+
 public interface IFmsScreenService {
     /**
      * 查询基地统计信息
@@ -18,4 +21,6 @@ public interface IFmsScreenService {
      * @return
      */
     public FmsScreenPlanStatResVo planStat(FmsScreenStatReqVo reqVo);
+
+    public List<FmsScreenPlanPickStatResVo> planPickStat(FmsScreenStatReqVo reqVo);
 }

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

@@ -3,12 +3,17 @@ 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.FmsScreenLandStatResVo;
+import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo;
 import com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanStatResVo;
 import com.yunfeiyun.agmp.fms.mapper.FmsScreenMapper;
 import com.yunfeiyun.agmp.fms.service.IFmsScreenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 @Service
@@ -53,4 +58,23 @@ public class FmsScreenServiceImpl implements IFmsScreenService {
         planStatResVo.setPlanStatList(planStatResVoList);
         return planStatResVo;
     }
+
+    @Override
+    public List<FmsScreenPlanPickStatResVo> planPickStat(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.planPickStat(reqVo);
+    }
 }

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

@@ -26,4 +26,16 @@
         ) AS f
     </select>
 
+    <select id="planPickStat" parameterType="com.yunfeiyun.agmp.fms.domain.reqvo.FmsScreenStatReqVo"
+            resultType="com.yunfeiyun.agmp.fms.domain.resvo.FmsScreenPlanPickStatResVo">
+        SELECT t.blockId, max(tp.pickArea) AS planArea, sum(tp.pickWeight) AS pickWeight, fb.blockName
+        FROM FmsTaskpick AS tp
+            LEFT JOIN FmsTask AS t ON t.taskId = tp.taskId
+            LEFT JOIN FmsBlock AS fb ON fb.blockId = t.blockId
+        WHERE t.landId = #{landId} AND t.taskStatus = '3'
+            AND (tp.pickDate >= #{startDate} AND tp.pickDate <![CDATA[ <= ]]> #{endDate})
+        GROUP BY t.blockId
+        ORDER BY fb.blockSeq
+    </select>
+
 </mapper>