From 2f0009c750de4d47a18cce4a5a403fa83ba0c209 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期三, 02 七月 2025 08:58:27 +0800
Subject: [PATCH] feat(report): 新增设备稼动率统计功能

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java |   67 ++++++++++++++++++++++++++++++---
 1 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java
index dd6e024..2c1ec00 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java
@@ -7,6 +7,7 @@
 import org.dromara.common.core.constant.DictConstants;
 import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.service.RepairResService;
+import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -18,18 +19,16 @@
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.eims.domain.*;
-import org.dromara.eims.domain.vo.EimsEquVo;
-import org.dromara.eims.domain.vo.EimsFixtureVo;
-import org.dromara.eims.domain.vo.EimsRepairReqVo;
+import org.dromara.eims.domain.bo.EimsSpareInoutBo;
+import org.dromara.eims.domain.vo.*;
 import org.dromara.eims.mapper.*;
+import org.dromara.eims.service.IEimsSpareInoutService;
 import org.dromara.eims.utils.DataFilterUtil;
 import org.dromara.system.domain.SysDept;
 import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.mapper.SysDeptMapper;
-import org.redisson.misc.LogHelper;
 import org.springframework.stereotype.Service;
 import org.dromara.eims.domain.bo.EimsRepairResBo;
-import org.dromara.eims.domain.vo.EimsRepairResVo;
 import org.dromara.eims.service.IEimsRepairResService;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -51,6 +50,7 @@
     private final EimsRepairRecordMapper recordMapper;
     private final EimsEquMapper equMapper;
     private final EimsFixtureMapper fixtureMapper;
+    private final IEimsSpareInoutService spareInoutService;
 
     /**
      * 鏌ヨ缁翠慨宸ュ崟
@@ -66,6 +66,7 @@
             EimsRepairReqVo reqVo = reqMapper.selectVoById(reqId);
             resVo.setReqType(reqVo.getReqType());
             resVo.setReqCode(reqVo.getCode());
+            resVo.setReqDesc(reqVo.getReqDesc());
 
             if(reqVo.getEquId()!=null){
                 EimsEquVo equVo = equMapper.selectVoById(reqVo.getEquId());
@@ -83,9 +84,25 @@
                 }
             }
 
+            resVo.setSpareParts(querySpareParts(resVo.getResCode()));
 
         }
         return resVo;
+    }
+
+
+    public List<EimsSpareVo> querySpareParts(String code) {
+        // 鏌ヨ鍏宠仈鐨勫浠讹紝鍏崇郴濡備笅锛氬浠跺嚭鍏ュ簱鍗曠殑associatedOrder 鍏宠仈浼犲叆鐨刢ode,澶囦欢鍑哄叆搴撴槑缁嗛�氳繃鍑哄叆搴撳崟鐨刬d鍏宠仈锛屽浠跺悕绉伴�氳繃鍑哄叆搴撴槑缁嗕腑鐨剆pareId鍏宠仈
+
+        EimsSpareInoutBo bo = new EimsSpareInoutBo();
+        bo.setAssociatedOrder(code);
+        List<EimsSpareInoutVo> list = spareInoutService.queryList(bo);
+        if (!list.isEmpty()) {
+            // 鏌ヨ澶囦欢鏄庣粏鍜屽悕绉�
+            EimsSpareInoutVo eimsSpareInoutVo = spareInoutService.queryById(list.get(0).getId());
+            return eimsSpareInoutVo.getSpareList();
+        }
+        return List.of();
     }
 
     /**
@@ -261,6 +278,23 @@
             recordMapper.insert(record);
         }
         validEntityBeforeSave(update);
+        // 鍒ゆ柇澶囦欢鍒楄〃鏄惁涓虹┖锛屼笉涓虹┖鍒欐柊澧炰竴涓浠跺嚭搴撳崟锛屽悓鏃跺鍔犲嚭搴撴槑缁�
+        if (bo.getSpareParts() != null && bo.getSpareParts().size() > 0) {
+            EimsSpareInoutBo spareInoutBo = new EimsSpareInoutBo();
+            // 鏍规嵁鏃ユ湡鐢熸垚鍗曞彿锛屾牸寮忎负CK+鏃ユ湡+娴佹按鍙�
+            spareInoutBo.setOrderCode("CK"+ DateUtils.dateTimeNow("yyyyMMddHHmmss"));
+            spareInoutBo.setOrderTime(new Date());
+            spareInoutBo.setType(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK);
+            spareInoutBo.setPartnerName(loginUser.getNickname());
+            spareInoutBo.setSpareList(bo.getSpareParts());
+            spareInoutBo.setChargeUser(loginUser.getUserId());
+            spareInoutBo.setChargeDept(loginUser.getDeptId());
+            spareInoutBo.setAssociatedOrder(bo.getResCode());
+            // 淇濆瓨杩涙暟鎹簱
+            Boolean b = spareInoutService.insertByBo(spareInoutBo);
+
+
+        }
         return baseMapper.updateById(update) > 0;
     }
 
@@ -293,6 +327,16 @@
         return TableDataInfo.build(page);
     }
 
+    @Override
+    public Integer listUnfinished(String status) {
+        // 鏍规嵁宸ュ崟鐘舵�佹煡璇㈡�绘暟
+        if (!status.isEmpty()) {
+            List<String> statusList = Arrays.asList(status.split(","));
+            return baseMapper.listUnfinished(statusList);
+        }
+        return 0;
+    }
+
     private QueryWrapper<EimsRepairRes> buildWrapper(EimsRepairResBo bo) {
         Map<String, Object> params = bo.getParams();
         QueryWrapper<EimsRepairRes> qw = Wrappers.query();
@@ -302,15 +346,26 @@
         qw.eq(bo.getReqType() != null, "req.req_type", bo.getReqType());
         qw.eq(bo.getReqUser() != null, "res.req_user", bo.getReqUser());
         qw.eq(bo.getAssetNo() != null, "equ.asset_no", bo.getAssetNo());
+        qw.eq(bo.getEquId() != null, "req.equ_id", bo.getEquId());
+
+        qw.between(params.get("beginReqTime") != null && params.get("endReqTime") != null,
+            "req.req_time", params.get("beginReqTime"), params.get("endReqTime"));
 
         List<Long> resDeptIds = getAllDescendantIds(bo.getResDept());
         qw.in(bo.getResDept() != null, "res.res_dept", resDeptIds);
 
         List<Long> reqDeptIds = getAllDescendantIds(bo.getReqDept());
         qw.in(bo.getReqDept() != null, "res.req_dept", reqDeptIds);
-
+        if (params.get("searchValue") != null && StringUtils.isNotBlank(params.get("searchValue").toString())) {
+            qw.and( wq ->wq.like("equ.equ_name", params.get("searchValue"))
+                .or().like("equ.asset_no", params.get("searchValue"))
+            );
+        }
 
         qw.eq(StringUtils.isNotBlank(bo.getStatus()), "res.status", bo.getStatus());
+        String s = params.get("status") == null ? "" : params.get("status").toString();
+        String[] status = s.split(",");
+        qw.in(params.get("status") != null, "res.status", status);
         qw.orderByDesc("res.create_time");
         return qw;
     }

--
Gitblit v1.9.3