From f571cf0182abd65176fb1512c5cb5ddaea49c4a3 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期二, 24 六月 2025 09:00:14 +0800
Subject: [PATCH] feat(eims): 设备状态变更记录功能

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java |  135 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 114 insertions(+), 21 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java
index dc31019..e8e6f60 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsInspectStServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.dromara.common.core.constant.DictConstants;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -10,8 +11,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.EimsEqu;
 import org.dromara.eims.domain.EimsInspectRecord;
 import org.dromara.eims.domain.vo.EimsInspectRecordVo;
+import org.dromara.eims.mapper.EimsEquMapper;
 import org.dromara.eims.mapper.EimsInspectRecordMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.eims.domain.bo.EimsInspectStBo;
@@ -21,6 +24,8 @@
 import org.dromara.eims.service.IEimsInspectStService;
 
 import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -37,6 +42,7 @@
 public class EimsInspectStServiceImpl implements IEimsInspectStService {
 
     private final EimsInspectStMapper baseMapper;
+    private final EimsEquMapper equMapper;
     private final EimsInspectRecordMapper recordMapper;
 
     /**
@@ -47,7 +53,73 @@
      */
     @Override
     public EimsInspectStVo queryById(Long id){
-        return baseMapper.selectVoById(id);
+        EimsInspectStVo stVo = baseMapper.selectVoById(id);
+        if(stVo!=null&&stVo.getEquId()!=null){
+            EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId());
+            stVo.setEquName(eimsEqu.getEquName());
+            stVo.setAssetNo(eimsEqu.getAssetNo());
+        }
+        // fillStDataSingle(stVo);
+        return stVo;
+    }
+
+    @Override
+    public EimsInspectStVo queryByStId(String stId) {
+        QueryWrapper<EimsInspectSt> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("st_id", stId);
+        EimsInspectStVo stVo = baseMapper.selectVoOne(queryWrapper);
+        if(stVo!=null&&stVo.getEquId()!=null){
+            EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId());
+            stVo.setEquName(eimsEqu.getEquName());
+            stVo.setAssetNo(eimsEqu.getAssetNo());
+        }
+        // fillStDataSingle(stVo);
+        return stVo;
+    }
+
+
+    /**
+     *
+     * @param stVo type Day-鏃ヨ鍥� Month-鏈堣鍥�
+     * @param
+     */
+    private void fillStDataSingle(EimsInspectStVo stVo) {
+
+            LambdaQueryWrapper<EimsInspectRecord> recordLqw = Wrappers.lambdaQuery();
+            recordLqw.eq(EimsInspectRecord::getEquId, stVo.getEquId());
+            LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            // 鏈堣鍥炬煡璇㈣寖鍥�
+            LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
+            LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
+
+            // 鏃ヨ鍥炬煡璇㈣寖鍥�
+            if(stVo.getType().equals("Day")){
+                recordLqw.between(EimsInspectRecord::getPlanTime, planTime, planTime);
+            }else {
+                //  鏈堣鍥炬煡璇㈣寖鍥�
+                recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth);
+            }
+
+
+            // 鎵ц鏌ヨ
+            List<EimsInspectRecordVo> recordList = recordMapper.selectVoList(recordLqw);
+            // TODO 鏍规嵁瀛楀吀eims_inspect_status
+            Map<String, Long> cMap = recordList.stream()
+                .filter(order -> List.of("0", "1").contains(order.getStatus()))
+                .collect(Collectors.groupingBy(EimsInspectRecordVo::getStatus, Collectors.counting()));
+            // TODO 鏍规嵁瀛楀吀eims_inspect_result
+            Map<String, Long> rMap = recordList.stream()
+                .filter(order ->order.getInspResult()!=null && List.of("1", "2").contains(order.getInspResult()))
+                .collect(Collectors.groupingBy(EimsInspectRecordVo::getInspResult, Collectors.counting()));
+
+            stVo.setRecordCount(recordList.size());
+            stVo.setUnCheckCount(cMap.getOrDefault("0", 0L).intValue());
+            stVo.setCheckCount(cMap.getOrDefault("1", 0L).intValue());
+
+            stVo.setNormalNum(rMap.getOrDefault("1", 0L).intValue());
+            stVo.setAbNormalNum(rMap.getOrDefault("2", 0L).intValue());
+
+
     }
 
     /**
@@ -59,23 +131,21 @@
      */
     @Override
     public TableDataInfo<EimsInspectStVo> queryPageList(EimsInspectStBo bo, PageQuery pageQuery) {
-        // 鏈堣鍥�
-        if(bo.getViewMode().equals("Month")){
+        bo.setType(bo.getViewMode());
             QueryWrapper<EimsInspectSt> qw = buildWrapper(bo);
             Page<EimsInspectStVo> result = baseMapper.selectInspStList(pageQuery.build(), qw);
             // 濉厖鏁版嵁
-            fillStData(result);
+            fillStData(result,bo.getViewMode());
             return TableDataInfo.build(result);
-            // 鏃ヨ鍥�
-        }else if(bo.getViewMode().equals("Day")){
-            Page<EimsInspectStVo> result = recordMapper.selectInspRecordDayList(pageQuery.build(), buildGroupWrapper(bo));
-            return TableDataInfo.build(result);
-        }
 
-       return null;
     }
 
-    private void fillStData(Page<EimsInspectStVo> result) {
+    /**
+     *
+      * @param result
+     * @param type Day-鏃ヨ鍥� Month-鏈堣鍥�
+     */
+    private void fillStData(Page<EimsInspectStVo> result,String type) {
         List<EimsInspectStVo> records = result.getRecords();
         for (int i = 0; i < records.size(); i++) {
             EimsInspectStVo stVo = records.get(i);
@@ -84,9 +154,19 @@
             LambdaQueryWrapper<EimsInspectRecord> recordLqw = Wrappers.lambdaQuery();
             recordLqw.eq(EimsInspectRecord::getEquId, stVo.getEquId());
             LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+            // 鏈堣鍥炬煡璇㈣寖鍥�
             LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
             LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
-            recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth);
+
+            // 鏃ヨ鍥炬煡璇㈣寖鍥�
+            if(type.equals("Day")){
+                recordLqw.between(EimsInspectRecord::getPlanTime, planTime, planTime);
+            }else {
+            //  鏈堣鍥炬煡璇㈣寖鍥�
+                recordLqw.between(EimsInspectRecord::getPlanTime, startOfMonth, endOfMonth);
+            }
+
+
             // 鎵ц鏌ヨ
             List<EimsInspectRecordVo> recordList = recordMapper.selectVoList(recordLqw);
             // TODO 鏍规嵁瀛楀吀eims_inspect_status
@@ -96,7 +176,7 @@
             // TODO 鏍规嵁瀛楀吀eims_inspect_result
             Map<String, Long> rMap = recordList.stream()
                 .filter(order ->order.getInspResult()!=null && List.of("1", "2").contains(order.getInspResult()))
-                .collect(Collectors.groupingBy(EimsInspectRecordVo::getStatus, Collectors.counting()));
+                .collect(Collectors.groupingBy(EimsInspectRecordVo::getInspResult, Collectors.counting()));
 
             stVo.setRecordCount(recordList.size());
             stVo.setUnCheckCount(cMap.getOrDefault("0", 0L).intValue());
@@ -157,11 +237,24 @@
         qw.like(StringUtils.isNotBlank(bo.getTitle()), "st.title", bo.getTitle());
         qw.like(StringUtils.isNotBlank(bo.getEquName()), "equ.equ_name", bo.getEquName());
         qw.like(StringUtils.isNotBlank(bo.getAssetNo()), "equ.asset_no", bo.getAssetNo());
+        if(bo.getPlanTime()!=null&&bo.getViewMode() != null && bo.getViewMode().equals("Day")){
+            qw.eq("DATE_FORMAT(st.plan_time, '%Y-%m-%d')", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,bo.getPlanTime()));
+        }else if(bo.getPlanTime()!=null&&bo.getViewMode() != null && bo.getViewMode().equals("Month")){
+            qw.eq("DATE_FORMAT(st.plan_time, '%Y-%m')",  DateUtils.parseDateToStr(DateUtils.YYYY_MM,bo.getPlanTime()));
+        }
+        qw.eq( "st.type", bo.getType());
         qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
             "st.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
+        if (params.get("searchValue") != null && StringUtils.isNotBlank(params.get("searchValue").toString())) {
+            qw.and(wq -> wq.like("st.title", params.get("searchValue"))
+                .or().like("equ.equ_name", params.get("searchValue"))
+                .or().like("equ.asset_no", params.get("searchValue"))
+            );
+        }
         qw.eq(bo.getInspUser() != null, "st.maint_user", bo.getInspUser());
         qw.eq(bo.getVerifyUser() != null, "st.verify_user", bo.getVerifyUser());
         qw.eq(bo.getStatus() != null, "st.status", bo.getStatus());
+        qw.eq(bo.getUpdateBy() != null, "st.update_by", bo.getUpdateBy());
         qw.orderByDesc( "st.create_time");
         return qw;
     }
@@ -193,14 +286,14 @@
     public Boolean updateByBo(EimsInspectStBo bo) {
         EimsInspectSt update = MapstructUtils.convert(bo, EimsInspectSt.class);
 
-        if(bo.getVerifyUser()!=null){
-            EimsInspectSt st = baseMapper.selectById(bo.getId());
-            String status = st.getStatus();
-            if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
-                if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
-                if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
-            }
-        }
+//        if(bo.getVerifyUser()!=null){
+//            EimsInspectSt st = baseMapper.selectById(bo.getId());
+//            String status = st.getStatus();
+//            if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
+//                if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
+//                if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
+//            }
+//        }
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;
     }

--
Gitblit v1.9.3