From 66e943c91e133eec5a0822ea22fd92cbc04bc9f3 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期三, 12 三月 2025 16:04:14 +0800
Subject: [PATCH] 保养工单汇总

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java |  107 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 102 insertions(+), 5 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
index 472878a..529c96b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintOrderServiceImpl.java
@@ -5,7 +5,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.SneakyThrows;
 import org.dromara.common.core.constant.DictConstants;
+import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.service.MaintOrderService;
+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;
@@ -16,6 +18,11 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.eims.domain.EimsMaintPlan;
+import org.dromara.eims.domain.bo.EimsMaintPlanBo;
+import org.dromara.eims.domain.vo.MaintOrdeGroupVo;
+import org.dromara.eims.mapper.EimsMaintPlanMapper;
 import org.dromara.system.domain.SysDept;
 import org.dromara.system.domain.vo.SysDeptVo;
 import org.dromara.system.mapper.SysDeptMapper;
@@ -27,10 +34,7 @@
 import org.dromara.eims.service.IEimsMaintOrderService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.util.*;
 
 /**
  * 淇濆吇宸ュ崟Service涓氬姟灞傚鐞�
@@ -43,6 +47,7 @@
 public class EimsMaintOrderServiceImpl implements IEimsMaintOrderService, MaintOrderService {
 
     private final EimsMaintOrderMapper baseMapper;
+    private final EimsMaintPlanMapper planMapper;
     private final SysDeptMapper sysDeptMapper;
 
     /**
@@ -76,6 +81,12 @@
         return TableDataInfo.build(page);
     }
 
+    @Override
+    public TableDataInfo<MaintOrdeGroupVo> queryPageGroupList(EimsMaintOrderBo bo, PageQuery pageQuery) {
+        Page<MaintOrdeGroupVo> page = baseMapper.selectMaintOrderGroupList(pageQuery.build(), buildGroupWrapper(bo));
+        return TableDataInfo.build(page);
+    }
+
     /**
      * 鏌ヨ绗﹀悎鏉′欢鐨勪繚鍏诲伐鍗曞垪琛�
      *
@@ -92,13 +103,33 @@
         QueryWrapper<EimsMaintOrder> qw =  Wrappers.query();
         qw.like(StringUtils.isNotBlank(bo.getMaintCode()),"mo.maint_code", bo.getMaintCode());
         qw.like(bo.getEquName() != null, "equ.equ_name", bo.getEquName());
+        qw.like(bo.getEquId() != null, "equ.equ_id", bo.getEquId());
         qw.eq(StringUtils.isNotBlank(bo.getMaintType()), "mo.maint_type", bo.getMaintType());
         qw.eq(StringUtils.isNotBlank(bo.getMaintCycleUnit()), "mo.maint_cycle_unit", bo.getMaintCycleUnit());
         qw.eq(StringUtils.isNotBlank(bo.getMaintRule()), "mo.maint_rule", bo.getMaintRule());
         qw.eq(bo.getMaintUser() != null, "mo.maint_user", bo.getMaintUser());
         qw.in(bo.getMaintDept() != null, "mo.maint_dept", getAllDescendantIds(bo.getMaintDept()));
         qw.eq(bo.getStatus() != null, "mo.status", bo.getStatus());
+        qw.eq(bo.getPlanTime()!=null,
+            "mo.plan_time", bo.getPlanTime());
         qw.orderByDesc("mo.create_time");
+        return qw;
+    }
+    private QueryWrapper<EimsMaintOrder> buildGroupWrapper(EimsMaintOrderBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsMaintOrder> qw =  Wrappers.query();
+        qw.like(StringUtils.isNotBlank(bo.getMaintCode()),"mo.maint_code", bo.getMaintCode());
+        qw.like(bo.getEquName() != null, "equ.equ_name", bo.getEquName());
+        qw.eq(StringUtils.isNotBlank(bo.getMaintType()), "mo.maint_type", bo.getMaintType());
+        qw.eq(StringUtils.isNotBlank(bo.getMaintCycleUnit()), "mo.maint_cycle_unit", bo.getMaintCycleUnit());
+        qw.eq(StringUtils.isNotBlank(bo.getMaintRule()), "mo.maint_rule", bo.getMaintRule());
+        qw.eq(bo.getMaintUser() != null, "mo.maint_user", bo.getMaintUser());
+        qw.in(bo.getMaintDept() != null, "mo.maint_dept", getAllDescendantIds(bo.getMaintDept()));
+        qw.eq(bo.getStatus() != null, "mo.status", bo.getStatus());
+        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
+            "mo.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
+        qw.groupBy(Arrays.asList("mo.equ_id","mo.plan_time"));
+        qw.orderByDesc("mo.plan_time");
         return qw;
     }
 
@@ -152,9 +183,20 @@
      * @param bo 淇濆吇宸ュ崟
      * @return 鏄惁鏂板鎴愬姛
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public Boolean insertByBo(EimsMaintOrderBo bo) {
         EimsMaintOrder add = MapstructUtils.convert(bo, EimsMaintOrder.class);
+        //閫氳繃淇濆吇璁″垝鐢熸垚鐨勬暟鎹渶瑕佹洿鏂颁繚鍏昏鍒�
+        Long planId = bo.getPlanId();
+        if(planId!=null){
+            EimsMaintPlan eimsMaintPlan = planMapper.selectById(planId);
+            setMaintNextTime(eimsMaintPlan);
+            planMapper.updateById(eimsMaintPlan);
+        }
+
+
+
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
@@ -162,6 +204,50 @@
 
         }
         return flag;
+    }
+
+    /**
+     * 璁$畻淇濆吇璁″垝涓嬫鎵ц鏃堕棿
+     */
+    @SneakyThrows
+    private void setMaintNextTime(EimsMaintPlan bo) {
+        Date oldNext = bo.getMaintNextTime();
+        //TODO 涓嬫淇濆吇鏃堕棿璁$畻瑙勫垯 0-鎸夊浐瀹氬懆鏈�  1-鎸変笂娆′繚鍏绘椂闂�
+        Date newNext = null;
+
+        //涓嬫娆℃墽琛屾椂闂翠负绌烘姏鍑哄紓甯�
+        if (oldNext == null) {
+            throw new Exception("涓嬫淇濆吇鏃堕棿涓嶈兘涓虹┖!");
+        }
+        //鍛ㄦ湡
+        Long maintCycle = bo.getMaintCycle();
+        //鍗曚綅 1-澶� 2-鍛� 3-鏈� 4-瀛� 5-骞�
+        String maintCycleUnit = bo.getMaintCycleUnit();
+        switch (maintCycleUnit) {
+            case "1":
+                newNext = DateUtils.addDays(oldNext, maintCycle.intValue());
+                break;
+            case "2":
+                newNext = DateUtils.addWeeks(oldNext, maintCycle.intValue());
+                break;
+            case "3":
+                newNext = DateUtils.addMonths(oldNext, maintCycle.intValue());
+                break;
+            case "4":
+                newNext = DateUtils.addMonths(oldNext, maintCycle.intValue() * 3);
+                break;
+            case "5":
+                newNext = DateUtils.addYears(oldNext, maintCycle.intValue());
+                break;
+
+        }
+        bo.setMaintNextTime(newNext);
+        if(bo.getMaintFirstTime()==null){
+            bo.setMaintFirstTime(oldNext);
+        }
+        bo.setMaintLastTime(oldNext);
+
+
     }
 
     /**
@@ -175,8 +261,19 @@
     @Override
     public Boolean updateByBo(EimsMaintOrderBo bo) {
         EimsMaintOrder update = MapstructUtils.convert(bo, EimsMaintOrder.class);
+        if(bo.getStatus().equals(DictConstants.MAINT_ORDER_STATUS_DETAIL.BAOYANG) && bo.getStartTime() == null){
+            update.setStartTime(new Date());
+        }
 
-        EimsMaintOrder old = baseMapper.selectById(bo.getId());
+        if(bo.getStatus().equals(DictConstants.MAINT_ORDER_STATUS_DETAIL.DAIYANZHENG) && bo.getEndTime() == null){
+            update.setEndTime(new Date());
+        }
+
+        if(bo.getStatus().equals(DictConstants.MAINT_ORDER_STATUS_DETAIL.WANCHENG) && bo.getVerifyUser() == null){
+            LoginUser loginUser = LoginHelper.getLoginUser();
+            update.setVerifyUser(loginUser.getUserId());
+        }
+
 
         validEntityBeforeSave(update);
         return baseMapper.updateById(update) > 0;

--
Gitblit v1.9.3