Browse Source

毛高月度曲线功能接口

wukai 3 days ago
parent
commit
a15eafdb72

+ 10 - 2
jjt-biz/src/main/java/com/jjt/biz/controller/ApiController.java

@@ -5,6 +5,8 @@ import com.jjt.biz.service.ITwinDeviceService;
 import com.jjt.biz.vo.*;
 import com.jjt.calc.domain.TwinCalcDay;
 import com.jjt.calc.service.ITwinCalcDayService;
+import com.jjt.calc.service.ITwinCalcHourSpecService;
+import com.jjt.calc.vo.SpecVO;
 import com.jjt.common.constant.CacheConstants;
 import com.jjt.common.core.controller.BaseController;
 import com.jjt.common.core.domain.R;
@@ -48,6 +50,8 @@ public class ApiController extends BaseController {
     private AsyncService asyncService;
     @Resource
     private RedisCache redisCache;
+    @Resource
+    private ITwinCalcHourSpecService specService;
 
     @ApiOperation("在线设备")
     @GetMapping("/api/device/online")
@@ -206,11 +210,15 @@ public class ApiController extends BaseController {
     @ApiOperation("配方详情")
     @GetMapping("/api/formula/detail/{height}")
     @CrossOrigin(origins = "*")
-    public R<List<FormulaDetail>> formulaDetail(@PathVariable Float height) {
+    public R formulaDetail(@PathVariable Float height, String month) {
+        Map<String, Object> result = new HashMap<>();
         List<FormulaDetail> list = redisCache.getCacheObject(CacheConstants.INDEX_FORMULA_DETAIL);
         if (list != null) {
             list = list.stream().filter(detail -> detail.getFormula_data_15().equals(height)).collect(Collectors.toList());
-            return R.success(list);
+            result.put("curr", list);
+            List<SpecVO> specs = specService.selectSpec(month, height);
+            result.put("his", specs);
+            return R.success(result);
         } else {
             return R.fail();
         }

+ 14 - 4
jjt-biz/src/main/java/com/jjt/calc/mapper/TwinCalcHourSpecMapper.java

@@ -1,9 +1,11 @@
 package com.jjt.calc.mapper;
 
-import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jjt.calc.domain.TwinCalcHourSpec;
-import org.apache.ibatis.annotations.Options;
+import com.jjt.calc.vo.SpecVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 按配方1小时统计数据Mapper接口
@@ -11,8 +13,7 @@ import org.apache.ibatis.annotations.Options;
  * @author wukai
  * @date 2025-01-18
  */
-public interface TwinCalcHourSpecMapper extends BaseMapper<TwinCalcHourSpec>
-{
+public interface TwinCalcHourSpecMapper extends BaseMapper<TwinCalcHourSpec> {
     /**
      * 查询按配方1小时统计数据
      *
@@ -60,4 +61,13 @@ public interface TwinCalcHourSpecMapper extends BaseMapper<TwinCalcHourSpec>
      * @return 结果
      */
     public int deleteTwinCalcHourSpecByIds(Long[] ids);
+
+    /**
+     * 根据毛高查询月月数据
+     *
+     * @param month   时间
+     * @param height 毛高
+     * @return 结果
+     */
+    List<SpecVO> selectSpec(@Param("month") String month, @Param("height") Float height);
 }

+ 9 - 0
jjt-biz/src/main/java/com/jjt/calc/service/ITwinCalcHourSpecService.java

@@ -3,6 +3,7 @@ package com.jjt.calc.service;
 import java.util.Date;
 import java.util.List;
 import com.jjt.calc.domain.TwinCalcHourSpec;
+import com.jjt.calc.vo.SpecVO;
 
 /**
  * 按配方1小时统计数据Service接口
@@ -65,4 +66,12 @@ public interface ITwinCalcHourSpecService {
      * @return 结果
      */
     List<TwinCalcHourSpec> selectTwinCalcHourSpecListByDate(Date date);
+
+    /**
+     * 根据毛高查询月月数据
+     * @param month 时间
+     * @param height 毛高
+     * @return 结果
+     */
+    List<SpecVO> selectSpec(String month, Float height);
 }

+ 13 - 0
jjt-biz/src/main/java/com/jjt/calc/service/impl/TwinCalcHourSpecServiceImpl.java

@@ -3,6 +3,7 @@ package com.jjt.calc.service.impl;
 import com.jjt.calc.domain.TwinCalcHourSpec;
 import com.jjt.calc.mapper.TwinCalcHourSpecMapper;
 import com.jjt.calc.service.ITwinCalcHourSpecService;
+import com.jjt.calc.vo.SpecVO;
 import com.jjt.common.utils.DateUtils;
 import com.jjt.utils.Tools;
 import javafx.util.Pair;
@@ -112,4 +113,16 @@ public class TwinCalcHourSpecServiceImpl implements ITwinCalcHourSpecService {
         hour.setParams(params);
         return selectTwinCalcHourSpecList(hour);
     }
+
+    /**
+     * 根据毛高查询月月数据
+     *
+     * @param month   时间
+     * @param height 毛高
+     * @return 结果
+     */
+    @Override
+    public List<SpecVO> selectSpec(String month, Float height) {
+        return twinCalcHourSpecMapper.selectSpec(month,height);
+    }
 }

+ 28 - 0
jjt-biz/src/main/java/com/jjt/calc/vo/SpecVO.java

@@ -0,0 +1,28 @@
+package com.jjt.calc.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 毛高月度视图
+ *
+ * @author wukai
+ * @date 2025/3/15 02:51
+ */
+@ApiModel(value = "SpecVO", description = "毛高月度视图")
+@Data
+public class SpecVO {
+    @ApiModelProperty("时间")
+    @JsonFormat(pattern = "yyyy-MM-dd hh")
+    private Date time;
+    @ApiModelProperty("毛高")
+    private BigDecimal height;
+    @ApiModelProperty("设备数量")
+    private Integer num;
+
+}

+ 9 - 0
jjt-biz/src/main/resources/mapper/calc/TwinCalcHourSpecMapper.xml

@@ -56,6 +56,15 @@
         <include refid="selectTwinCalcHourSpecVo"/>
         where ID = #{id}
     </select>
+    <select id="selectSpec" resultType="com.jjt.calc.vo.SpecVO">
+        select t.time, t.height, count(DISTINCT device_id) num
+        from (select DATEADD(hour, HOUR, DATA_DATE) time, HEIGHT, device_id
+              from TWIN_CALC_HOUR_SPEC
+              where HEIGHT = #{height}
+                and FORMAT(DATEADD(hour, HOUR - 7, DATA_DATE), 'yyyy-MM') = #{month}) t
+        group by t.time, t.height
+        order by time
+    </select>
 
     <insert id="insertTwinCalcHourSpec" parameterType="TwinCalcHourSpec">
         insert into TWIN_CALC_HOUR_SPEC