Lius
2025-07-08 e7c2dfaa3a7d42c30c421f9d7311835859acf8c0
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationStandardServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,226 @@
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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.SimpleVersionGenerateUtil;
import org.jeecg.modules.eam.base.entity.BaseFactory;
import org.jeecg.modules.eam.base.entity.BaseFactoryUser;
import org.jeecg.modules.eam.base.service.IBaseFactoryService;
import org.jeecg.modules.eam.base.service.IBaseFactoryUserService;
import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationStandardEnum;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandardDetail;
import org.jeecg.modules.eam.mapper.EamTechnicalStatusEvaluationStandardMapper;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationStandardRequest;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardDetailService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Description: æŠ€æœ¯çŠ¶æ€é‰´å®šè§„èŒƒ
 * @Author: jeecg-boot
 * @Date: 2025-07-07
 * @Version: V1.0
 */
@Service
public class EamTechnicalStatusEvaluationStandardServiceImpl extends ServiceImpl<EamTechnicalStatusEvaluationStandardMapper, EamTechnicalStatusEvaluationStandard> implements IEamTechnicalStatusEvaluationStandardService {
    @Autowired
    private IBaseFactoryUserService baseFactoryUserService;
    @Autowired
    private IBaseFactoryService baseFactoryService;
    @Autowired
    private IEamTechnicalStatusEvaluationStandardDetailService standardDetailService;
    @Override
    public IPage<EamTechnicalStatusEvaluationStandard> queryPageList(Page<EamTechnicalStatusEvaluationStandard> page, EamTechnicalStatusEvaluationStandard query) {
        QueryWrapper<EamTechnicalStatusEvaluationStandard> 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.getEamEquipmentIds())) {
            //选择了设备,根据设备id过滤设备
            List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(","));
            queryWrapper.in("e.equipment_code", equipArr);
        } else {
            //没有选择设备,根据中心过滤设备
            List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService.
                    list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId()));
            if (!CollectionUtils.isEmpty(baseFactoryUserList)) {
                List<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toList());
                List<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getFactoryCode).collect(Collectors.toList());
                queryWrapper.in("e.factory_code", factoryCode);
            } else {
                return page;
            }
        }
        if (query != null) {
            //编码 æ¨¡ç³ŠæŸ¥è¯¢
            if (StringUtils.isNotBlank(query.getStandardCode())) {
                queryWrapper.like("ems.standard_code", query.getStandardCode());
            }
            //名称 æ¨¡ç³ŠæŸ¥è¯¢
            if (StringUtils.isNotBlank(query.getStandardName())) {
                queryWrapper.like("ems.standard_name", query.getStandardName());
            }
            //设备
            if (StringUtils.isNotBlank(query.getEquipmentId())) {
                queryWrapper.eq("ems.equipment_id", query.getEquipmentId());
            }
            //保养分类
            if (StringUtils.isNotBlank(query.getStandardStatus())) {
                queryWrapper.eq("ems.standard_status", query.getStandardStatus());
            }
        }
        queryWrapper.orderByDesc("ems.create_time");
        return this.getBaseMapper().queryPageList(page, queryWrapper);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean addEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) {
        EamTechnicalStatusEvaluationStandard entity = new EamTechnicalStatusEvaluationStandard();
        BeanUtils.copyProperties(request, entity);
        entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name());
        //版本递增
        entity.setStandardVersion(SimpleVersionGenerateUtil.getInitVersion());
        //设备处理
        entity.setEquipmentId(request.getEquipmentId());
        //删除标记
        entity.setDelFlag(CommonConstant.DEL_FLAG_0);
        //重复性校验
        EamTechnicalStatusEvaluationStandard exist = checkDuplicate(entity.getEquipmentId(), null);
        if(exist != null){
            throw new JeecgBootException("规范已存在,不能重复添加!");
        }
        this.getBaseMapper().insert(entity);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setStandardId(entity.getId());
            });
            standardDetailService.saveBatch(request.getTableDetailList());
        }
        return true;
    }
    @Override
    public EamTechnicalStatusEvaluationStandard checkDuplicate(String equipmentId, String id) {
        LambdaQueryWrapper<EamTechnicalStatusEvaluationStandard> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getEquipmentId, equipmentId);
        queryWrapper.eq(EamTechnicalStatusEvaluationStandard::getDelFlag, CommonConstant.DEL_FLAG_0);
        //待提交、启用状态
        queryWrapper.in(EamTechnicalStatusEvaluationStandard::getStandardStatus, Arrays.asList(TechnicalStatusEvaluationStandardEnum.ENABLE.name(), TechnicalStatusEvaluationStandardEnum.WAIT_SUBMIT.name()));
        queryWrapper.orderByDesc(EamTechnicalStatusEvaluationStandard::getStandardVersion);
        if(StringUtils.isNotBlank(id)){
            queryWrapper.ne(EamTechnicalStatusEvaluationStandard::getId, id);
        }
        List<EamTechnicalStatusEvaluationStandard> list = this.getBaseMapper().selectList(queryWrapper);
        if(CollectionUtil.isEmpty(list)) {
            return null;
        }
        return list.get(0);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean editEamTechnicalStatusEvaluationStandard(EamTechnicalStatusEvaluationStandardRequest request) {
        EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId());
        if(entity == null){
            throw new JeecgBootException("编辑的数据已删除,请刷新重试!");
        }
        entity.setStandardName(request.getStandardName());
        entity.setEvaluationPeriod(request.getEvaluationPeriod());
        this.getBaseMapper().updateById(entity);
        //处理详情
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            List<EamTechnicalStatusEvaluationStandardDetail> addList = new ArrayList<>();
            List<EamTechnicalStatusEvaluationStandardDetail> updateList = new ArrayList<>();
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setStandardId(entity.getId());
                if(tableDetail.getId() == null){
                    addList.add(tableDetail);
                }else {
                    updateList.add(tableDetail);
                }
            });
            if(CollectionUtil.isNotEmpty(addList)){
                standardDetailService.saveBatch(addList);
            }
            if(CollectionUtil.isNotEmpty(updateList)){
                standardDetailService.updateBatchById(updateList);
            }
        }
        if(CollectionUtil.isNotEmpty(request.getRemoveDetailList())) {
            List<String> ids = request.getRemoveDetailList().stream().map(EamTechnicalStatusEvaluationStandardDetail::getId).collect(Collectors.toList());
            standardDetailService.removeBatchByIds(ids);
        }
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean upgrade(EamTechnicalStatusEvaluationStandardRequest request) {
        EamTechnicalStatusEvaluationStandard entity = this.getBaseMapper().selectById(request.getId());
        if(entity == null){
            throw new JeecgBootException("升版的数据已删除,请刷新重试!");
        }
        //新增一个版本
        EamTechnicalStatusEvaluationStandard newEntity = new EamTechnicalStatusEvaluationStandard();
        newEntity.setStandardCode(request.getStandardCode());
        newEntity.setStandardName(request.getStandardName());
        newEntity.setEvaluationPeriod(request.getEvaluationPeriod());
        newEntity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.ENABLE.name());
        //版本递增
        newEntity.setStandardVersion(SimpleVersionGenerateUtil.addVersion(entity.getStandardVersion()));
        //设备处理
        newEntity.setEquipmentId(request.getEquipmentId());
        //删除标记
        newEntity.setDelFlag(CommonConstant.DEL_FLAG_0);
        //重复性校验
        EamTechnicalStatusEvaluationStandard exist = checkDuplicate(newEntity.getEquipmentId(), entity.getId());
        if(exist != null){
            throw new JeecgBootException("鉴定规范已存在,不能重复添加!");
        }
        this.getBaseMapper().insert(newEntity);
        //处理明细数据
        if(CollectionUtil.isNotEmpty(request.getTableDetailList())) {
            request.getTableDetailList().forEach(tableDetail -> {
                tableDetail.setId(null);
                tableDetail.setCreateBy(null);
                tableDetail.setUpdateBy(null);
                tableDetail.setCreateTime(null);
                tableDetail.setUpdateTime(null);
                tableDetail.setStandardId(newEntity.getId());
            });
            standardDetailService.saveBatch(request.getTableDetailList());
        }
        //禁用原来的版本
        entity.setStandardStatus(TechnicalStatusEvaluationStandardEnum.DISABLE.name());
        this.getBaseMapper().updateById(entity);
        return true;
    }
}