From 4788f8d86807296a3dce75b5dd428c0a8d5828db Mon Sep 17 00:00:00 2001
From: hyingbo <1363390067@qq.com>
Date: 星期五, 25 七月 2025 17:12:39 +0800
Subject: [PATCH] 分类字典设置上级是否存在子节点修改

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java |  221 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 216 insertions(+), 5 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
index 5677a85..6d30e4b 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamMaintenanceStandardServiceImpl.java
@@ -1,24 +1,36 @@
 package org.jeecg.modules.eam.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.json.JsonMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.FileUploadResult;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.eam.constant.MaintenanceStandardStatusEnum;
 import org.jeecg.modules.eam.entity.EamMaintenanceStandard;
+import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail;
 import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper;
 import org.jeecg.modules.eam.request.EamMaintenanceStandardRequest;
 import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService;
 import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 淇濆吇鏍囧噯
@@ -36,6 +48,55 @@
     private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService;
 
     @Override
+    public IPage<EamMaintenanceStandard> queryPageList(Page<EamMaintenanceStandard> page, EamMaintenanceStandard eamMaintenanceStandard) {
+        QueryWrapper<EamMaintenanceStandard> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("ems.del_flag", CommonConstant.DEL_FLAG_0);
+        //鐢ㄦ埛鏁版嵁鏉冮檺
+        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        if (sysUser == null) {
+            return page;
+        }
+        if (StringUtils.isNotBlank(sysUser.getEquipmentIds())) {
+            //閫夋嫨浜嗚澶囷紝鏍规嵁璁惧id杩囨护璁惧
+            List<String> equipArr = Arrays.asList(sysUser.getEquipmentIds().split(","));
+            queryWrapper.in("e.equipment_code", equipArr);
+        } else {
+            //娌℃湁閫夋嫨璁惧锛屾牴鎹溅闂磋繃婊よ澶�
+            queryWrapper.exists("select 1 from mdc_user_production t where t.user_id={0} and t.pro_id=e.org_id ", sysUser.getId());
+        }
+        if(eamMaintenanceStandard != null) {
+            //缂栫爜 妯$硦鏌ヨ
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardCode())) {
+                queryWrapper.like("ems.standard_code", eamMaintenanceStandard.getStandardCode());
+            }
+            //鍚嶇О 妯$硦鏌ヨ
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardName())) {
+                queryWrapper.like("ems.standard_name", eamMaintenanceStandard.getStandardCode());
+            }
+            //璁惧
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getEquipmentId())) {
+                queryWrapper.eq("ems.equipment_id", eamMaintenanceStandard.getEquipmentId());
+            }
+            //淇濆吇鍒嗙被
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getMaintenanceCategory())) {
+                queryWrapper.eq("ems.maintenance_category", eamMaintenanceStandard.getMaintenanceCategory());
+            }
+            //淇濆吇鍒嗙被
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getStandardStatus())) {
+                queryWrapper.eq("ems.standard_status", eamMaintenanceStandard.getStandardStatus());
+            }
+            //璁惧缂栫爜
+            if(StringUtils.isNotBlank(eamMaintenanceStandard.getKeyword())) {
+                queryWrapper.and(wrapper -> wrapper.like("e.equipment_name", eamMaintenanceStandard.getKeyword())
+                        .or()
+                        .like("e.equipment_code", eamMaintenanceStandard.getKeyword()));
+            }
+        }
+        queryWrapper.orderByDesc("ems.create_time");
+        return eamMaintenanceStandardMapper.queryPageList(page, queryWrapper);
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean addMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) {
         EamMaintenanceStandard entity = new EamMaintenanceStandard();
@@ -50,8 +111,13 @@
         entity.setStandardVersion(CommonConstant.OPERATE_TYPE_1);
         //璁惧澶勭悊
         entity.setEquipmentId(standardRequest.getEquipmentId());
+        //鍒犻櫎鏍囪
+        entity.setDelFlag(CommonConstant.DEL_FLAG_0);
         //閲嶅鎬ф牎楠�
-        //TODO
+        EamMaintenanceStandard exist = checkDuplicate(entity.getEquipmentId(), entity.getMaintenanceCategory());
+        if(exist != null){
+            throw new JeecgBootException("璁惧鏍囧噯宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�");
+        }
         //澶勭悊闄勪欢
         if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
             FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
@@ -77,6 +143,151 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean editMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) {
-        return false;
+        EamMaintenanceStandard entity = eamMaintenanceStandardMapper.selectById(standardRequest.getId());
+        if(entity == null){
+            throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
+        }
+        entity.setStandardName(standardRequest.getStandardName());
+        entity.setMaintenancePeriod(standardRequest.getMaintenancePeriod());
+        entity.setFileCode(standardRequest.getFileCode());
+        //澶勭悊闄勪欢
+        if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
+            FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
+            ObjectMapper mapper = new ObjectMapper();
+            try {
+                String referenceFile = mapper.writeValueAsString(fileUploadResult);
+                entity.setReferenceFile(referenceFile);
+            } catch (JsonProcessingException e) {
+                log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
+            }
+        }else {
+            entity.setReferenceFile(null);
+        }
+        eamMaintenanceStandardMapper.updateById(entity);
+        //澶勭悊璇︽儏
+        if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) {
+            List<EamMaintenanceStandardDetail> addList = new ArrayList<>();
+            List<EamMaintenanceStandardDetail> updateList = new ArrayList<>();
+            standardRequest.getTableDetailList().forEach(tableDetail -> {
+                tableDetail.setStandardId(entity.getId());
+                if(tableDetail.getId() == null){
+                    addList.add(tableDetail);
+                }else {
+                    updateList.add(tableDetail);
+                }
+            });
+            if(CollectionUtil.isNotEmpty(addList)){
+                eamMaintenanceStandardDetailService.saveBatch(addList);
+            }
+            if(CollectionUtil.isNotEmpty(updateList)){
+                eamMaintenanceStandardDetailService.updateBatchById(updateList);
+            }
+        }
+        if(CollectionUtil.isNotEmpty(standardRequest.getRemoveDetailList())) {
+            List<String> ids = standardRequest.getRemoveDetailList().stream().map(EamMaintenanceStandardDetail::getId).collect(Collectors.toList());
+            eamMaintenanceStandardDetailService.removeBatchByIds(ids);
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean upgradeMaintenanceStandard(EamMaintenanceStandardRequest standardRequest) {
+        EamMaintenanceStandard entity = eamMaintenanceStandardMapper.selectById(standardRequest.getId());
+        if(entity == null){
+            throw new JeecgBootException("缂栬緫鐨勬暟鎹凡鍒犻櫎锛岃鍒锋柊閲嶈瘯锛�");
+        }
+        entity.setStandardStatus(MaintenanceStandardStatusEnum.ABOLISH.name());
+        //鍘熸潵鐨勪綔搴�
+        eamMaintenanceStandardMapper.updateById(entity);
+
+        //鏂板涓�涓増鏈�
+        EamMaintenanceStandard newEntity = new EamMaintenanceStandard();
+        newEntity.setStandardCode(standardRequest.getStandardCode());
+        newEntity.setStandardName(standardRequest.getStandardName());
+        newEntity.setMaintenanceCategory(standardRequest.getMaintenanceCategory());
+        newEntity.setMaintenancePeriod(standardRequest.getMaintenancePeriod());
+        newEntity.setInitialDate(standardRequest.getInitialDate());
+        newEntity.setFileCode(standardRequest.getFileCode());
+        newEntity.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name());
+        //鐗堟湰閫掑
+        newEntity.setStandardVersion(entity.getStandardVersion() + 1);
+        //璁惧澶勭悊
+        newEntity.setEquipmentId(standardRequest.getEquipmentId());
+        //鍒犻櫎鏍囪
+        newEntity.setDelFlag(CommonConstant.DEL_FLAG_0);
+        //閲嶅鎬ф牎楠�
+        EamMaintenanceStandard exist = checkDuplicate(newEntity.getEquipmentId(), newEntity.getMaintenanceCategory());
+        if(exist != null){
+            throw new JeecgBootException("璁惧鏍囧噯宸插瓨鍦紝涓嶈兘閲嶅娣诲姞锛�");
+        }
+        //澶勭悊闄勪欢
+        if(CollectionUtil.isNotEmpty(standardRequest.getFileList())) {
+            FileUploadResult fileUploadResult = standardRequest.getFileList().get(0);
+            ObjectMapper mapper = new ObjectMapper();
+            try {
+                String referenceFile = mapper.writeValueAsString(fileUploadResult);
+                newEntity.setReferenceFile(referenceFile);
+            } catch (JsonProcessingException e) {
+                log.error("JSON杞崲澶辫触锛�" + e.getMessage(), e);
+            }
+        }
+        eamMaintenanceStandardMapper.insert(newEntity);
+        //澶勭悊鏄庣粏鏁版嵁
+        if(CollectionUtil.isNotEmpty(standardRequest.getTableDetailList())) {
+            standardRequest.getTableDetailList().forEach(tableDetail -> {
+                tableDetail.setId(null);
+                tableDetail.setCreateBy(null);
+                tableDetail.setUpdateBy(null);
+                tableDetail.setCreateTime(null);
+                tableDetail.setUpdateTime(null);
+                tableDetail.setStandardId(newEntity.getId());
+            });
+            eamMaintenanceStandardDetailService.saveBatch(standardRequest.getTableDetailList());
+        }
+        return true;
+    }
+
+    @Override
+    public EamMaintenanceStandard checkDuplicate(String equipmentId, String maintenanceCategory) {
+        LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EamMaintenanceStandard::getEquipmentId, equipmentId);
+        queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
+        queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
+        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.NORMAL.name());
+        queryWrapper.orderByDesc(EamMaintenanceStandard::getStandardVersion);
+
+        List<EamMaintenanceStandard> list = eamMaintenanceStandardMapper.selectList(queryWrapper);
+        if(CollectionUtil.isEmpty(list)) {
+            return null;
+        }
+        return list.get(0);
+    }
+
+    /**
+     * 鏌ヨ鏍囧噯鍒楄〃-鍓嶇灞曠ず璇ョ敤鎴锋嫢鏈夌殑鏍囧噯
+     * @param keyword 璁惧缂栧彿
+     * @param maintenanceCategory 淇濆吇绫诲瀷
+     * @return
+     */
+    @Override
+    public List<EamMaintenanceStandard> queryListByKeywordAndCategory(String keyword, String equipmentId, Integer pageSize, String maintenanceCategory){
+        Page<EamMaintenanceStandard> page = new Page<EamMaintenanceStandard>(1, pageSize);
+        EamMaintenanceStandard query = new EamMaintenanceStandard();
+        query.setEquipmentId(equipmentId);
+        query.setKeyword(keyword);
+        query.setMaintenanceCategory(maintenanceCategory);
+        query.setStandardStatus(MaintenanceStandardStatusEnum.NORMAL.name());
+        IPage<EamMaintenanceStandard> pageData = this.queryPageList(page, query);
+        return pageData.getRecords();
+    }
+
+    @Override
+    public List<EamMaintenanceStandard> queryListByCategory(String maintenanceCategory) {
+        LambdaQueryWrapper<EamMaintenanceStandard> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(EamMaintenanceStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
+        queryWrapper.eq(EamMaintenanceStandard::getMaintenanceCategory, maintenanceCategory);
+        queryWrapper.eq(EamMaintenanceStandard::getStandardStatus, MaintenanceStandardStatusEnum.NORMAL.name());
+        return eamMaintenanceStandardMapper.selectList(queryWrapper);
     }
 }

--
Gitblit v1.9.3