Browse Source

后端调整

lipenghui 3 months ago
parent
commit
ad1fdcb9a8

+ 27 - 0
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/date/DateUtils.java

@@ -1,10 +1,12 @@
 package cn.iocoder.yudao.framework.common.util.date;
 package cn.iocoder.yudao.framework.common.util.date;
 
 
 import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.date.LocalDateTimeUtil;
+import com.google.common.collect.ImmutableMap;
 
 
 import java.time.*;
 import java.time.*;
 import java.util.Calendar;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Date;
+import java.util.List;
 
 
 /**
 /**
  * 时间工具类
  * 时间工具类
@@ -146,4 +148,29 @@ public class DateUtils {
         return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now().minusDays(1));
         return LocalDateTimeUtil.isSameDay(date, LocalDateTime.now().minusDays(1));
     }
     }
 
 
+
+    public static ImmutableMap<String, LocalDateTime> getBeginEndDay() {
+        // 昨天开始时间(00:00:00)
+        LocalDateTime yesterdayStart = LocalDate.now().minusDays(1).atStartOfDay();
+        // 昨天结束时间(23:59:59.999999999)
+        LocalDateTime yesterdayEnd = LocalDateTime.of(LocalDate.now().minusDays(1), LocalTime.MAX);
+        return ImmutableMap.of("start", yesterdayStart, "end", yesterdayEnd);
+    }
+
+    public static ImmutableMap<String, LocalDateTime> getBeginEndWeek() {
+        // 近一周开始时间(如今天是2025-05-09,则此值为2025-05-03 00:00)
+        LocalDateTime weekStart = LocalDate.now().minusDays(6).atStartOfDay();
+        // 近一周结束时间(当前日期的23:59:59.999999999)
+        LocalDateTime weekEnd = LocalDateTime.now().with(LocalTime.MAX);
+
+        return ImmutableMap.of("start", weekStart, "end", weekEnd);
+    }
+
+    public static ImmutableMap<String, LocalDateTime> getBeginEndMonth() {
+        // 近一月开始时间(如今天是2025-05-09,此值为2025-04-10 00:00)
+        LocalDateTime monthStart = LocalDate.now().minusDays(29).atStartOfDay();
+        // 近一月结束时间(当前日期的23:59:59.999999999)
+        LocalDateTime monthEnd = LocalDateTime.now().with(LocalTime.MAX);
+        return ImmutableMap.of("start", monthStart, "end", monthEnd);
+    }
 }
 }

+ 95 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.pms.controller.admin.stat;
+
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.date.DateUtils;
+import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.maintain.IotMaintainMapper;
+import com.google.common.collect.ImmutableMap;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Tag(name = "统计接口")
+@RestController
+@RequestMapping("/rq/stat")
+@Validated
+public class IotStaticController {
+    @Resource
+    private IotFailureReportMapper iotFailureReportMapper;
+    @Resource
+    private IotMaintainMapper iotMaintainMapper;
+
+    @GetMapping("/main/day")
+    public CommonResult<Map<String, Object>> getMaintainDay() {
+        ImmutableMap<String, LocalDateTime> beginEndDay = DateUtils.getBeginEndDay();
+        IotFailureReportPageReqVO iotFailureReportPageReqVO = new IotFailureReportPageReqVO();
+        iotFailureReportPageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long failure = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO);
+        IotMaintainPageReqVO iotMaintainPageReqVO = new IotMaintainPageReqVO();
+        iotMaintainPageReqVO.setCreateTime(new LocalDateTime[]{beginEndDay.get("start"), beginEndDay.get("end")});
+        Long maintain = iotMaintainMapper.selectCountByTimeAndStatus(iotMaintainPageReqVO);
+        return CommonResult.success(ImmutableMap.of("failureDay", failure, "maintainDay", maintain));
+    }
+
+    public static void main(String[] args) {
+
+    }
+
+    @GetMapping("/main/week")
+    public CommonResult<Map<String, Object>> getMaintainWeek() {
+        ImmutableMap<String, LocalDateTime> beginEndWeek = DateUtils.getBeginEndWeek();
+        IotFailureReportPageReqVO iotFailureReportPageReqVO = new IotFailureReportPageReqVO();
+        iotFailureReportPageReqVO.setCreateTime(new LocalDateTime[]{beginEndWeek.get("start"), beginEndWeek.get("end")});
+        Long failure = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO);
+        IotMaintainPageReqVO iotMaintainPageReqVO = new IotMaintainPageReqVO();
+        iotMaintainPageReqVO.setCreateTime(new LocalDateTime[]{beginEndWeek.get("start"), beginEndWeek.get("end")});
+        Long maintain = iotMaintainMapper.selectCountByTimeAndStatus(iotMaintainPageReqVO);
+        return CommonResult.success(ImmutableMap.of("failureWeek", failure, "maintainWeek", maintain));
+    }
+
+    @GetMapping("/main/month")
+    public CommonResult<Map<String, Object>> getMaintainMonth() {
+        ImmutableMap<String, LocalDateTime> beginEndMonth = DateUtils.getBeginEndMonth();
+        IotFailureReportPageReqVO iotFailureReportPageReqVO = new IotFailureReportPageReqVO();
+        iotFailureReportPageReqVO.setCreateTime(new LocalDateTime[]{beginEndMonth.get("start"), beginEndMonth.get("end")});
+        Long failure = iotFailureReportMapper.selectCountByTimeAndStatus(iotFailureReportPageReqVO);
+        IotMaintainPageReqVO iotMaintainPageReqVO = new IotMaintainPageReqVO();
+        iotMaintainPageReqVO.setCreateTime(new LocalDateTime[]{beginEndMonth.get("start"), beginEndMonth.get("end")});
+        Long maintain = iotMaintainMapper.selectCountByTimeAndStatus(iotMaintainPageReqVO);
+        return CommonResult.success(ImmutableMap.of("failureMonth", failure, "maintainMonth", maintain));
+    }
+
+    @GetMapping("/main/total")
+    public CommonResult<Map<String, Object>> getMaintainTotal() {
+        Long failure = iotFailureReportMapper.selectCount();
+        Long maintain = iotMaintainMapper.selectCount();
+            return CommonResult.success(ImmutableMap.of("failureTotal", failure, "maintainTotal", maintain));
+    }
+
+    @GetMapping("/main/status")
+    public CommonResult<Map<String, Object>> getMaintainStatusInfo() {
+        List<IotFailureReportDO> iotFailureReportDOS = iotFailureReportMapper.selectList();
+        Map<String, Long> failure = iotFailureReportDOS.stream().collect(Collectors.groupingBy(IotFailureReportDO::getStatus, Collectors.counting()));
+        List<IotMaintainDO> iotMaintainDOS = iotMaintainMapper.selectList();
+        Map<String, Long> maintain = iotMaintainDOS.stream().collect(Collectors.groupingBy(IotMaintainDO::getStatus, Collectors.counting()));
+        return CommonResult.success(ImmutableMap.of("failureStatus", failure, "maintainStatus", maintain));
+    }
+
+    @GetMapping("/main/year")
+    public void getMaintainYear() {
+
+
+    }
+}

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/failure/IotFailureReportMapper.java

@@ -39,4 +39,10 @@ public interface IotFailureReportMapper extends BaseMapperX<IotFailureReportDO>
                 .orderByDesc(IotFailureReportDO::getId));
                 .orderByDesc(IotFailureReportDO::getId));
     }
     }
 
 
+    default Long selectCountByTimeAndStatus(IotFailureReportPageReqVO reqVO) {
+        return selectCount(new LambdaQueryWrapperX<IotFailureReportDO>()
+                .eqIfPresent(IotFailureReportDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotFailureReportDO::getCreateTime, reqVO.getCreateTime()));
+    }
+
 }
 }

+ 9 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/maintain/IotMaintainMapper.java

@@ -5,14 +5,16 @@ import java.util.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.maintain.vo.IotMaintainPageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.maintain.IotMaintainDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 
 
 /**
 /**
  * 维修工单 Mapper
  * 维修工单 Mapper
  *
  *
- * @author 袁超
+ * @author phli
  */
  */
 @Mapper
 @Mapper
 public interface IotMaintainMapper extends BaseMapperX<IotMaintainDO> {
 public interface IotMaintainMapper extends BaseMapperX<IotMaintainDO> {
@@ -41,4 +43,10 @@ public interface IotMaintainMapper extends BaseMapperX<IotMaintainDO> {
                 .orderByDesc(IotMaintainDO::getId));
                 .orderByDesc(IotMaintainDO::getId));
     }
     }
 
 
+    default Long selectCountByTimeAndStatus(IotMaintainPageReqVO reqVO) {
+        return selectCount(new LambdaQueryWrapperX<IotMaintainDO>()
+                .eqIfPresent(IotMaintainDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(IotMaintainDO::getCreateTime, reqVO.getCreateTime()));
+    }
+
 }
 }