From 9297cc4820d91a655cc56501ecaf013a4b9b08a3 Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期日, 29 九月 2024 14:05:35 +0800
Subject: [PATCH] 设备统计

---
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceDO.java               |    2 
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devmanage/DeviceMapper.java                |   23 +++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceServiceImpl.java             |    6 ++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceStatisticDO.java      |   66 ++++++++++++++++++++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/DeviceController.java     |   14 ++++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceService.java                 |    8 ++
 jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/vo/DeviceStatisticVO.java |   53 +++++++++++++++++
 7 files changed, 169 insertions(+), 3 deletions(-)

diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/DeviceController.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/DeviceController.java
index 9e70728..054b4a7 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/DeviceController.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/DeviceController.java
@@ -1,5 +1,9 @@
 package cn.lihu.jh.module.ecg.controller.admin.devmanage;
 
+import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.JobRecordPageReqVO;
+import cn.lihu.jh.module.ecg.controller.admin.jobrecord.vo.JobRecordStatisticVO;
+import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceStatisticDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordStatisticDO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -112,4 +116,12 @@
                         BeanUtils.toBean(list, DeviceRespVO.class));
     }
 
-}
\ No newline at end of file
+    @GetMapping("/dev-statistic")
+    @Operation(summary = "璁惧缁熻")
+    @PreAuthorize("@ss.hasPermission('ecg:device:statistic')")
+    public CommonResult<List<DeviceStatisticVO>> getDeviceStatistic(@Valid DevicePageReqVO pageReqVO) {
+        List<DeviceStatisticDO> statisticDOList = deviceService.getDeviceStatistic(pageReqVO);
+        return success(BeanUtils.toBean(statisticDOList, DeviceStatisticVO.class));
+    }
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/vo/DeviceStatisticVO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/vo/DeviceStatisticVO.java
new file mode 100644
index 0000000..9f7315f
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/controller/admin/devmanage/vo/DeviceStatisticVO.java
@@ -0,0 +1,53 @@
+package cn.lihu.jh.module.ecg.controller.admin.devmanage.vo;
+
+import cn.lihu.jh.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import static cn.lihu.jh.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "绠$悊鍚庡彴 - 璁惧缁熻 VO")
+@Data
+@ToString(callSuper = true)
+public class DeviceStatisticVO  {
+
+    @Schema(description = "璁惧缂栧彿", example = "5317")
+    private String devId;
+
+    @Schema(description = "鍒嗙被鍚�")
+    private String category;
+
+    @Schema(description = "鍝佺墝")
+    private String brand;
+
+    @Schema(description = "鍨嬪彿")
+    private String model;
+
+    @Schema(description = "閲囪喘鏃ユ湡")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] purchaseDate;
+
+    @Schema(description = "鍒涘缓鏃堕棿")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "鐘舵�佹棩鏈�")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate stateDate[];
+
+    /**
+     * 0 - 绌洪棽 10 - 浣跨敤涓� 20 - 宸查仐澶�
+     */
+    @Schema(description = "鐘舵��")
+    private Integer state;
+
+    @Schema(description = "璁惧鏁伴噺")
+    private Integer devCount;;
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceDO.java
index 1dfce85..3ed1f5b 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceDO.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceDO.java
@@ -51,7 +51,7 @@
     private LocalDate purchaseDate;
 
     /**
-     * 閬楀け鏃ユ湡
+     * 鐘舵�佹棩鏈�
      */
     @TableField(updateStrategy = FieldStrategy.ALWAYS)
     private LocalDate stateDate;
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceStatisticDO.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceStatisticDO.java
new file mode 100644
index 0000000..0bbdbe0
--- /dev/null
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/dataobject/devmanage/DeviceStatisticDO.java
@@ -0,0 +1,66 @@
+package cn.lihu.jh.module.ecg.dal.dataobject.devmanage;
+
+import cn.lihu.jh.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.*;
+
+import java.time.LocalDate;
+
+/**
+ * 璁惧 DO
+ *
+ * @author majianbo
+ */
+@TableName("device")
+@KeySequence("device_seq") // 鐢ㄤ簬 Oracle銆丳ostgreSQL銆並ingbase銆丏B2銆丠2 鏁版嵁搴撶殑涓婚敭鑷銆傚鏋滄槸 MySQL 绛夋暟鎹簱锛屽彲涓嶅啓銆�
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DeviceStatisticDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId
+    private Integer id;
+    /**
+     * 璁惧缂栧彿
+     */
+    private String devId;
+
+    /**
+     * 鍒嗙被鍚�
+     */
+    private String category;
+    /**
+     * 鍝佺墝
+     */
+    private String brand;
+    /**
+     * 鍨嬪彿
+     */
+    private String model;
+    /**
+     * 閲囪喘鏃ユ湡
+     */
+    private LocalDate purchaseDate;
+
+    /**
+     * 鐘舵�佹棩鏈�
+     */
+    @TableField(updateStrategy = FieldStrategy.ALWAYS)
+    private LocalDate stateDate;
+
+    /**
+     * 0 - 绌洪棽 10 - 浣跨敤涓� 20 - 宸查仐澶�
+     */
+    private Integer state;
+
+    /**
+     * 缁熻鏁伴噺
+     */
+    private Integer devCount;
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devmanage/DeviceMapper.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devmanage/DeviceMapper.java
index 2f09bae..77c6c0c 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devmanage/DeviceMapper.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/dal/mysql/devmanage/DeviceMapper.java
@@ -1,12 +1,15 @@
 package cn.lihu.jh.module.ecg.dal.mysql.devmanage;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.*;
 
 import cn.lihu.jh.framework.common.pojo.PageResult;
 import cn.lihu.jh.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.lihu.jh.framework.mybatis.core.mapper.BaseMapperX;
 import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceStatisticDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordStatisticDO;
 import org.apache.ibatis.annotations.Mapper;
 import cn.lihu.jh.module.ecg.controller.admin.devmanage.vo.*;
 import org.apache.ibatis.annotations.Param;
@@ -38,4 +41,22 @@
     @Update("update lihu.device set state=#{state}, state_date=#{stateDate} where dev_id=#{devId}")
     Integer updateDevState(@Param("devId") String devId, @Param("state") Integer state, @Param("stateDate") LocalDate stateDate);
 
-}
\ No newline at end of file
+    @Select("<script>" +
+            "select category, state, count(1) as dev_count from lihu.device " +
+            " <where> deleted = 0 " +
+            "   <if test=\"category != null and category != ''\"> " +
+            "     and category = #{category} " +
+            "   </if> " +
+            "   <if test=\"brand != null and brand != ''\"> " +
+            "     and brand = #{brand} " +
+            "   </if> " +
+            "   <if test=\"model != null and model != ''\"> " +
+            "     and model = #{model} " +
+            "   </if> " +
+            " </where> " +
+            " group by category, state " +
+            " order by category " +
+            "</script>")
+    List<DeviceStatisticDO> getDevStatistic(DevicePageReqVO pageReqVO);
+
+}
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceService.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceService.java
index 17eca34..eafa19f 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceService.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceService.java
@@ -1,10 +1,13 @@
 package cn.lihu.jh.module.ecg.service.devmanage;
 
+import java.time.LocalDateTime;
 import java.util.*;
 import cn.lihu.jh.module.ecg.controller.admin.devmanage.vo.*;
 import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceDO;
 import cn.lihu.jh.framework.common.pojo.PageResult;
 import cn.lihu.jh.framework.common.pojo.PageParam;
+import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceStatisticDO;
+import cn.lihu.jh.module.ecg.dal.dataobject.jobrecord.JobRecordStatisticDO;
 
 import javax.validation.Valid;
 
@@ -68,4 +71,9 @@
      */
     PageResult<DeviceDO> getDevicePage(DevicePageReqVO pageReqVO);
 
+    /**
+     * 璁惧缁熻
+     * @return
+     */
+    List<DeviceStatisticDO> getDeviceStatistic(DevicePageReqVO pageReqVO);
 }
\ No newline at end of file
diff --git a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceServiceImpl.java b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceServiceImpl.java
index 97fcbdc..81da0b9 100644
--- a/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceServiceImpl.java
+++ b/jh-module-ecg/jh-module-ecg-biz/src/main/java/cn/lihu/jh/module/ecg/service/devmanage/DeviceServiceImpl.java
@@ -1,5 +1,6 @@
 package cn.lihu.jh.module.ecg.service.devmanage;
 
+import cn.lihu.jh.module.ecg.dal.dataobject.devmanage.DeviceStatisticDO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.transaction.annotation.Transactional;
@@ -86,4 +87,9 @@
         return deviceMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<DeviceStatisticDO> getDeviceStatistic(DevicePageReqVO pageReqVO) {
+        return deviceMapper.getDevStatistic(pageReqVO);
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3